Ë
    Úqjÿ0 ã                  óö  — U d Z ddlmZ ddlZddlmZ ddlZddlm	Z	 ddl
Z
ddlZddlZddlZddlmZ ddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddl&m'Z' ddl&m(Z( ddl&m)Z) ddl&m*Z* dd l&m+Z+ dd!l&m,Z, dd"l&m-Z- dd#l&m.Z. dd$l&m/Z/ dd%l&m0Z0 dd&l&m1Z2 dd'l3m4Z4 dd(l3m5Z5 dd)l'm6Z6 dd*l'm7Z7 dd+l'm8Z8 dd,l'm9Z9 dd-l'm:Z: dd.l'm;Z; dd/l*m<Z< dd0l*m=Z= dd1l.m>Z> dd2l0m?Z? dd3l@mAZA dd4lBmCZC dd5lBmDZD d6d7l&mEZE d6d&l&m1Z1 d6d8l1mFZF d6d9lGmHZH d6d:lGmIZI d6d;lGmJZJ ejH                  rÌdd<lKmLZL dd=l'mMZM dd>l'mNZN dd?lOmPZP dd@lQmRZR ddAlSmTZT ddBlSmUZU ddClSmVZV ddDl*mWZW ddEl*mXZX ddFl*mYZY ddGl*mZZZ ddHl*m[Z[ ddIl+m\Z\ ddJl.m]Z] ddKl/m^Z^ ddLl/m_Z_ ddMl/m`Z` ddNl/maZa ddOl/mbZb ddPl/mcZc ddQl/mdZd ddRl/meZe ddSl@mfZf d6dTlgmhZh d6dUlimjZj d6dVlimkZk d6dWlimlZl d6dXlimmZm d6dYlimnZn d6dZlimoZo d6d[limpZp d6d\limqZq d6d]limrZr ed^esf   Zth d_£Zu ejì                  d`ejî                  «      Zx ejì                  daejî                  «      Zy ezddb«      D � ch c]
  }  es| «      ’Œ c} j÷                  dcg«      Z| ejì                  ddejî                  «      Z} ejì                  ddejî                  «      Z~ ejì                  deejî                  «      Z ejì                  dfe�j                   «      Z� ejì                  dge�j                   «      Z‚dhZƒeƒdidjdkdldmdnœZ„i e,�j
                  do“e,�j                  dp“e,�j                  dq“e,�j                  dr“e,�j                  ds“e,�j                  dt“e,�j                  du“e,�j                  dv“e,�j                  dw“e,�j                  dx“e,�j                  dy“e,�j                   dz“e,�j"                  d{“e,�j$                  d|“e,�j&                  d}“e,�j(                  d~“e,�j*                  d“i e,�j,                  d€“e,�j.                  d�“e,�j0                  d‚“e,�j2                  dƒ“e,�j4                  d„“e,�j6                  d…“e,�j8                  d†“e,�j:                  d‡“e,�j<                  dˆ“e,�j>                  d‰“e,�j@                  dŠ“e,�jB                  d‹“e,�jD                  dŒ“e,�jF                  d�“e,�jH                  dŽ“e,�jJ                  d�“e,�jL                  d�“¥e,�jN                  d‘e,�jP                  d’e,�jR                  d“e,�jT                  d”e,�jV                  d•e,�jX                  d–e,�jZ                  d—i¥Z®e+�j^                  d˜e+�j`                  d™e+�jb                  dše+�jd                  d›e+�jf                  dœe+�jh                  d�e+�jj                  dže+�jl                  dŸe+�jn                  d e+�jp                  d¡e+�jr                  d¢e+�jt                  d£e+�jv                  d¤e+�jx                  d¥iZ½d¦e¾d§<   d¨d©dªd«d¬d­d®d¯d°d±d²d³d´dµd¶d·œZ¿e/�j€                  �j‚                  d¸e/�j€                  �j„                  d¹e/�j€                  �j†                  dºe/�j€                  �jˆ                  d»e/�j€                  �jŠ                  d¼e/�j€                  �jŒ                  d½iZÇ G d¾„ d¿e«      ZÈ G dÀ„ dÁeI«      ZÉdZÊdÂe¾dÃ<   dZËdÄe¾dÅ<   d6ZÌdÆe¾dÇ<   dÈZÍdÉe¾dÊ<    G dË„ dÌeJ«      ZÎ G dÍ„ dÎeÎdÏ¬Ð«      ZÏ G dÑ„ dÒe«      ZÐ G dÓ„ dÔe«      ZÑ G dÕ„ dÖe«      ZÒ G d×„ dØeF«      ZÓ G dÙ„ dÚe	«      ZÔ G dÛ„ dÜe	«      ZÕ eÖeÕ«      \  Z×ZØZÙZÚ G dÝ„ dÞ e�j¶                  dÞdßdàg«      «      ZÜ G dá„ dâ«      ZÝ G dã„ däe1�j¼                  «      Zß G då„ dæe-�jÀ                  e   e*�jÂ                  «      Zâ G dç„ dèe-�jÀ                  e   e*�jÂ                  «      Zã G dé„ dêeÝ«      Zä G dë„ dìeä«      Zå G dí„ dîeÝ«      Zæ G dï„ dðeß«      Zç G dñ„ dòeç«      Zè G dó„ dôeI«      Zé G dõ„ döeI«      Zê G d÷„ dø«      Zëyc c} w )ùa]  Base SQL and DDL compiler implementations.

Classes provided include:

:class:`.compiler.SQLCompiler` - renders SQL
strings

:class:`.compiler.DDLCompiler` - renders DDL
(data definition language) strings

:class:`.compiler.GenericTypeCompiler` - renders
type specification strings.

To generate user-defined SQL strings, see
:doc:`/ext/compiler`.

é    )ÚannotationsN)ÚIntEnum)Úperf_counter)ÚAny)ÚCallable)Úcast)ÚClassVar)ÚDict)Ú	FrozenSet)ÚIterable)ÚIterator)ÚList)ÚMapping)ÚMutableMapping)Ú
NamedTuple)ÚNoReturn)ÚOptional)ÚPattern)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚUnioné   )Úbase)Ú	coercions)Úcrud)Úelements)Ú	functions)Ú	operators)Úroles)Úschema)Ú
selectable)Úsqltypes)Úutil)Úis_column_element)Úis_dml)Ú	_de_clone)Ú_from_objects)Ú
_NONE_NAME)Ú _SentinelDefaultCharacterization)Ú
Executable)ÚNO_ARG)ÚClauseElement)Úquoted_name)ÚColumn)Ú	TupleType)Ú
TypeEngine)Úprefix_anon_map)Ú	Visitableé   )Úexc)ÚFastIntFlag)ÚLiteral)ÚProtocol)Ú	TypedDict)Ú_AnnotationDict)Ú_AmbiguousTableNameMap)ÚCompileState)ÚCacheKey)ÚExecutableDDLElement)ÚInsert)Ú
UpdateBase)Ú
ValuesBase)Ú_truncated_label)ÚBindParameter)ÚColumnClause)ÚColumnElement)ÚLabel)ÚFunction)ÚTable)ÚAliasedReturnsRows)ÚCompoundSelectState)ÚCTE)Ú
FromClause)ÚNamedFromClause)ÚReturnsRows)ÚSelect)ÚSelectState)Ú_BindProcessorType)ÚCursorResultMetaData)Ú_CoreSingleExecuteParams)Ú_DBAPIAnyExecuteParams)Ú_DBAPIMultiExecuteParams)Ú_DBAPISingleExecuteParams)Ú_ExecuteOptions)Ú_GenericSetInputSizesType)Ú_MutableCoreSingleExecuteParams)ÚDialect)ÚSchemaTranslateMapTyperN   >^   ÚasÚdoÚinÚisÚonÚorÚtoÚallÚandÚanyÚascÚendÚforÚnewÚnotÚoffÚoldÚsetÚbothÚcaser   ÚdescÚelseÚfromÚfullÚintoÚjoinÚleftÚlikeÚnullÚonlyÚsomeÚthenÚtrueÚuserÚwhenÚarrayÚcheckÚcrossÚfalseÚgrantÚgroupÚilikeÚinnerÚlimitÚorderÚouterÚrightÚtableÚunionÚusingÚwhereÚbinaryÚcolumnÚcreateÚexceptÚfreezeÚhavingÚisnullÚoffsetÚselectÚuniqueÚanalyseÚanalyzeÚbetweenÚcollateÚdefaultÚforeignÚleadingÚnaturalÚnotnullÚplacingÚprimaryÚsimilarÚverboseÚdistinctÚoverlapsÚtrailingÚ	initiallyÚ	intersectÚ	localtimeÚ	symmetricÚ
asymmetricÚ
constraintÚ
deferrableÚ
referencesÚcurrent_dateÚcurrent_roleÚcurrent_timeÚcurrent_userÚsession_userÚauthorizationÚlocaltimestampÚcurrent_timestampz^[A-Z0-9_$]+$z^[A-Z0-9_ $]+$é
   Ú$z5^(?:RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT)$z^(?:DEFERRED|IMMEDIATE)$z%(?<![:\w\$\x5c]):([\w\$]+)(?![:\w\$])z\x5c(:[\w\$]*)(?![:\w\$])z%%(%(name)s)sÚ?z%%sz:[_POSITION]z$[_POSITION]z	:%(name)s)ÚpyformatÚqmarkÚformatÚnumericÚnumeric_dollarÚnamedú AND z OR z + z * z - ú % Ú-z < z <= z != z > z >= z = z IS DISTINCT FROM z IS NOT DISTINCT FROM z || z MATCH z NOT MATCH z IN z NOT IN ú, ú FROM ú AS ú IS z IS NOT z	 COLLATE zEXISTS ú	DISTINCT zNOT zANY zALL z DESCz ASCz NULLS FIRSTz NULLS LASTz ^ z | z & Ú~z << z >> ÚcoalesceÚCURRENT_DATEÚCURRENT_TIMEÚCURRENT_TIMESTAMPÚCURRENT_USERÚ	LOCALTIMEÚLOCALTIMESTAMPÚrandomÚsysdateÚSESSION_USERÚUSERÚCUBEÚROLLUPzGROUPING SETSzDict[Type[Function[Any]], str]Ú	FUNCTIONSÚmonthÚdayÚyearÚsecondÚhourÚdoyÚminuteÚquarterÚdowÚweekÚepochÚmillisecondsÚmicrosecondsÚtimezone_hourÚtimezone_minute)rÛ   rÜ   rÝ   rÞ   rß   rà   rá   râ   rã   rä   rå   ræ   rç   rè   ré   ÚUNIONz	UNION ALLÚEXCEPTz
EXCEPT ALLÚ	INTERSECTzINTERSECT ALLc                  ó@   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   y	)
ÚResultColumnsEntrya  Tracks a column expression that is expected to be represented
    in the result rows for this statement.

    This normally refers to the columns clause of a SELECT statement
    but may also refer to a RETURNING clause, as well as for dialect-specific
    emulations.

    ÚstrÚkeynameÚnameúTuple[Any, ...]ÚobjectsúTypeEngine[Any]ÚtypeN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úX/var/www/html/kelly-backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/compiler.pyrî   rî   [  s1   … ñð ƒLØ;à
ƒIØ%àÓðð Óðrý   rî   c                  ó(   — e Zd Z	 	 	 	 	 	 	 	 	 	 dd„Zy)Ú_ResultMapAppenderc                 ó   — y ©Nrü   ©Úselfrð   rñ   ró   Útype_s        rþ   Ú__call__z_ResultMapAppender.__call__{  s   € ð rý   N)
rð   rï   rñ   rï   ró   zSequence[Any]r  rô   ÚreturnÚNone©r÷   rø   rù   r  rü   rý   rþ   r   r   z  s7   „ ðàðð ðð ð	ð
 ðð 
ôrý   r   z
Literal[0]ÚRM_RENDERED_NAMEz
Literal[1]ÚRM_NAMEz
Literal[2]Ú
RM_OBJECTSé   z
Literal[3]ÚRM_TYPEc                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_BaseCompilerStackEntryzSet[FromClause]Úasfrom_fromsÚcorrelate_fromsrP   r$   N©r÷   rø   rù   rû   rü   rý   rþ   r  r  Œ  s   … Ø!Ó!Ø$Ó$ØÔrý   r  c                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   y
)Ú_CompilerStackEntryr>   Úcompile_stateÚboolÚneed_result_map_for_nestedÚneed_result_map_for_compoundrP   Úselect_0úSelect[Any]Úinsert_from_selectNr  rü   rý   rþ   r  r  ’  s    … ØÓØ $Ó$Ø"&Ó&ØÓØ#Ô#rý   r  F)Útotalc                  ór   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 edd„«       Zedd„«       Zy)ÚExpandedStatea¹  represents state to use when producing "expanded" and
    "post compile" bound parameters for a statement.

    "expanded" parameters are parameters that are generated at
    statement execution time to suit a number of parameters passed, the most
    prominent example being the individual elements inside of an IN expression.

    "post compile" parameters are parameters where the SQL literal value
    will be rendered into the SQL statement at execution time, rather than
    being passed as separate parameters to the driver.

    To create an :class:`.ExpandedState` instance, use the
    :meth:`.SQLCompiler.construct_expanded_state` method on any
    :class:`.SQLCompiler` instance.

    rï   Ú	statementrU   Ú
parametersú%Mapping[str, _BindProcessorType[Any]]Ú
processorsúOptional[Sequence[str]]ÚpositiontupzMapping[str, List[str]]Úparameter_expansionc                ó‚   ‡ — ‰ j                   €t        j                  d«      ‚t        ˆ fd„‰ j                   D «       «      S )zrTuple of positional parameters, for statements that were compiled
        using a positional paramstyle.

        z.statement does not use a positional paramstylec              3  ó<   •K  — | ]  }‰j                   |   –— Œ y ­wr  ©r!  )Ú.0Úkeyr  s     €rþ   Ú	<genexpr>z6ExpandedState.positional_parameters.<locals>.<genexpr>Ï  s   øè ø€ ÐFÑ5E¨c�T—_‘_ SÕ)Ñ5Eùs   ƒ)r%  r7   ÚInvalidRequestErrorÚtuple©r  s   `rþ   Úpositional_parametersz#ExpandedState.positional_parametersÅ  s@   ø€ ð ×ÑÐ#Ü×)Ñ)Ø@óð ô ÓF°T×5EÒ5EÓFÓFÐFrý   c                ó   — | j                   S )z.synonym for :attr:`.ExpandedState.parameters`.r)  r/  s    rþ   Úadditional_parametersz#ExpandedState.additional_parametersÑ  s   € ð �‰Ðrý   N)r  rò   )r  rU   )r÷   rø   rù   rú   rû   Úpropertyr0  r2  rü   rý   rþ   r  r  š  si   … ñð" ƒNØ=à(Ó(ðð 6Ó5Ø+à(Ó(ðð 1Ó0ðð ò	Gó ð	Gð òó ñrý   r  c                  ó°   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
Zded<   	 d
Zded<   	 dZded<   	 dZded<   	 dZ	ded<   	 d
Z
ded<   	 d
Zded<   y)Ú_InsertManyValuesa  represents state to use for executing an "insertmanyvalues" statement.

    The primary consumers of this object are the
    :meth:`.SQLCompiler._deliver_insertmanyvalues_batches` and
    :meth:`.DefaultDialect._deliver_insertmanyvalues_batches` methods.

    .. versionadded:: 2.0

    r  Úis_default_exprrï   Úsingle_values_exprúList[crud._CrudParamElementStr]Úinsert_crud_paramsÚintÚnum_positional_params_countedFÚsort_by_parameter_orderÚincludes_upsert_behaviorsNúOptional[Sequence[Column[Any]]]Úsentinel_columnsr   Únum_sentinel_columnsr$  Úsentinel_param_keysÚimplicit_sentinelÚembed_values_counter)r÷   rø   rù   rú   rû   r<  r=  r?  r@  rA  rB  rC  rü   rý   rþ   r5  r5  ×  s·   … ñð Óðð
 Óðð 8Ó7ØMà#&Ó&ð
ð %*Ð˜TÓ)ðð ',Ð˜tÓ+ðð 9=ÐÐ5Ó<ðð !"Ð˜#Ó!ðð 48ÐÐ0Ó7ðð  $Ð�tÓ#ð	ð "'Ð˜$Ó&ð	rý   r5  c                  óv   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   y)Ú_InsertManyValuesBatchas  represents an individual batch SQL statement for insertmanyvalues.

    This is passed through the
    :meth:`.SQLCompiler._deliver_insertmanyvalues_batches` and
    :meth:`.DefaultDialect._deliver_insertmanyvalues_batches` methods out
    to the :class:`.Connection` within the
    :meth:`.Connection._exec_insertmany_context` method.

    .. versionadded:: 2.0.10

    rï   Úreplaced_statementrV   Úreplaced_parametersú#Optional[_GenericSetInputSizesType]Úprocessed_setinputsizesz#Sequence[_DBAPISingleExecuteParams]ÚbatchzSequence[Tuple[Any, ...]]Úsentinel_valuesr:  Úcurrent_batch_sizeÚbatchnumÚtotal_batchesr  Úrows_sortedÚis_downgradedNrö   rü   rý   rþ   rE  rE  N  sD   … ñ
ð ÓØ/Ó/Ø@Ó@Ø.Ó.Ø.Ó.ØÓØƒMØÓØÓØÔrý   rE  c                  óB   — e Zd ZdZdZdZdZdZeez  ez  Zeez  Z	dZ
dZy)	ÚInsertmanyvaluesSentinelOptszcbitflag enum indicating styles of PK defaults
    which can work as implicit sentinel columns

    r   r6   é   é   é   é@   N)r÷   rø   rù   rú   ÚNOT_SUPPORTEDÚAUTOINCREMENTÚIDENTITYÚSEQUENCEÚANY_AUTOINCREMENTÚ_SUPPORTED_OR_NOTÚUSE_INSERT_FROM_SELECTÚRENDER_SELECT_COL_CASTSrü   rý   rþ   rR  rR  g  sE   „ ñð
 €MØ€MØ€HØ€Hà%¨Ñ0°8Ñ;ÐØ%Ð(9Ñ9ÐàÐØ Ñrý   rR  c                  ó   — e Zd ZdZ	 dZ	 dZy)ÚCompilerStater   r   r6   N)r÷   rø   rù   Ú	COMPILINGÚSTRING_APPLIEDÚNO_STATEMENTrü   rý   rþ   r`  r`  y  s    „ Ø€IØ=à€Nðð €Lðrý   r`  c                  ó,   — e Zd ZdZdZ	 dZ	 dZ	 eez  Zy)ÚLintingzžrepresent preferences for the 'SQL linting' feature.

    this feature currently includes support for flagging cartesian products
    in SQL statements.

    r   r   r6   N)r÷   rø   rù   rú   Ú
NO_LINTINGÚCOLLECT_CARTESIAN_PRODUCTSÚWARN_LINTINGÚFROM_LINTINGrü   rý   rþ   re  re  ‰  s5   „ ñð €JØà!"Ððð €LØ2à-°Ñ<€Lðrý   re  c                  ó    — e Zd ZdZdd„Zdd„Zy)Ú
FromLinterzKrepresents current state for the "cartesian product" detection
    feature.Nc                óÄ  ‡	— | j                   }|syt        | j                  «      }t        |«      }|�|}|j                  |«       n|j	                  «       }t        j                  |g«      }|rg|re|j                  «       Š	|j                  ‰	«       |D �ch c]	  }‰	|v sŒ|’Œ }}|j                  ˆ	fd„|D «       «       |j                  |«       |r|rŒe|r||fS yc c}w )N©NNc              3  óH   •K  — | ]  }||j                  ‰«          –— Œ y ­wr  )Úindex)r*  ÚedgeÚnodes     €rþ   r,  z"FromLinter.lint.<locals>.<genexpr>Å  s#   øè ø€ ÐNÁI¸D˜T d§j¡j°Ó&6Ð"6Õ7ÁIùó   ƒ")Úfromsro   ÚedgesÚremoveÚpopÚcollectionsÚdequeÚpopleftÚdiscardÚ
extendleftÚdifference_update)
r  Ústartrs  rt  Úthe_restÚ
start_withÚstackrp  Ú	to_removerq  s
            @rþ   ÚlintzFromLinter.lint©  sÚ   ø€ Ø—
‘
ˆÙØä�D—J‘J“ˆÜ�u“:ˆàÐØˆJØ�O‰O˜JÕ'à!Ÿ™›ˆJä×!Ñ! : ,Ó/ˆá™Ø—=‘=“?ˆDØ×Ñ˜TÔ"ñ +0Ó@©% $°4¸4²<š¨%ˆIÐ@ð ×ÑÓNÁIÓNÔNØ×#Ñ# IÔ.ñ šñ  Ø˜ZÐ'Ð'àùò As   Â	CÂ Cc                óà   ‡ — ‰ j                  «       \  }}|rX|}|rSd}dj                  ˆ fd„|D «       «      }|j                  ||‰ j                  |   ¬«      }t	        j
                  |«       y y y )Nz£{stmt_type} statement has a cartesian product between FROM element(s) {froms} and FROM element "{start}".  Apply join condition(s) between each element to resolve.rÇ   c              3  óD   •K  — | ]  }d ‰j                   |   › d �–— Œ y­w)Ú"N)rs  )r*  Úfrom_r  s     €rþ   r,  z"FromLinter.warn.<locals>.<genexpr>Û  s(   øè ø€ ð &Ù:?°�a˜Ÿ
™
 5Ñ)Ð*¨!Ô,¹%ùó   ƒ )Ú	stmt_typers  r}  )r‚  rw   rÀ   rs  r&   Úwarn)r  rˆ  r~  r  rs  ÚtemplateÚ	froms_strÚmessages   `       rþ   r‰  zFromLinter.warnÎ  s†   ø€ Ø#Ÿy™y›{Ñˆ�*ñ ØˆEÙð7ð ð !ŸI™Ió &Ù:?ó&ó �	ð #Ÿ/™/Ø'Ø#ØŸ*™* ZÑ0ð *ó �ô —	‘	˜'Õ"ð! ð rý   r  )ÚSELECT)r÷   rø   rù   rú   r‚  r‰  rü   rý   rþ   rk  rk  ¥  s   „ ñó#ôJ#rý   rk  rs  rt  c                  óº  ‡ — e Zd ZU dZdZded<   	 dZded<   	 ded	<   	 d
Zd
ZdZ	ded<   dZ
ded<   dZded<   ej                  Zded<   	 ded<   ej                  Zded<   dZded<   	 dZded<   	 dZded<   	 ded<   	 dd
 ej&                  «       f	 	 	 	 	 	 	 	 	 d(d„Zd)ˆ fd„Zed „ «       Zd!„ Zd"„ Zed#„ «       Zd*d$„Zd+d%„Z	 	 	 d,	 	 	 	 	 	 	 d-d&„Zed'„ «       Zˆ xZ S ).ÚCompileda  Represent a compiled SQL or DDL expression.

    The ``__str__`` method of the ``Compiled`` object should produce
    the actual text of the statement.  ``Compiled`` objects are
    specific to their underlying database dialect, and also may
    or may not be specific to the columns referenced within a
    particular set of bind parameters.  In no case should the
    ``Compiled`` object be dependent on the actual values of those
    bind parameters, even though it may reference those values as
    defaults.
    NúOptional[ClauseElement]r   Ú rï   Ústringr`  ÚstateFzOptional[CursorResultMetaData]Ú_cached_metadataz"Optional[List[ResultColumnsEntry]]Ú_result_columnsú Optional[SchemaTranslateMapType]Úschema_translate_maprY   Úexecution_optionsÚIdentifierPreparerÚpreparerr<   Ú_annotationszOptional[CompileState]r  Údml_compile_stateúOptional[CacheKey]Ú	cache_keyÚfloatÚ	_gen_timec                ó–  — || _         | j                   j                  | _        |r'|| _        | j                  j	                  |«      | _        |�Øt
        j                  | _        || _        |j                  | _
        |j                  | _        | j                  r)t        rt        |t        «      sJ ‚|j                  | _         | j"                  | j                  fi |¤Ž| _        |r+| j                  j'                  | j$                  |«      | _        t
        j(                  | _        nt
        j*                  | _        t-        «       | _        y)aû  Construct a new :class:`.Compiled` object.

        :param dialect: :class:`.Dialect` to compile against.

        :param statement: :class:`_expression.ClauseElement` to be compiled.

        :param schema_translate_map: dictionary of schema names to be
         translated when forming the resultant SQL

         .. seealso::

            :ref:`schema_translating`

        :param compile_kwargs: additional kwargs that will be
         passed to the initial call to :meth:`.Compiled.process`.


        N)ÚdialectÚidentifier_preparerrš  r—  Ú_with_schema_translater`  ra  r“  r   Úsupports_executionÚcan_executer›  r   Ú
isinstancer-   Ú_execution_optionsr˜  Úprocessr’  Ú_render_schema_translatesrb  rc  r   r   ©r  r¢  r   r—  Úrender_schema_translateÚcompile_kwargss         rþ   Ú__init__zCompiled.__init__;  s  € ð4 ˆŒØŸ™×8Ñ8ˆŒÙØ(<ˆDÔ%Ø ŸM™M×@Ñ@Ø$óˆDŒMð Ð Ü&×0Ñ0ˆDŒJØ&ˆDŒNØ(×;Ñ;ˆDÔØ )× 6Ñ 6ˆDÔØ×ÒÝ Ü% i´Ô<Ð<Ð<Ø)2×)EÑ)E�Ô&Ø&˜$Ÿ,™, t§~¡~ÑH¸ÑHˆDŒKá&Ø"Ÿm™m×EÑEØ—K‘KÐ!5ó�”ô '×5Ñ5ˆD�Jä&×3Ñ3ˆDŒJä%›ˆ�rý   c                ó@   •— | j                  «        t        ‰| �	  «       S r  )Ú_init_compiler_clsÚsuperÚ__init_subclass__)ÚclsÚ	__class__s    €rþ   r²  zCompiled.__init_subclass__s  s   ø€ Ø×ÑÔ Ü‰wÑ(Ó*Ð*rý   c                 ó   — y r  rü   ©r³  s    rþ   r°  zCompiled._init_compiler_clsw  s   € àrý   c                ó~   — | j                   r|j                  | ||«      S t        j                  | j                  «      ‚r  )r¦  Ú_execute_compiledr7   ÚObjectNotExecutableErrorr   )r  Ú
connectionÚdistilled_paramsr˜  s       rþ   Ú_execute_on_connectionzCompiled._execute_on_connection{  s@   € ð ×ÒØ×/Ñ/ØÐ&Ð(9óð ô ×.Ñ.¨t¯~©~Ó>Ð>rý   c                óB   — t        j                  | t        |«      «      |‚r  ©r7   ÚUnsupportedCompilationErrorrõ   ©r  ÚelementÚerrÚkws       rþ   Úvisit_unsupported_compilationz&Compiled.visit_unsupported_compilation…  s   € Ü×-Ñ-¨d´D¸³MÓBÈÐKrý   c                ó   — t        «       ‚)z�Return a Compiled that is capable of processing SQL expressions.

        If this compiler is one, it would likely just return 'self'.

        ©ÚNotImplementedErrorr/  s    rþ   Úsql_compilerzCompiled.sql_compilerˆ  s   € ô "Ó#Ð#rý   c                ó(   —  |j                   | fi |¤ŽS r  ©Ú_compiler_dispatch)r  ÚobjÚkwargss      rþ   r©  zCompiled.process’  s   € Ø%ˆs×%Ñ% dÑ5¨fÑ5Ð5rý   c                óT   — | j                   t        j                  u r| j                  S y)z3Return the string text of the generated SQL or DDL.r‘  )r“  r`  rb  r’  r/  s    rþ   Ú__str__zCompiled.__str__•  s#   € ð �:‰:œ×5Ñ5Ñ5Ø—;‘;Ðàrý   c                ó   — t        «       ‚)zâReturn the bind params for this compiled object.

        :param params: a dict of string/object pairs whose values will
                       override bind values compiled in to the
                       statement.
        rÆ  ©r  ÚparamsÚextracted_parametersÚescape_namess       rþ   Úconstruct_paramszCompiled.construct_params�  s   € ô "Ó#Ð#rý   c                ó"   — | j                  «       S )z0Return the bind params for this compiled object.©rÕ  r/  s    rþ   rÒ  zCompiled.params¬  s   € ð ×$Ñ$Ó&Ð&rý   )
r¢  r\   r   r�  r—  r–  r¬  r  r­  úMapping[str, Any])r  r  )rÌ  r5   rÍ  r   r  rï   )r  rï   ©NNT©rÒ  ú"Optional[_CoreSingleExecuteParams]rÓ  ú&Optional[Sequence[BindParameter[Any]]]rÔ  r  r  z)Optional[_MutableCoreSingleExecuteParams])!r÷   rø   rù   rú   r   rû   r’  Úis_sqlÚis_ddlr”  r•  r—  r&   Ú
EMPTY_DICTr˜  r›  r  rœ  rž  Úimmutabledictr®  r²  Úclassmethodr°  r¼  rÄ  r3  rÈ  r©  rÏ  rÕ  rÒ  Ú__classcell__©r´  s   @rþ   r�  r�  ç  s¢  ø… ñ
ð *.€IÐ&Ó-ØØ€FˆCÓØ4àÓØ-à€FØ€Fà7;ÐÐ4Ó;à:>€OÐ7Ó>à=AÐÐ:ÓAà)-¯©Ð�Ó8ðð
 !Ó à$(§O¡O€L�/Ó3à,0€MÐ)Ó0ðð 15ÐÐ-Ó4ð	ð %)€IÐ!Ó(ð	ð Óðð BFØ(-Ø,>¨D×,>Ñ,>Ó,@ð6(àð6(ð +ð6(ð ?ð	6(ð
 "&ð6(ð *ó6(õp+ð ñó ðò?òLð ñ$ó ð$ó6óð 6:ØGKØ!ð	$à2ð$ð Eð$ð ð	$ð
 
3ó$ð ñ'ó ô'rý   r�  c                  ó<   — e Zd ZdZdZdd„Zdd„Z	 	 	 	 	 	 	 	 d	d„Zy)
ÚTypeCompilerz2Produces DDL specification for TypeEngine objects.z	visit_\w+c                ó   — || _         y r  )r¢  )r  r¢  s     rþ   r®  zTypeCompiler.__init__·  s	   € Øˆ�rý   c                óÊ   — |j                   rE| j                  j                  |j                   v r#|j                   | j                  j                     } |j                  | fi |¤ŽS r  )Ú_variant_mappingr¢  rñ   rË  ©r  r  rÃ  s      rþ   r©  zTypeCompiler.processº  sU   € à×"Ò"Ø—‘×!Ñ! U×%;Ñ%;Ñ;à×*Ñ*¨4¯<©<×+<Ñ+<Ñ=ˆEØ'ˆu×'Ñ'¨Ñ3°Ñ3Ð3rý   c                ó0   — t        j                  | |«      |‚r  )r7   r¿  rÀ  s       rþ   rÄ  z*TypeCompiler.visit_unsupported_compilationÂ  s   € ô ×-Ñ-¨d°GÓ<À#ÐErý   N)r¢  r\   )r  rô   rÃ  r   r  rï   )rÁ  r   rÂ  Ú	ExceptionrÃ  r   r  r   )r÷   rø   rù   rú   Úensure_kwargr®  r©  rÄ  rü   rý   rþ   rå  rå  ²  s>   „ Ù<à€Lóó4ðFØðFØ!*ðFØ25ðFà	ôFrý   rå  c                  óF   — e Zd ZdZdZdZd	d„Zed„ «       Zed„ «       Z	d„ Z
y)
Ú_CompileLabelz;lightweight label object which acts as an expression.Label.Úlabel©rÁ  rñ   Ú
_alt_namesc                ó6   — || _         || _        |f|z   | _        y r  rð  )r  Úcolrñ   Ú	alt_namess       rþ   r®  z_CompileLabel.__init__Ò  s   € ØˆŒØˆŒ	Ø˜& 9Ñ,ˆ�rý   c                ó.   — | j                   j                  S r  ©rÁ  Ú	proxy_setr/  s    rþ   r÷  z_CompileLabel.proxy_set×  ó   € à�|‰|×%Ñ%Ð%rý   c                ó.   — | j                   j                  S r  ©rÁ  rõ   r/  s    rþ   rõ   z_CompileLabel.typeÛ  ó   € à�|‰|× Ñ Ð rý   c                ó   — | S r  rü   ©r  rÃ  s     rþ   Ú
self_groupz_CompileLabel.self_groupß  ó   € Øˆrý   N)rü   )r÷   rø   rù   rú   Ú__visit_name__Ú	__slots__r®  r3  r÷  rõ   rþ  rü   rý   rþ   rî  rî  Ê  sD   „ ñ Fà€NØ/€Ió-ð
 ñ&ó ð&ð ñ!ó ð!órý   rî  c                  óJ   — e Zd ZdZdZdZd„ Zed„ «       Zed„ «       Z	d„ Z
d„ Zy	)
Úilike_case_insensitivea  produce a wrapping element for a case-insensitive portion of
    an ILIKE construct.

    The construct usually renders the ``lower()`` function, but on
    PostgreSQL will pass silently with the assumption that "ILIKE"
    is being used.

    .. versionadded:: 2.0

    Úilike_case_insensitive_operand©rÁ  Ú
comparatorc                ó4   — || _         |j                  | _        y r  r  )r  rÁ  s     rþ   r®  zilike_case_insensitive.__init__ô  s   € ØˆŒØ!×,Ñ,ˆ�rý   c                ó.   — | j                   j                  S r  rö  r/  s    rþ   r÷  z ilike_case_insensitive.proxy_setø  rø  rý   c                ó.   — | j                   j                  S r  rú  r/  s    rþ   rõ   zilike_case_insensitive.typeü  rû  rý   c                ó   — | S r  rü   rý  s     rþ   rþ  z!ilike_case_insensitive.self_group   rÿ  rý   c                óJ   — t        | j                  j                  |«      «      S r  )r  rÁ  Ú_with_binary_element_type)r  r  s     rþ   r  z0ilike_case_insensitive._with_binary_element_type  s!   € Ü%Ø�L‰L×2Ñ2°5Ó9ó
ð 	
rý   N)r÷   rø   rù   rú   r   r  r®  r3  r÷  rõ   rþ  r  rü   rý   rþ   r  r  ã  sJ   „ ñ	ð 6€NØ'€Iò-ð ñ&ó ð&ð ñ!ó ð!òó
rý   r  c                  ó@  — e Zd ZU dZeZ ej                  dddddddddœ«      Zde	d	<   	 d
e	d<   de	d<   dZ
eZdZde	d<   dZde	d<   dZde	d<   	 de	d<   	 dZde	d<   	 dZde	d<   	 dZde	d<   	 dZde	d<   de	d<   	 de	d <   	 d!e	d"<   	 dZde	d#<   	 dZde	d$<   	 dZde	d%<   	 d&e	d'<   	 d&e	d(<   	 d&e	d)<   	 d*e	d+<   	 dZde	d,<   	 dZde	d-<   	 dZde	d.<   	 dZde	d/<   	 dZde	d0<   	 dZde	d1<   	 dZd2e	d3<   	 dZd4e	d5<   	 dZd6e	d7<   dZ d8e	d9<   dZ!d:e	d;<    e"«       Z#d<e	d=<   	  e"«       Z$d<e	d><   	 ejJ                  Z&d?e	d@<   	 dZ'	 dZ(	 dZ)dAe	dB<   	 dZ*d6e	dC<   	 dZ+d6e	dD<   dZ,d6e	dE<   dZ-de	dF<   dGe	dH<   dIe	dJ<   dKe	dL<   de	dM<    e.j^                  dN«      Z0 e.j^                  dO«      Z1 e.j^                  e1jd                  › dPe0jd                  › �«      Z3e4dQ„ «       Z5e4dR„ «       Z6ddde7df	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �ddT„Z8e9�ddU„«       Z:ejv                  �ddV„«       Z<e9dW„ «       Z=e9dX„ «       Z>e9dY„ «       Z?ej€                  �ddZ„«       ZAej„                  �dd[„«       ZCeDjŠ                  d\„ «       ZFd]„ ZGd^„ ZHej€                  	 	 �d	d_„«       ZId`„ ZJe9da„ «       ZK	 	 �d
	 	 	 	 	 �ddb„ZL	 	 	 	 	 	 �d	 	 	 	 	 	 	 	 	 	 	 	 	 �ddc„ZMej„                  dd„ «       ZNe9de„ «       ZO	 �d	 	 	 	 	 �ddf„ZP ej¢                  dg«      dh„ «       ZRdie	dj<   ej€                  �ddk„«       ZSej€                   ej¢                  dl«      dm„ «       «       ZTej€                   ej¢                  dl«      dn„ «       «       ZUdo„ ZVdp„ ZW�ddq„ZXdr„ ZY	 �dds„ZZ	 �ddt„Z[	 	 	 	 	 �ddu„Z\dv„ Z]dw„ Z^	 	 	 	 �d	 	 	 	 	 	 	 	 	 	 	 	 	 �ddx„Z_dy„ Z`dz„ Zad{„ Zbd|„ Zcd}„ Zdd~„ Ze�dd„Zf	 �dd€„Zgd�„ Zhd‚„ Zidƒ„ Zjd„„ Zkd…„ Zld†„ Zmd‡„ Zndˆ„ Zod‰„ ZpdŠ„ Zqd‹„ ZrdŒ„ Zsd�„ ZtdŽ„ Zud�„ Zvd�„ Zwd‘„ Zx	 �d	 	 	 	 	 	 	 �dd’„Zyd“„ Zzd”„ Z{d•„ Z|	 �dd–„Z}d—„ Z~d˜„ Z	 �dd™„Z€dš„ Z�d›„ Z‚dœ„ Zƒd�„ Z„dž„ Z…dŸ„ Z†d „ Z‡d¡„ Zˆ	 �dd¢„Z‰d£„ ZŠ	 	 	 	 �dd¤„Z‹d¥„ ZŒd¦„ Z�d§„ ZŽd¨„ Z�d©„ Z�	 �ddª„Z‘d«„ Z’d¬„ Z“ej€                  d­„ «       Z”d®„ Z•d¯„ Z–d°„ Z—d±„ Z˜d²„ Z™d³„ Zšd´„ Z›dµ„ Zœd¶„ Z�d·„ Zžd¸„ ZŸd¹„ Z dº„ Z¡d»„ Z¢d¼„ Z£d½„ Z¤d¾„ Z¥d¿„ Z¦dÀ„ Z§dÁ„ Z¨dÂ„ Z©dÃ„ Zª	 	 	 	 	 �ddÄ„Z«dÅ„ Z¬e­dfdÆ„Z®dÇ„ Z¯dÈ„ Z°	 	 	 	 	 	 �ddÉ„Z±�ddÊ„Z²	 	 	 	 	 	 �d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �ddË„Z³dÌ„ Z´ddddd eµ�jl                  d«      f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �ddÍ„Z·dÎ„ Z¸dÏ„ Z¹	 	 	 	 	 	 	 	 �d dÐ„ZºdÑ„ Z»dÒ„ Z¼�ddÓ„Z½dÔ„ Z¾�ddÕ„Z¿dÖ„ ZÀd×„ ZÁ	 	 	 	 	 	 	 	 	 	 �d!dØ„ZÂ	 �ddÙ„ZÃ	 	 	 	 	 	 	 �d"dÚ„ZÄdÛ„ ZÅdÜ„ ZÆdÝ„ ZÇdÞ„ ZÈdß„ ZÉdàe	dá<   eÊ�j–                  s" ej                  dâ e"«       fdã e"«       fg«      ZÌ	 �ddä„ZÍdZÎdSe	då<   	 	 	 	 	 	 	 	 �d#dæ„ZÏ	 	 	 	 �d$dç„ZÐdè„ ZÑdé„ ZÒdê„ ZÓ	 	 �ddë„ZÔdì„ ZÕdí„ ZÖdî„ Z×dï„ ZØdð„ ZÙ	 	 	 	 	 	 	 	 	 	 �d%dñ„ZÚdò„ ZÛ	 	 	 �d&dó„ZÜ	 	 	 	 	 	 	 �d'dô„ZÝ�ddõ„ZÞdö„ Zß ej                  eà�jÂ                  eâ�jÆ                  eà�jÈ                  eâ�jÆ                  eà�jÊ                  eâ�jÆ                  eà�jÌ                  eâ�jÌ                  eà�jÎ                  eâ�jÎ                  i«      Zèeè�jÓ                  eà�jÊ                  eâ�jÔ                  i«      Zë	 	 	 	 �d(d÷„Zì	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d)dø„Zí	 �d*dù„Zîdú„ Zïdû„ Zðdü„ Zñ�ddý„Zòdþ„ Zódÿ„ Zô�d�d „Zõ�d„ Zö�d„ Z÷�d„ Zøy(+  ÚSQLCompilerz~Default implementation of :class:`.Compiled`.

    Compiles :class:`_expression.ClauseElement` objects into SQL strings.

    ÚPÚAÚZÚCÚ_)Ú%Ú(Ú)Ú:Ú.Ú[Ú]Ú zClassVar[Mapping[str, str]]Úbindname_escape_characterszClassVar[Pattern[str]]Ú_bind_translate_reÚ_bind_translate_charsTFr  ÚisdeleteÚisinsertÚisupdatezOptional[List[Column[Any]]]Ú	postfetchrü   zSequence[Column[Any]]Úinsert_prefetchÚupdate_prefetchNú&Optional[Sequence[ColumnElement[Any]]]Úimplicit_returningÚisplaintextzDict[str, BindParameter[Any]]ÚbindszDict[BindParameter[Any], str]Ú
bind_nameszList[_CompilerStackEntry]r€  Úreturning_precedes_valuesÚ'render_table_with_column_in_update_fromÚansi_bind_rulesrï   ÚbindtemplateÚcompilation_bindtemplateÚ_numeric_binds_identifier_charzList[ResultColumnsEntry]r•  Ú_textual_ordered_columnsÚ_ad_hoc_textualÚ_ordered_columnsÚ_loose_column_name_matchingÚ_numeric_bindsÚ_render_postcompilezOptional[ExpandedState]Ú_post_compile_expanded_stateúOptional[str]Ú_pre_expanded_stringúOptional[List[str]]Ú_pre_expanded_positiontupzOptional[_InsertManyValues]Ú_insertmanyvaluesz!Optional[crud._CrudParamSequence]Ú_insert_crud_paramszFrozenSet[BindParameter[Any]]Úliteral_execute_paramsÚpost_compile_paramszutil.immutabledict[str, str]Úescaped_bind_nameszbOptional[Tuple[Dict[BindParameter[Any], List[BindParameter[Any]]], Dict[str, BindParameter[Any]]]]Ú_cache_key_bind_matchr%  Ú_values_bindparamÚ_visited_bindparamÚinlinez"Optional[MutableMapping[CTE, str]]ÚcteszDict[Tuple[int, str], CTE]Úctes_by_level_namez/Dict[CTE, Tuple[int, str, selectable._CTEOpts]]Úlevel_name_by_cteÚctes_recursivez"__\[POSTCOMPILE_(\S+?)(~~.+?~~)?\]z%\(([^)]+?)\)sÚ|c                ó$   — | j                  «        y r  )Ú_init_bind_translater¶  s    rþ   r°  zSQLCompiler._init_compiler_cls2  s   € à× Ñ Õ"rý   c                ó¾   — t        j                  dj                  | j                  «      «      }t        j                  d|› d�«      | _        | j                  | _        y )Nr‘  r  r  )ÚreÚescaperw   r  Úcompiler  r  )r³  Úregs     rþ   rJ  z SQLCompiler._init_bind_translate6  sF   € ä�i‰i˜Ÿ™ × >Ñ >Ó?Ó@ˆÜ!#§¡¨a°¨u°A¨JÓ!7ˆÔØ$'×$BÑ$BˆÕ!rý   r   c                ó>  — || _         || _        |r:|d   D �	ci c]  }	|	j                  |	“Œ }
}	|d   D �	ci c]  }	|	|	g“Œ }}	||
f| _        || _        || _        i | _        t        j                  «       | _	        g | _
        g | _        |j                  | _        | j                  rH|j                  j                  d«      x| _        }|r|j                  dk(  rdnd| _        t"        | _        nt&        |j                     | _        d| _        |j*                  xs |j,                  | _        t/        «       | _        i | _        i | _        t7        j8                  | ||fi |¤Ž | j:                  s| j<                  s| j>                  r�t@        rtC        |tD        «      sJ ‚| j:                  s| j<                  rmt@        rtC        |tF        «      sJ ‚|jH                  rd| _%        nA| j                  r5| j:                  r"| jL                  jN                  r|jP                  rd| _%        t&        |j                     | _)        |rK| jT                  jW                  |jT                  jY                  «       D ��ci c]  \  }}|dvr||“Œ c}}«       | jZ                  t\        j^                  u rm| j                  r-| j                  r| ja                  «        n| jc                  «        | jd                  r'| jg                  d	d¬
«      }| ji                  |d¬«       yyyc c}	w c c}	w c c}}w )a‚  Construct a new :class:`.SQLCompiler` object.

        :param dialect: :class:`.Dialect` to be used

        :param statement: :class:`_expression.ClauseElement` to be compiled

        :param column_keys:  a list of column names to be compiled into an
         INSERT or UPDATE statement.

        :param for_executemany: whether INSERT / UPDATE statements should
         expect that they are to be invoked in an "executemany" style,
         which may impact how the statement will be expected to return the
         values of defaults and autoincrement / sequences and similar.
         Depending on the backend and driver in use, support for retrieving
         these values may be disabled which means SQL expressions may
         be rendered inline, RETURNING may not be rendered, etc.

        :param kwargs: additional keyword arguments to be consumed by the
         superclass.

        r   rÁ   rÂ   r¼   r  NT>   r“  r¢  rš  Ú
positionalr-  r4  r.  F©rÔ  Ú_no_postcompile)Ú_populate_self)5Úcolumn_keysrž  r+  r@  Úfor_executemanyÚlintingr(  r&   Úcolumn_dictr)  r€  r•  rQ  Ú
paramstyleÚ
startswithr4  r/  Ú_pyformat_templater.  ÚBIND_TEMPLATESrD  Úlabel_lengthÚmax_identifier_lengthr4   Úanon_mapÚtruncated_namesÚ_truncated_countersr�  r®  r   r!  r  r   r§  rB   rC   Ú_inlinerC  r¢  Úinsert_executemany_returningÚ_return_defaultsr-  Ú__dict__ÚupdateÚitemsr“  r`  rb  Ú_process_numericÚ_process_positionalr5  rÕ  Ú#_process_parameters_for_postcompile)r  r¢  r   rž  rU  rV  rW  Ú_supporting_againstrÍ  ÚbÚcksmÚckbmÚnbÚkÚvr!  s                   rþ   r®  zSQLCompiler.__init__<  sè  € ð@ 'ˆÔà"ˆŒáØ&/°¢lÓ3¡l �A—E‘E˜1‘H lˆDÐ3Ø$-¨a¢LÓ1¡L˜q�A˜�s‘F LˆDÐ1Ø*.°¨ˆDÔ&ð
  /ˆÔàˆŒð ˆŒ
ô ×*Ñ*Ó,ˆŒð ˆŒ
à!ˆÔð "×,Ñ,ˆŒØ�?Š?Ø'.×'9Ñ'9×'DÑ'DÀYÓ'OÐOˆDÔ "Ùà"×-Ñ-Ð1AÒA‘CÀsð Ô3ô -?ˆDÕ)ä,:¸7×;MÑ;MÑ,NˆDÔ)àˆŒ	ð × Ñ ÒA G×$AÑ$Að 	Ôô (Ó)ˆŒð <>ˆÔØ35ˆÔ ä×Ñ˜$ ¨Ñ=°fÒ=à�=Š=˜DŸMšM¨T¯]ª]ÝÜ! )¬ZÔ8Ð8Ð8à�}Š} §¢Ý Ü% i´Ô<Ð<Ð<Ø×$Ò$Ø"&�D•KØ×)Ò)ØŸšàŸ™×AÒAØ%×6Ò6ð #'�D”Kä*¨7×+=Ñ+=Ñ>ˆÔáØ�M‰M× Ñ ð !4× <Ñ <× BÑ BÔ Dôá D™˜˜1Øðñ	ð �q‘DØ Dòôð" �:‰:œ×5Ñ5Ñ5Ø�ŠØ×&Ò&Ø×)Ñ)Õ+à×,Ñ,Ô.à×'Ò'Ø!×2Ñ2Ø!&Ø$(ð 3ó �
ð
 ×8Ñ8Ø¨tð 9õ ð (ð 6ùòy 4ùÚ1ùóVs   ˜LµLÉ,L
c                óH   — | j                   €y| j                   j                  S )aø  When an INSERT is compiled with a single set of parameters inside
        a VALUES expression, the string is assigned here, where it can be
        used for insert batching schemes to rewrite the VALUES expression.

        .. versionadded:: 1.3.8

        .. versionchanged:: 2.0 This collection is no longer used by
           SQLAlchemy's built-in dialects, in favor of the currently
           internal ``_insertmanyvalues`` collection that is used only by
           :class:`.SQLCompiler`.

        N)r;  r7  r/  s    rþ   Úinsert_single_values_exprz%SQLCompiler.insert_single_values_exprÎ  s%   € ð ×!Ñ!Ð)Øà×)Ñ)×<Ñ<Ð<rý   c                óÞ   — | j                   r| j                   S | j                  �Dt        | j                  «      r/| j                  j                  D �cg c]  }t	        |«      r|‘Œ c}S yc c}w )aâ  The effective "returning" columns for INSERT, UPDATE or DELETE.

        This is either the so-called "implicit returning" columns which are
        calculated by the compiler on the fly, or those present based on what's
        present in ``self.statement._returning`` (expanded into individual
        columns using the ``._all_selected_columns`` attribute) i.e. those set
        explicitly using the :meth:`.UpdateBase.returning` method.

        .. versionadded:: 2.0

        N)r&  r   r(   Ú_all_selected_columnsr'   )r  Úcs     rþ   Úeffective_returningzSQLCompiler.effective_returningá  sl   € ð ×"Ò"Ø×*Ñ*Ð*Ø�^‰^Ð'¬F°4·>±>Ô,Bð Ÿ™×=Ò=óá=�AÜ$ QÔ'ò Ø=ñð ð ùòs   ÁA*c                ó   — | j                   S )zVbackwards compatibility; returns the
        effective_returning collection.

        )rw  r/  s    rþ   Ú	returningzSQLCompiler.returningú  s   € ð ×'Ñ'Ð'rý   c                ób   — 	 | j                   d   d   S # t        $ r}t        d«      |‚d}~ww xY w)a±  Return the current 'executable' that is being compiled.

        This is currently the :class:`_sql.Select`, :class:`_sql.Insert`,
        :class:`_sql.Update`, :class:`_sql.Delete`,
        :class:`_sql.CompoundSelect` object that is being compiled.
        Specifically it's assigned to the ``self.stack`` list of elements.

        When a statement like the above is being compiled, it normally
        is also assigned to the ``.statement`` attribute of the
        :class:`_sql.Compiler` object.   However, all SQL constructs are
        ultimately nestable, and this attribute should never be consulted
        by a ``visit_`` method, as it is not guaranteed to be assigned
        nor guaranteed to correspond to the current statement being compiled.

        .. versionadded:: 1.3.21

            For compatibility with previous versions, use the following
            recipe::

                statement = getattr(self, "current_executable", False)
                if statement is False:
                    statement = self.stack[-1]["selectable"]

            For versions 1.4 and above, ensure only .current_executable
            is used; the format of "self.stack" may change.


        éÿÿÿÿr$   z$Compiler does not have a stack entryN)r€  Ú
IndexError)r  Úies     rþ   Úcurrent_executablezSQLCompiler.current_executable  s;   € ð<	MØ—:‘:˜b‘> ,Ñ/Ð/øÜò 	MÜÐCÓDÈ"ÐLûð	Mús   ‚ ”	.�)©.c                óX   — t        | j                  «      t        | j                  «      z   S r  )Úlistr#  r$  r/  s    rþ   ÚprefetchzSQLCompiler.prefetch%  s#   € ä�D×(Ñ(Ó)¬D°×1EÑ1EÓ,FÑFÐFrý   c                ó   — i S r  rü   r/  s    rþ   Ú_global_attributeszSQLCompiler._global_attributes)  s   € àˆ	rý   c                óf   — t        j                  «       }|| _        i | _        i | _        d| _        |S )z’Initialize collections related to CTEs only if
        a CTE is located, to save on the overhead of
        these collections otherwise.

        F)r&   ÚOrderedDictrD  rE  rF  rG  )r  rD  s     rþ   Ú_init_cte_statezSQLCompiler._init_cte_state-  s:   € ô *.×)9Ñ)9Ó);ˆØˆŒ	ð #%ˆÔð "$ˆÔà#ˆÔàˆrý   c              #  óh  K  — | j                   | j                  }}g dc| _         | _        	 | j                  r| j                  d   }d|d<   nd}| j                   | j                  f–— |r|j                  d«       ||c| _         | _        y# r|j                  d«       ||c| _         | _        w xY w­w)z;special API to support the use case of 'nested result sets'Fr{  Tr  N)r•  r2  r€  rv  )r  Úresult_columnsÚordered_columnsÚentrys       rþ   Ú_nested_resultzSQLCompiler._nested_resultE  sÂ   è ø€ ð × Ñ Ø×!Ñ!ð (ˆð 79¸%Ð3ˆÔ˜dÔ3ð	Ø�zŠzØŸ
™
 2™�Ø6:�Ð2Ò3à�Ø×&Ñ&¨×(=Ñ(=Ð=Ò=áØ—	‘	Ð6Ô7àØð 8ˆDÔ  $Õ"7øñ Ø—	‘	Ð6Ô7àØð 8ˆDÔ  $Õ"7üs   ‚(B2«=B Á(#B2Â$B/Â/B2c                ó  ‡‡	— | j                   rJ ‚| j                  t        j                  u sJ ‚| j                  rJ ‚| j
                  j                  dk(  rdŠn| j
                  j                  dk(  sJ ‚dŠg Š	dˆˆ	fd„}t        j                  | j                  || j                  «      | _
        | j                  rv| j                  j                  «       D ��ci c]  \  }}||“Œ
 }}}t        | j                  «      t        |«      k(  sJ ‚‰	D �cg c]  }|j                  ||«      ‘Œ c}| _         n‰	| _         | j                  r¬g Š	t        j                  | j                  || j                  j                   «      }| j                  j"                  D �cg c]3  }|d   |d   t        j                  | j                  ||d   «      |d	   f‘Œ5 }}| j                  j%                  ||¬
«      | _        y y c c}}w c c}w c c}w )NrÀ   ú%sr¿   r½   c                ó²   •— | j                  d«      }|r‰j                  |«       ‰S ‰j                  | j                  d«      «       | j                  d«      S )Nr   r6   r   )r†   Úappend)ÚmÚnormal_bindÚplaceholderÚ	positionss     €€rþ   Úfind_positionz6SQLCompiler._process_positional.<locals>.find_positionj  sM   ø€ ØŸ'™' !›*ˆKÙØ× Ñ  Ô-Ø"Ð"ð × Ñ  §¡¨£Ô,Ø—w‘w˜q“zÐ!rý   r   r   r6   r  ©r7  r9  )r�  zre.Match[str]r  rï   )r%  r“  r`  rb  r4  r¢  rY  rL  ÚsubÚ_positional_patternr’  r?  rg  ÚlenÚgetr;  r7  r9  Ú_replace)
r  r”  rp  rq  Úreverse_escaperñ   r7  r9  r’  r“  s
           @@rþ   ri  zSQLCompiler._process_positional]  sü  ù€ Ø×#Ò#Ð#Ð#Ø�z‰zœ]×9Ñ9Ñ9Ð9Ð9Ø×&Ò&Ð&Ð&à�<‰<×"Ñ" hÒ.Ø‰Kà—<‘<×*Ñ*¨gÒ5Ð5Ð5ØˆKàˆ	ö	"ô —f‘fØ×$Ñ$ m°T·[±[ó
ˆŒð ×"Ò"Ø/3×/FÑ/F×/LÑ/LÔ/NÔOÑ/N¡t q¨!˜a ™dÐ/NˆNÑOÜ�t×.Ñ.Ó/´3°~Ó3FÒFÐFÐFá;Dó Ù;D°4�×"Ñ" 4¨Õ.¸9ñ ˆDÕð  )ˆDÔà×!Ò!ØˆIä!#§¡Ø×(Ñ(ØØ×&Ñ&×9Ñ9ó"Ðð ×/Ñ/×BÒBó"ñ C�Að �a‘DØ�a‘DÜ—F‘F˜4×3Ñ3°]ÀAÀaÁDÓIØ�a‘Dò	ð Cð ð "ð &*×%;Ñ%;×%DÑ%DØ#5Ø#5ð &Eó &ˆDÕ"ð% "ùó Pùò ùò"s   ÃG1ÄG7Æ8G<c                ót  ‡ ‡— ‰ j                   sJ ‚‰ j                  t        j                  u sJ ‚d}i Š‰ j                  r\‰ j
                  �Pt        j                  ˆ fd„‰ j                  j                  «       D «       ‰ j                  j                  «       «      }n‰ j                  j                  «       }|D ]R  }|‰v rŒ‰ j                  |   }|‰ j                  v s|‰ j                  v rd ‰|<   Œ9‰ j                  › |› �}|dz  }|‰|<   ŒT |‰ _        t        ‰«      ‰ _        ‰ j"                  rYt%        ‰«      }‰j'                  «       D ��ci c]"  \  }}‰ j"                  j)                  ||«      |“Œ$ c}}Št%        ‰«      |k(  sJ ‚‰ j*                  j-                  ˆfd„‰ j.                  «      ‰ _        ‰ j                  rl‰ j                  j0                  ‰z  }	‰ j                  j2                  D �
cg c]  }
|
d   |
d   d|
d   f‘Œ }}
‰ j                  j5                  |	|¬«      ‰ _        y y c c}}w c c}
w )Nr   c              3  ó>   •K  — | ]  }|‰j                   vr|–— Œ y ­wr  )rA  )r*  rñ   r  s     €rþ   r,  z/SQLCompiler._process_numeric.<locals>.<genexpr>¤  s'   øè ø€ ð á 8˜Ø 4×#9Ñ#9Ñ9ô Ù 8ùó   ƒc                ó,   •— ‰| j                  d«         S ©Nr   ©r†   ©r�  Ú	param_poss    €rþ   Ú<lambda>z.SQLCompiler._process_numeric.<locals>.<lambda>Ë  s   ø€ �i §¡¨£
Ò+rý   r   r�  r  r•  )r4  r“  r`  rb  r;  rA  Ú	itertoolsÚchainr)  Úvaluesr(  r>  r=  r/  Únext_numeric_posr€  r%  r?  r˜  rg  r™  Ú_pyformat_patternr–  r’  r7  r9  rš  )r  ÚnumrŠ   Ú	bind_nameÚbindÚphÚ
len_beforerñ   Úposr7  rq  r9  r£  s   `           @rþ   rh  zSQLCompiler._process_numeric˜  sN  ù€ Ø×"Ò"Ð"Ð"Ø�z‰zœ]×9Ñ9Ñ9Ð9Ð9àˆØ$&ˆ	à×!Ò! d×&<Ñ&<Ð&Hô —O‘Oóà $§¡× 6Ñ 6Ô 8óð
 —‘×&Ñ&Ó(ó‰Eð —O‘O×*Ñ*Ó,ˆEãˆIØ˜IÑ%ØØ—:‘:˜iÑ(ˆDà˜×0Ñ0Ñ0Ø˜4×6Ñ6Ñ6ð (,�	˜)Ò$à×;Ñ;Ð<¸S¸EÐB�Ø�q‘�Ø')�	˜)Ò$ð ð  !$ˆÔä 	›?ˆÔØ×"Ò"Ü˜Y›ˆJð "+§¡Ô!2ôá!2‘I�D˜#ð ×'Ñ'×+Ñ+¨D°$Ó7¸Ñ<Ø!2òˆIô �y“> ZÒ/Ð/Ð/ð ×,Ñ,×0Ñ0Û+¨T¯[©[ó
ˆŒð ×!Ò!ð ×&Ñ&×9Ñ9Øñð ð ×/Ñ/×BÒBó"áB�Að �1‘�q˜‘t˜T 1 Q¡4Ò(ØBð ð "ð
 &*×%;Ñ%;×%DÑ%Dà#5à#5ð	 &Eó &ˆDÕ"ð "ùóùò$"s   Å'H/Ç3H5c                óf   ‡ — ˆ fd„‰ j                   D «       D ��ci c]
  \  }}|�||“Œ c}}S c c}}w )Nc           	   3  ó  •K  — | ]„  }‰j                   |   |j                  j                  s%|j                  j                  ‰j                  «      n5t        ˆfd „t        t        |j                  «      j                  D «       «      f–— Œ† y­w)c              3  óT   •K  — | ]  }|j                  ‰j                  «      –— Œ! y ­wr  )Ú_cached_bind_processorr¢  )r*  Ú	elem_typer  s     €rþ   r,  z9SQLCompiler._bind_processors.<locals>.<genexpr>.<genexpr>ñ  s,   øè ø€ ð #ñ.$ 	ð &×<Ñ<¸T¿\¹\×Jñ.$ùs   ƒ%(N)	r)  rõ   Ú_is_tuple_typer³  r¢  r.  r   r2   Útypes)r*  Ú	bindparamr  s     €rþ   r,  z/SQLCompiler._bind_processors.<locals>.<genexpr>ë  s   øè ø€ ð ñ "1�Ið —O‘O IÑ.ð  )Ÿ~™~×<Ò<ð "Ÿ™×=Ñ=¸d¿l¹lÔKä"ó #ä-1Ü )¨9¯>©>ó.ç#™eð.$ó#ó ôñ "1ùs   ƒB
B)r)  )r  r+  Úvalues   `  rþ   Ú_bind_processorszSQLCompiler._bind_processorsá  sL   ø€ óð "&§¢ôô
ñ‘
��Uð  Ð ð# �‰Jðò
ð 	
ùó 
s   š-c                ó2   — t        | j                  «      dkD  S r   )r˜  r€  r/  s    rþ   Úis_subqueryzSQLCompiler.is_subqueryþ  s   € Ü�4—:‘:‹ Ñ"Ð"rý   c                ó   — | S r  rü   r/  s    rþ   rÈ  zSQLCompiler.sql_compiler  s   € àˆrý   c                óL   — | j                  ||d¬«      }| j                  |«      S )aR  Return a new :class:`.ExpandedState` for a given parameter set.

        For queries that use "expanding" or other late-rendered parameters,
        this method will provide for both the finalized SQL string as well
        as the parameters that would be used for a particular parameter set.

        .. versionadded:: 2.0.0rc1

        TrR  )rÕ  rj  )r  rÒ  rÔ  r!  s       rþ   Úconstruct_expanded_statez$SQLCompiler.construct_expanded_state  s:   € ð ×*Ñ*ØØ%Ø ð +ó 
ˆ
ð
 ×7Ñ7Øó
ð 	
rý   c                óº  — | j                   rF|sD| j                  €J ‚|st        | j                  j                  «      S t	        j
                  d«      ‚|xr t        | j                  «      }|rq| j                  €t	        j                  d«      ‚| j                  d   }| j                  }	|	€J ‚|	\  }
}t        ||«      D ���ci c]  \  }}|
|   D ]  }||“Œ Œ }}}}nd}|�ri }| j                  j                  «       D ]ï  \  }}|r| j                  j                  ||«      n|}|j                  |v r||j                     ||<   ŒG||v r	||   ||<   ŒT|rX|j                   rL|r&t	        j
                  d|j                  |fz  d¬«      ‚t	        j
                  d|j                  z  d¬«      ‚|r|j                  ||«      }n|}|j"                  r|j$                  ||<   Œá|j&                  ||<   Œñ |S i }| j                  j                  «       D ]Á  \  }}|r| j                  j                  ||«      n|}|rX|j                   rL|r&t	        j
                  d|j                  |fz  d¬«      ‚t	        j
                  d|j                  z  d¬«      ‚|r|j                  ||«      }n|}|j"                  r|j$                  ||<   Œ³|j&                  ||<   ŒÃ |S c c}}}w )	z5return a dictionary of bind parameter keys and valuesNzÂcan't construct new parameters when render_postcompile is used; the statement is hard-linked to the original parameters.  Use construct_expanded_state to generate a new statement and parameters.zcThis compiled object has no original cache key; can't pass extracted_parameters to construct_paramsr   z@A value is required for bind parameter %r, in parameter group %dÚcd3x)Úcodez)A value is required for bind parameter %r)r5  r6  Údictr!  r7   r-  r  r?  rž  ÚCompileErrorr@  Úzipr)  rg  r™  r+  ÚrequiredÚcallableÚeffective_valuer¸  )r  rÒ  rÓ  rÔ  Ú_group_numberÚ_checkrS  Úhas_escaped_namesÚorig_extractedÚ
ckbm_tuplern  r  rl  Ú	extractedr¬  Úresolved_extractedÚpdr·  rñ   Úescaped_nameÚvalue_params                        rþ   rÕ  zSQLCompiler.construct_params  s?  € ð ×#Ò#©OØ×4Ñ4Ð@Ð@Ð@ÙÜ˜D×=Ñ=×HÑHÓIÐIä×-Ñ-ð4óð ð )ÒJ¬T°$×2IÑ2IÓ-JÐáð �~‰~Ð%Ü×&Ñ&ðJóð ð
 "&§¡°Ñ!2�à×3Ñ3ˆJØÐ)Ð)Ð)Ø ‰GˆD�!ô %(¨Ð8LÔ$Mõ"á$M‘L�A�yØ  œG�Dð �i‘à#ð Ø$Mð ó "ð "&ÐâØˆBØ#'§?¡?×#8Ñ#8Ö#:‘�	˜4ñ )ð ×+Ñ+×/Ñ/°°dÔ;àð ð —=‘= FÑ*Ø'-¨i¯m©mÑ'<�B�|Ò$Ø˜V‘^Ø'-¨d¡|�B�|Ò$á 	× 2Ò 2Ù$Ü!×5Ñ5ð4à(Ÿ}™}¨mÐ<ñ=ð "(ô	ð ô "×5Ñ5ØGØ'Ÿm™mñ,à!'ôð ñ *Ø&8×&<Ñ&<Ø% yó'™ð '0˜à ×)Ò)Ø+6×+FÑ+F˜˜<Ò(à+6×+<Ñ+<˜˜<Ò(ðK $;ðL ˆIàˆBØ#'§?¡?×#8Ñ#8Ö#:‘�	˜4ñ )ð ×+Ñ+×/Ñ/°°dÔ;àð ñ ˜i×0Ò0Ù$Ü!×5Ñ5ð4à(Ÿ}™}¨mÐ<ñ=ð "(ô	ð ô "×5Ñ5ØGØ'Ÿm™mñ,à!'ôð ñ &Ø"4×"8Ñ"8¸ÀIÓ"N‘Kà"+�Kà×%Ò%Ø'2×'BÑ'B�B�|Ò$à'2×'8Ñ'8�B�|Ò$ð= $;ð@ ˆIùôg"s   ÃKc                óž  ‡‡‡‡	— | j                   Š‰j                  Š	‰j                  Š‰j                  Šˆˆˆˆ	fd„}i }| j                  }| j
                  D ]n  }||v rŒ|j                  j                  r<t        t        |j                  «      j                  D �cg c]
  } ||«      ‘Œ c}||<   ŒZ ||j                  «      ||<   Œp |S c c}w )Nc                óf   •— | j                  ‰«      j                  ‰«      }|�‰�|‰vr‰�|‰v r|S y r  )Ú_unwrapped_dialect_implÚget_dbapi_type)ÚtypÚdbtypeÚdbapir¢  Úexclude_typesÚinclude_typess     €€€€rþ   Úlookup_typez<SQLCompiler._get_set_input_sizes_lookup.<locals>.lookup_type¥  sH   ø€ Ø×0Ñ0°Ó9×HÑHÈÓOˆFð Ð"Ø"Ð*¨f¸MÑ.IØ"Ð*¨f¸Ñ.Eà�àrý   )r¢  Úinclude_set_input_sizesÚexclude_set_input_sizesrØ  r=  r)  rõ   rµ  r   r2   r¶  )
r  rÛ  Ú
inputsizesr=  r·  rÖ  rØ  r¢  rÙ  rÚ  s
         @@@@rþ   Ú_get_set_input_sizes_lookupz'SQLCompiler._get_set_input_sizes_lookupœ  sÆ   û€ à—,‘,ˆà×7Ñ7ˆØ×7Ñ7ˆà—‘ˆ÷
	ð ˆ
à!%×!<Ñ!<ÐàŸœˆIØÐ2Ñ2Øà�~‰~×,Ò,ô  $¤I¨y¯~©~Ó>×DÒDó)áD˜ñ   Õ$ØDñ)�
˜9Ò%ñ
 )4°I·N±NÓ(C�
˜9Ò%ð )ð Ðùò)s   ÂC
c                ó&   — | j                  d¬«      S )zýReturn the bind param dictionary embedded into this
        compiled object, for those values that are present.

        .. seealso::

            :ref:`faq_sql_expression_string` - includes a usage example for
            debugging use cases.

        F)rÉ  r×  r/  s    rþ   rÒ  zSQLCompiler.paramsÃ  s   € ð ×$Ñ$¨EÐ$Ó2Ð2rý   c                ó¬  ‡‡‡‡‡— i }| j                   }|€| j                  }| j                  rg }| j                  }|€| j                  }ndx}}| j
                  }t        d|«      Št        d|«      Ši }i Ši }	d}
| j                  r|�|}| j                  rg }
n| j                  j                  «       }| j                  }|D �]‹  Š|r|j                  ‰‰«      n‰}| j                  ‰   }|| j                  v r*|‰vr%| j                  ||j                  |«      ¬«      ‰|<   Œa|| j                   v �r|‰v r|	|   }d}n3|j                  ‰«      }| j#                  |||«      }|\  }}||	|<   |‰|<   |j$                  rŒ¼|j'                  |«       |j(                  j*                  r*|€J ‚|j'                  ˆˆfd„t-        |d«      D «       «       n|j'                  ˆˆfd„|D «       «       |
�|
j/                  d„ |D «       «       n|�|j/                  d	„ |D «       «       |D ��cg c]  \  }}|‘Œ	 c}}|‰<   �Œw|€�Œ{|j1                  ‰«       �ŒŽ ˆfd
„}t3        j4                  | j6                  ||«      }|
�l|€J ‚t-        |
| j8                  «      D ��ci c]  \  }}|| j:                  › |› �“Œ c}}Š| j<                  j5                  ˆfd„|«      }|j/                  |
«       t?        |||||«      }|rR|| _         || _        |j@                  | _        | j                  rtC        |j                  xs d«      nd| _        || _"        |S c c}}w c c}}w )až  handle special post compile parameters.

        These include:

        * "expanding" parameters -typically IN tuples that are rendered
          on a per-parameter basis for an otherwise fixed SQL statement string.

        * literal_binds compiled with the literal_execute flag.  Used for
          things like SQL Server "TOP N" where the driver does not accommodate
          N as a bound parameter.

        Nr"  z/Mapping[str, Sequence[_BindProcessorType[Any]]]©Úrender_literal_valuec              3  ó”   •K  — | ]?  \  }}t        |d «      D ]+  \  }}‰‰v r"‰‰   |d z
     �‰›d|›d|›�‰‰   |d z
     f–— Œ- ŒA y­w)r   Nr  )Ú	enumerate)r*  ÚiÚtuple_elementÚjr  rñ   Útuple_processorss        €€rþ   r,  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>=  sy   øè ø€ ð 	.ñ
 5IÑ 0  =Ü(1°-ÀÖ(C¡  1Ø#Ð'7Ñ7Ø 0°Ñ 6°q¸1±uÑ =Ð Iò /3²A±qÐ 9Ø 0°Ñ 6°q¸1±uÑ =ôð
 )Dðñ 5Iùs   ƒAAr   c              3  ó:   •K  — | ]  \  }}‰‰v r	|‰‰   f–— Œ y ­wr  rü   )r*  r+  r  rñ   Úsingle_processorss      €€rþ   r,  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>H  s1   øè ø€ ð .á*3¡  QØ#Ð'8Ñ8ð !Ð"3°DÑ"9Ô:Ù*3ùó   ƒc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  rü   ©r*  rñ   r  s      rþ   r,  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>N  s   è ø€ ð 3Ù09¡W T¨1œD±	ùó   ‚c              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  rü   rî  s      rþ   r,  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>U  s   è ø€ Ð.MÁ9¹¸¸a¬tÁ9ùrï  c                ó  •‡‡— | j                  d«      }‰|   }| j                  d«      rU| j                  d«      j                  d«      }|d   |d   cŠŠdj                  ˆˆfd„|j                  d«      D «       «      }|S )Nr   r6   ú~~r  rÇ   c              3  ó.   •K  — | ]  }‰›|›‰›�–— Œ y ­wr  rü   )r*  ÚexpÚbe_leftÚbe_rights     €€rþ   r,  z]SQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding.<locals>.<genexpr>e  s    øè ø€ ð !á/˜ñ !(©©hÔ7Ù/ùs   ƒ)r†   Úsplitrw   )r�  r+  ÚexprÚtokrõ  rö  Úreplacement_expressionss       @@€rþ   Úprocess_expandingzJSQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding\  s~   ú€ Ø—'‘'˜!“*ˆCØ*¨3Ñ/ˆDð �w‰w�qŒzØ—g‘g˜a“j×&Ñ& tÓ,�Ø$'¨¡F¨C°©FÐ!�˜Ø—y‘yô !à#Ÿz™z¨$Ô/ó!ó �ð ˆKrý   c                ó,   •— ‰| j                  d«         S r   r¡  r¢  s    €rþ   r¤  zASQLCompiler._process_parameters_for_postcompile.<locals>.<lambda>y  s   ø€ ˜) A§G¡G¨A£JÒ/rý   rü   )#r8  r’  rQ  r:  r%  r¹  r   r4  r)  r§  r?  r™  r(  r=  Úrender_literal_bindparamrv  r>  Ú$_literal_execute_expanding_parameterÚliteral_executerf  rõ   rµ  rå  Úextendr�  rL  r–  Ú_post_compile_patternr¨  r/  r©  r  r   r€  r6  )r  r!  rT  Úexpanded_parametersÚpre_expanded_stringÚnew_positiontupÚpre_expanded_positiontupr#  Únew_processorsÚto_update_setsÚnumeric_positiontupÚnamesÚebnrÐ  Ú	parameterÚ	to_updater§  Úleep_resÚreplacement_exprÚ
expand_keyr  rû  r   rª  r+  Úexpanded_staterñ   r£  rú  rë  ré  s                             @@@@@rþ   rj  z/SQLCompiler._process_parameters_for_postcompileÐ  sé  ü€ ð$ !Ðð #×7Ñ7ÐØÐ&Ø"&§+¡+Ðà�?Š?Ø ˆOà'+×'EÑ'EÐ$Ø'Ð/Ø+/×+;Ñ+;Ñ(ð :>Ð=ˆOÐ6à×*Ñ*ˆ
Ü Ø3°Zó
Ðô  Ø=¸zó
Ðð >@ˆà24ÐØ)+ˆð 48Ðà�?Š?Ð7ÐCØ#;ˆEØ×"Ò"Ø&(Ñ#à—O‘O×*Ñ*Ó,ˆEà×%Ñ%ˆÜˆDÙ25˜3Ÿ7™7 4¨Ô.¸4ˆLØŸ
™
 4Ñ(ˆIà˜D×7Ñ7Ñ7ØÐ'>Ñ>à×5Ñ5Ø%Ø1;·±ÀÓ1Mð 6ó ð ,¨LÑ9ð à˜D×4Ñ4Ò4ØÐ#:Ñ:Ø .¨|Ñ <�IØ!‘Fð (Ÿ^™^¨DÓ1�Fà#×HÑHØ$ i°ó �Hð 5=Ñ1�YÐ 0à3<�N <Ñ0Ø<LÐ+¨LÑ9à ×0Ó0Ø×%Ñ% iÔ0Ø —~‘~×4Ò4Ø%Ð1Ð1Ð1Ø&×-Ñ-ô 	.ô
 5>¸fÀaÔ4Hó	.õ 	ð '×-Ñ-ô .á*3ó.ô ð
 +Ð6Ø+×2Ñ2ñ 3Ù09ó3õ ð )Ð4ð (×.Ñ.Ñ.MÁ9Ó.MÔMá8Aô1Ù8A¡} z°1š
¸	ò1Ð'¨Ó-ð !Ò,Ø×&Ñ& tÖ,ðS ôV	ô —F‘FØ×&Ñ&Ð(9Ð;Nó
ˆ	ð Ð*Ø"Ð.Ð.Ð.ô !*Ø'¨×)>Ñ)>ô!ôñ!‘H�C˜ð ˜×;Ñ;Ð<¸S¸EÐBÑBð!òˆIð ×.Ñ.×2Ñ2Û/°óˆIð ×"Ñ"Ð#6Ô7ä&ØØØØØó
ˆñ ð )<ˆDÔ%Ø-EˆDÔ*Ø(×2Ñ2ˆDŒKð —?’?ô �^×/Ñ/Ò5°2Ô6àð Ôð
 1?ˆDÔ-àÐùó{1ùó6s   È$M
ÊMzsqlalchemy.engine.cursorc                ó€   — t         j                  j                  }|j                  j	                  | j
                  «      S )z(utility method used for unit tests only.)r&   Ú	preloadedÚengine_cursorrT   Ú_create_description_match_mapr•  )r  Úcursors     rþ   Ú_create_result_mapzSQLCompiler._create_result_map•  s5   € ô —‘×-Ñ-ˆØ×*Ñ*×HÑHØ× Ñ ó
ð 	
rý   Ú_BindNameForColProtocolÚ_get_bind_name_for_colc                ó   — | j                   }|S r  )r  )r  Úgetters     rþ   Ú_within_exec_param_key_getterz)SQLCompiler._within_exec_param_key_getter   s   € à×,Ñ,ˆØˆrý   zsqlalchemy.engine.resultc           	     ó”  ‡‡	‡
‡‡‡— t         j                  j                  }| j                  }| j                  €J ‚| j                  j
                  }t        rt        |t        «      sJ ‚|j                  }|j                  D �cg c]!  }t        j                  d ||«      d «      |f‘Œ# c}Šd Š	|j                  Š‰�D‰j                  j                  | j                   d «      Š |‰«      Š
‰
| j"                  v r
ˆ
fd„}|Š	nd Š|j%                  |j                  D �cg c]  }|j&                  ‘Œ c}«      Šˆˆ	ˆˆˆfd„}|S c c}w c c}w )Nr™  c                ó4   •— |j                  ‰| «      }|�|S | S r  ©r™  )Ú	lastrowidr!  Úparam_valueÚautoinc_keys      €rþ   Ú_autoinc_getterzPSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>._autoinc_getterÉ  s)   ø€ Ø",§.¡.°¸iÓ"H�KØ"Ð.ð
  +Ð*ð  )Ð(rý   c                ój   •‡ ‡— ‰� ‰‰ «      Š ‰ € ‰ˆfd„‰D «       «      S  ‰ˆˆˆ ˆfd„‰D «       «      S )a  given cursor.lastrowid value and the parameters used for INSERT,
            return a "row" that represents the primary key, either by
            using the "lastrowid" or by extracting values from the parameters
            that were sent along with the INSERT.

            c              3  ó4   •K  — | ]  \  }} |‰«      –— Œ y ­wr  rü   )r*  r  ró  r!  s      €rþ   r,  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>è  s   øè ø€ ÐLÁG±[°V¸S™f Z×0ÁGùó   ƒc              3  óV   •K  — | ]   \  }}|‰u r‰�	 ‰‰‰«      n	‰n |‰«      –— Œ" y ­wr  rü   )r*  r  ró  Úautoinc_colÚautoinc_getterr  r!  s      €€€€rþ   r,  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>ê  sL   øè ø€ ð ñ (/™˜ ð  +Ñ-ð  .Ð9ñ +¨9°jÔAá!*ñ $ JÓ/ó0ñ (/ùó   ƒ&)rü   )r  r!  r'  r(  ÚgettersÚlastrowid_processorÚrow_fns   ``€€€€€rþ   r™  zDSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.getÝ  sH   ú€ ð #Ð.Ù/°	Ó:�	àÐ ÙÓLÁGÓLÓLÐLáö ñ (/óó ð rý   )r&   r  Úengine_resultr  r  r   r   r§  rA   r�   Úprimary_keyÚoperatorÚmethodcallerÚ_autoincrement_columnrõ   Ú_cached_result_processorr¢  r(  Úresult_tupler+  )r  ÚresultÚparam_key_getterr   r�   ró  r"  r™  r'  r(  r!  r*  r+  r,  s           @@@@@@rþ   Ú+_inserted_primary_key_from_lastrowid_getterz7SQLCompiler._inserted_primary_key_from_lastrowid_getter¥  sM  ý€ ô —‘×-Ñ-ˆà×=Ñ=Ðà×!Ñ!Ð-Ð-Ð-Ø×&Ñ&×0Ñ0ˆ	åÜ˜i¬Ô0Ð0Ð0à—‘ˆð ×(Ò(ó
á(�ô ×"Ñ" 5Ñ*:¸3Ó*?ÀÓFÈÒLØ(ñ
ˆð
 ˆØ×1Ñ1ˆØÐ"à"-×"2Ñ"2×"KÑ"KØ—‘˜dó#Ðñ +¨;Ó7ˆKð ˜dŸj™jÑ(ô
)ð "1‘ð #'Ðà×$Ñ$¸×9JÒ9JÓ%KÑ9J°# c§g£gÐ9JÑ%KÓLˆ÷	ð 	ð4 ˆ
ùòG
ùòN &Ls   Â&E ÄEc                óÀ  ‡
‡— t         j                  rddlm} nt        j
                  j                  }| j                  €J ‚| j                  j                  }t        rt        |t        «      sJ ‚| j                  }|j                  }| j                  }|€J ‚t        |«      D ��ci c]  \  }}||“Œ
 }}}t        d|j                   D �cg c]?  }||v rt#        j$                  ||   «      dfnt#        j&                  d ||«      d «      df‘ŒA c}«      Š
|j)                  |j                   D �cg c]  }|j*                  ‘Œ c}«      Šˆ
ˆfd„}	|	S c c}}w c c}w c c}w )Nr6   )r4  z'List[Tuple[Callable[[Any], Any], bool]]Tr™  Fc                ó,   •‡ ‡—  ‰ˆˆ fd„‰D «       «      S )Nc              3  óH   •K  — | ]  \  }}|r |‰«      n |‰«      –— Œ y ­wr  rü   )r*  r  Úuse_rowr!  Úrows      €€rþ   r,  zWSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get.<locals>.<genexpr>"	  s-   øè ø€ ð á'.‘O�F˜Gñ  '‘�s”©F°:Ó,>Ó>Ù'.ùrr  rü   )r;  r!  r*  r,  s   ``€€rþ   r™  zDSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get!	  s   ú€ Ùô á'.óó ð rý   )Útypingr   Úenginer4  r&   r  r-  r  r   r§  rA   r  r�   r&  rå  r   r.  r/  Ú
itemgetterr0  r3  r+  )r  r4  r   r5  r�   ry  Úidxró  Úretr™  r*  r,  s             @@rþ   Ú+_inserted_primary_key_from_returning_getterz7SQLCompiler._inserted_primary_key_from_returning_getterù  sk  ù€ ô ×ÒÞ'ä—^‘^×1Ñ1ˆFà×!Ñ!Ð-Ð-Ð-Ø×&Ñ&×0Ñ0ˆ	åÜ˜i¬Ô0Ð0Ð0à×=Ñ=ÐØ—‘ˆà×+Ñ+ˆ	ØÐ$Ð$Ð$Ü(1°)Ô(<Ô=Ñ(<™H˜C ˆs�C‰xÐ(<ˆÑ=äØ5ð !×,Ò,óñ -�Cð ˜c‘zô ×(Ñ(¨¨S©Ó2°DÑ9ô !×-Ñ-Ø!Ñ#3°CÓ#8¸$óð ð	ñð -ñó
ˆð" ×$Ñ$¸×9JÒ9JÓ%KÑ9J°# c§g£gÐ9JÑ%KÓLˆõ	ð ˆ
ùó7 >ùòùò &Ls   Â&EÃ
AE
Ä.Ec                 ó   — y)z´Called when a SELECT statement has no froms, and no FROM clause is
        to be appended.

        Gives Oracle a chance to tack on a ``FROM DUAL`` to the string output.

        r‘  rü   r/  s    rþ   Údefault_fromzSQLCompiler.default_from)	  s   € ð rý   c                óæ  —  |j                   j                  | fi |¤Ž}|j                  D �]C  }|| j                  vrŒ| j                  |   }|j	                  |j                  |j
                     dd¬«      }| j                  |   }|x| j                  |<   | j                  |<   || j                  |<   | j                  j                  |d«       || j                  v r| xj                  |hz  c_        || j                  v r| xj                  |hz  c_	        | j                  }|sŒü|\  }	}
|j                  D ]4  }|j
                  |
v sŒ|
|j
                     }|	|   j                  |«       Œ6 �ŒF |S )a’  SQL compile the nested element of an _OverrideBinds with
        bindparams swapped out.

        The _OverrideBinds is not normally expected to be compiled; it
        is meant to be used when an already cached statement is to be used,
        the compilation was already performed, and only the bound params should
        be swapped in at execution time.

        However, there are test cases that exericise this object, and
        additionally the ORM subquery loader is known to feed in expressions
        which include this construct into new queries (discovered in #11173),
        so it has to do the right thing at compile time as well.

        TF)Úmaintain_keyrÅ  N)rÁ  rË  Ú	translater(  Ú_with_valuer+  r)  rv  r>  r=  r@  Ú_cloned_setr�  )r  Úoverride_bindsrÃ  Úsqltextrp  ÚbpÚnew_bprñ   rÌ  rn  rm  Úcbs               rþ   Úvisit_override_bindsz SQLCompiler.visit_override_binds2	  s`  € ð" <�.×(Ñ(×;Ñ;¸DÑGÀBÑGˆð  ×)Õ)ˆAØ˜Ÿ
™
Ñ"ØØ—‘˜A‘ˆBð —^‘^Ø×(Ñ(¨¯©Ñ0Ø!Øð $ó ˆFð —?‘? 2Ñ&ˆDØ/5Ð5ˆD�J‰J�q‰M˜DŸJ™J tÑ,Ø&*ˆD�O‰O˜FÑ#Ø�O‰O×Ñ  DÔ)à�T×-Ñ-Ñ-Ø×(Ò(¨V¨HÑ4Õ(Ø�T×0Ñ0Ñ0Ø×+Ò+°¨xÑ7Õ+à×3Ñ3ˆJÚØ'‘
��dØŸ.œ.�BØ—v‘v ’~Ø! "§&¡&™\˜Ø˜R™Ÿ™¨Õ/ò )ð? *ðH ˆrý   c                óH   — d |j                   j                  | fi |¤Žz   dz   S ©Nr  r  ©rÁ  rË  )r  ÚgroupingÚasfromrÍ  s       rþ   Úvisit_groupingzSQLCompiler.visit_groupingr	  ó+   € ØÐ8�X×%Ñ%×8Ñ8¸ÑHÀÑHÑHÈ3ÑNÐNrý   c                óH   — d |j                   j                  | fi |¤Žz   dz   S rP  rQ  )r  rR  rÍ  s      rþ   Úvisit_select_statement_groupingz+SQLCompiler.visit_select_statement_groupingu	  rU  rý   c                óô  — | j                   r§| j                  j                  r‘	 t        d| j                   d   d   «      }|j                  \  }}}|r|}	n|}	|j                  j                  }
|
�E|
j                  |	v r7|
j                  |	|
j                     «      r|j                  j                  |d<    | j                  |j                  fd|i|¤ŽS # t        $ r}t        j                  d«      |‚d }~ww xY w)Nú'Union[SelectState, CompoundSelectState]r{  r  úECan't resolve label reference for ORDER BY / GROUP BY / DISTINCT etc.Úrender_label_as_labelÚwithin_columns_clause)r€  r¢  Úsupports_simple_order_by_labelr   ÚKeyErrorr7   rÃ  Ú_label_resolve_dictrÁ  Ú_order_by_label_elementrñ   Úshares_lineager©  )r  rÁ  r\  rÍ  r  ÚkeÚ	with_colsÚ
only_fromsÚ	only_colsÚresolve_dictÚorder_by_elems              rþ   Úvisit_label_referencez!SQLCompiler.visit_label_referencex	  s  € ð �:Š:˜$Ÿ,™,×EÒEð	Ü $Ø=Ø—J‘J˜r‘N ?Ñ3ó!�ð ×1Ñ1ñ	ØØØá$Ø)‘à(�ð $ŸO™O×CÑCˆMð Ð)Ø!×&Ñ&¨,Ñ6Ø!×0Ñ0Ø  ×!3Ñ!3Ñ4ôð
 —O‘O×;Ñ;ð Ð.Ñ/ð ˆt�|‰|Ø�O‰Oñ
à"7ð
ð ñ
ð 	
øôA ò Ü×&Ñ&ð/óð ðûðús   ¤C Ã	C7ÃC2Ã2C7c                ó>  — | j                   s| j                  |j                  «      S 	 t        d| j                   d   d   «      }j                  \  }}}	 |r||j                     }	n||j                     }	|	|d<    | j                  |	fd|i|¤ŽS # t        $ r;}t        j                  |j                  dt        j                  |¬«       Y d }~Œ‹d }~ww xY w# t        $ r;}
t        j                  |j                  dt        j                  |
¬«       Y d }
~
y d }
~
ww xY w)NrY  r{  r  rZ  )ÚextraÚexc_clsrÂ  r[  r\  )r€  r©  Ú_text_clauser   r^  r   Ú_no_text_coercionrÁ  r7   rÃ  r_  )r  rÁ  r\  rÍ  r  rb  rc  rd  re  ró  rÂ  s              rþ   Úvisit_textual_label_referencez)SQLCompiler.visit_textual_label_reference§	  s*  € ð �zŠzà—<‘< × 4Ñ 4Ó5Ð5ð	Ü Ø9Ø—
‘
˜2‘˜Ñ/óˆMð ,9×+LÑ+LÑ(ˆ	�:˜yð	Ù$Ø  §¡Ñ1‘à §¡Ñ0�ð /2ˆFÐ*Ñ+Ø�4—<‘<ØñØ+@ðØDJñð øô; ò 		Ü×'Ñ'Ø—‘ð/ô ×(Ñ(Ø÷ò ûð		ûô" ò 		Ü×'Ñ'Ø—‘ð/ô ×(Ñ(Ø÷ò ûð		ús/   ©B Á!C Â	CÂ1CÃCÃ	DÃ!1DÄDc                óH  — |xr | }||u }	|	s|rMt        |j                  t        j                  «      r| j	                  d|j                  «      }
n|j                  }
|rˆ|�1 |
|j                  ||
f|j
                  z   |z   |j                  «        |j                  j                  | fdddœ|¤Žt        t        j                     z   | j                  j                  |
«      z   S |	r| j                  j                  |
«      S  |j                  j                  | fddi|¤ŽS )NÚcolidentT)r\  Úwithin_label_clauser\  F)r§  rñ   r   rD   Ú_truncated_identifierrñ  rõ   rÁ  rË  Ú	OPERATORSr!   Úas_rš  Úformat_label)r  rï  Úadd_to_result_maprq  r\  r[  Úresult_map_targetsrÃ  Úrender_label_with_asÚrender_label_onlyÚ	labelnames              rþ   Úvisit_labelzSQLCompiler.visit_labelÔ	  s?  € ð "Ò=Ð*=Ð&=ð 	ð 2°UÐ:ÐáÑ 4Ü˜%Ÿ*™*¤h×&?Ñ&?Ô@Ø ×6Ñ6°zÀ5Ç:Á:ÓN‘	à!ŸJ™J�	áØ Ð,Ù!ØØ—J‘JØ˜IÐ&¨×)9Ñ)9Ñ9Ð<NÑNØ—J‘Jô	ð 1�—‘×0Ñ0Øðà*.Ø(,ñð ñ	ô œIŸM™MÑ*ñ+ð —-‘-×,Ñ,¨U°IÓ>ñ?ð	ñ Ø—=‘=×-Ñ-¨e°YÓ?Ð?à3�5—=‘=×3Ñ3ØñØ,1ðØ57ñð rý   c                ó,   — t        j                  d«      ‚)Nz:Cannot compile Column object until its 'name' is assigned.©r7   rÃ  ©r  r’   s     rþ   Ú_fallback_column_namez!SQLCompiler._fallback_column_name
  s   € Ü×ÑØHó
ð 	
rý   c                ó@   — |j                   } | j                  |fi |¤ŽS r  )Ú	_resolvedr©  )r  rÁ  rÃ  Úsql_elements       rþ   Úvisit_lambda_elementz SQLCompiler.visit_lambda_element

  s#   € Ø×'Ñ'ˆØˆt�|‰|˜KÑ.¨2Ñ.Ð.rý   c                óZ  — |j                   x}}|€| j                  |«      }|j                  }	|	s,t        |t        j
                  «      r| j                  d|«      }|�C|||j                  f|z   }
|j                  r|
|j                  fz  }
 ||||
|j                  «       |	r| j                  |«      }n| j                  j                  |«      }|j                  }|�|r|j                  s|S | j                  j                  |«      }|r| j                  j!                  |«      dz   }nd}t"        rt        |t$        «      sJ ‚|j                   }|s|r	||v r||   }t        |t        j
                  «      r| j                  d|«      }|| j                  j                  |«      z   dz   |z   S )Nrp  r  r‘  Úalias)rñ   r  Ú
is_literalr§  r   rD   rr  r+  Ú	_tq_labelrõ   Úescape_literal_columnrš  Úquoter�   Únamed_with_columnÚschema_for_objectÚquote_schemar   rO   )r  r’   rv  Úinclude_tablerw  Úambiguous_table_name_maprÍ  rñ   Ú	orig_namer†  Útargetsr�   Úeffective_schemaÚschema_prefixÚ	tablenames                  rþ   Úvisit_columnzSQLCompiler.visit_column
  sŸ  € ð "Ÿ;™;Ð&ˆˆyØˆ<Ø×-Ñ-¨fÓ5ˆDà×&Ñ&ˆ
Ùœj¨¬x×/HÑ/HÔIØ×-Ñ-¨j¸$Ó?ˆDàÐ(Ø˜t V§Z¡ZÐ0Ð3EÑEˆGØ×ÒØ˜F×,Ñ,Ð.Ñ.�á˜d I¨w¸¿¹ÔDáð ×-Ñ-¨dÓ3‰Dà—=‘=×&Ñ& tÓ,ˆDØ—‘ˆØˆ=¡°U×5LÒ5LØˆKà#Ÿ}™}×>Ñ>¸uÓEÐáà—M‘M×.Ñ.Ð/?Ó@À3ÑFñ ð !#�åÜ! %¬Ô9Ð9Ð9ØŸ
™
ˆIñ %Ù,ØÐ!9Ñ9à4°YÑ?�	ä˜)¤X×%>Ñ%>Ô?Ø ×6Ñ6°wÀ	ÓJ�	à  4§=¡=×#6Ñ#6°yÓ#AÑAÀCÑGÈ$ÑNÐNrý   c                óL   — | j                   j                  |j                  «      S r  )rš  Úformat_collationÚ	collation©r  rÁ  rÃ  s      rþ   Úvisit_collationzSQLCompiler.visit_collationI
  s   € Ø�}‰}×-Ñ-¨g×.?Ñ.?Ó@Ð@rý   c                ó   — |j                   S r  ©rñ   )r  Ú
fromclauserÍ  s      rþ   Úvisit_fromclausezSQLCompiler.visit_fromclauseL
  s   € Ø�‰Ðrý   c                ó   — |j                   S r  r›  )r  ro  rÍ  s      rþ   Úvisit_indexzSQLCompiler.visit_indexO
  s   € Ø�z‰zÐrý   c                óŒ   — ||d<   | j                   |d<    | j                  j                  j                  |j                  fi |¤ŽS )NÚtype_expressionr£  )rš  r¢  Útype_compiler_instancer©  rõ   )r  Ú
typeclauserÃ  s      rþ   Úvisit_typeclausezSQLCompiler.visit_typeclauseR
  sJ   € Ø *ˆÐÑØ$(§M¡MˆÐ Ñ!Ø:ˆt�|‰|×2Ñ2×:Ñ:Ø�O‰Oñ
Ø!ñ
ð 	
rý   c                óV   — | j                   j                  r|j                  dd«      }|S ©Nr  ú%%©rš  Ú_double_percentsÚreplace©r  Útexts     rþ   Úpost_process_textzSQLCompiler.post_process_textY
  ó$   € Ø�=‰=×)Ò)Ø—<‘<  TÓ*ˆDØˆrý   c                óV   — | j                   j                  r|j                  dd«      }|S r¦  r¨  r«  s     rþ   rˆ  z!SQLCompiler.escape_literal_column^
  r®  rý   c           	     óü   ‡ ‡‡— ˆˆ ˆfd„}‰ j                   sd‰ _        |r |d d ‰ft        j                  «       t        j                  d„ t        j                  |‰ j                  ‰j                  «      «      «      S )Nc                ó¨   •— | j                  d«      }|‰j                  v r  ‰j                  ‰j                  |   fi ‰¤ŽS  ‰j                  |fi ‰¤ŽS r   )r†   Ú_bindparamsr©  Úbindparam_string)r�  rñ   rÃ  r  Ú
textclauses     €€€rþ   Údo_bindparamz2SQLCompiler.visit_textclause.<locals>.do_bindparamd
  sW   ø€ Ø—7‘7˜1“:ˆDØ�z×-Ñ-Ñ-Ø#�t—|‘| J×$:Ñ$:¸4Ñ$@ÑGÀBÑGÐGà,�t×,Ñ,¨TÑ8°RÑ8Ð8rý   Tc                ó$   — | j                  d«      S r   r¡  )r�  s    rþ   r¤  z.SQLCompiler.visit_textclause.<locals>.<lambda>v
  s   € �a—g‘g˜a”jrý   )	r€  r'  r%   ÚNULLTYPEÚBIND_PARAMS_ESCr–  ÚBIND_PARAMSr­  r¬  )r  r´  rv  rÃ  rµ  s   `` ` rþ   Úvisit_textclausezSQLCompiler.visit_textclausec
  sl   ú€ ö	9ð �zŠzØ#ˆDÔáñ ˜d D¨:¨-¼×9JÑ9JÔKô ×"Ñ"Ù Ü�O‰OØ˜d×4Ñ4°Z·_±_ÓEóó
ð 	
rý   c                ó"  — | j                    }|r| j                  n| j                   d   }t        «       t        «       |dœ}| j                   j                  |«       |j                  r| j                  ||«       |xs- |dk(  xr |j                  dd«      xs |j                  dd«      }|rp|j                  x| _        | _	        |j                   xr t        |j                  «      | _        |j                  D ]   }	| j                  |	d| j                  ¬«       Œ"  | j                  |j                  fi |¤Ž}
| j                   r.|st#        | j                   «      nd }| j%                  |¬	«      |
z   }
| j                   j'                  d«       |
S )
Nr{  ©r  r  r$   r   r  Fr  T)r\  rv  ©Únesting_level)r€  Ú_default_stack_entryro   r�  Ú_independent_ctesÚ_dispatch_independent_ctesr™  rQ  r2  r0  r  Úcolumn_argsr3  r©  Ú_add_to_result_maprÁ  rD  r˜  Ú_render_cte_clauserv  )r  ÚtafÚcompound_indexrS  rÃ  ÚtoplevelrŠ  Ú	new_entryÚpopulate_result_maprv  r¬  r¾  s               rþ   Úvisit_textual_selectz SQLCompiler.visit_textual_select|
  s{  € ð —z‘z�>ˆÙ-5�×)Ò)¸4¿:¹:Àb¹>ˆô  #›uÜ›EØñ*
ˆ	ð
 	�
‰
×Ñ˜)Ô$à× Ò Ø×+Ñ+¨C°Ô4ð ò >à !Ñ#ò EØ—I‘IÐ<¸eÓDò>ð
 �y‰yÐ5°uÓ=ð 	ñ à—‘ðˆDÔ! DÔ$Að 47·>±>Ð/Aò 0ÄdØ—‘óGˆDÔ,ð —_”_�Ø—‘ØØ*.Ø&*×&=Ñ&=ð õ ð %ð ˆt�|‰|˜CŸK™KÑ.¨2Ñ.ˆØ�9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDà�
‰
�‰�rÔàˆrý   c                 ó   — y©NÚNULLrü   ©r  rø  rÃ  s      rþ   Ú
visit_nullzSQLCompiler.visit_null°
  ó   € Ørý   c                ó2   — | j                   j                  ryy)Nr~   Ú1©r¢  Úsupports_native_booleanrÎ  s      rþ   Ú
visit_truezSQLCompiler.visit_true³
  s   € Ø�<‰<×/Ò/Øàrý   c                ó2   — | j                   j                  ryy)Nr„   Ú0rÓ  rÎ  s      rþ   Úvisit_falsezSQLCompiler.visit_false¹
  s   € Ø�<‰<×/Ò/Øàrý   c                óJ   ‡ ‡— |j                  d„ ˆˆ fd„|D «       D «       «      S )Nc              3  ó$   K  — | ]  }|r|–— Œ
 y ­wr  rü   ©r*  Úss     rþ   r,  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>À
  s   è ø€ ð 
áI�Ùô ÙIùó   ‚c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÊ  ©r*  rv  rÃ  r  s     €€rþ   r,  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>Â
  s%   øè ø€ ÐIÁ¸1Ð*�a×*Ñ*¨4Ñ6°2Õ6Áùr‡  ©rw   )r  r   Ú	separatorrÃ  s   `  `rþ   Ú_generate_delimited_listz$SQLCompiler._generate_delimited_list¿
  s&   ù€ Ø�~‰~ñ 
äIÁÔIó
ó 
ð 	
rý   c                ót  ‡ ‡— t         j                  j                  t        j                  t         j
                  j                  t         j                  j                  |«      \  }}|dk(  r |d   j                  ‰ fi ‰¤ŽS t        t        j                     }|j                  d„ ˆˆ fd„|D «       D «       «      S )Nr   r   c              3  ó$   K  — | ]  }|r|–— Œ
 y ­wr  rü   rÛ  s     rþ   r,  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>Ñ
  s   è ø€ ð "áL�AÙô ÙLùrÝ  c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÊ  rß  s     €€rþ   r,  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>Ó
  s%   øè ø€ ÐLÁG¸qÐ.˜!×.Ñ.¨tÑ:°rÕ:ÁGùr‡  )r   ÚBooleanClauseListÚ_process_clauses_for_booleanr!   Úand_ÚTrue_Ú
_singletonÚFalse_rË  rs  rw   )r  ÚclausesrÃ  Úlccrá  s   ` `  rþ   Ú_generate_delimited_and_listz(SQLCompiler._generate_delimited_and_listÆ
  s—   ù€ Ü×1Ñ1×NÑNÜ�N‰NÜ�N‰N×%Ñ%Ü�O‰O×&Ñ&Øó	
‰ˆˆWð �!Š8Ø0�7˜1‘:×0Ñ0°Ñ<¸Ñ<Ð<ä!¤)§.¡.Ñ1ˆIØ—>‘>ñ "äLÁGÔLó"ó ð rý   c                ó.   — d | j                   |fi |¤Žz  S ©Nú(%s))Úvisit_clauselist)r  Ú
clauselistrÃ  s      rþ   Úvisit_tuplezSQLCompiler.visit_tuple×
  s    € ØÐ-˜×-Ñ-¨jÑ?¸BÑ?Ñ?Ð?rý   c                ó†   — |j                   }|€d}nt        |j                      } | j                  |j                  |fi |¤ŽS ©Nr  )r/  rs  râ  rì  )r  ró  rÃ  Úseps       rþ   rò  zSQLCompiler.visit_clauselistÚ
  sG   € Ø×!Ñ!ˆØˆ;Ø‰Cä˜J×/Ñ/Ñ0ˆCà,ˆt×,Ñ,¨Z×-?Ñ-?ÀÑKÈÑKÐKrý   c                ó  — |j                   }| j                  |dd «      }|r
 |||fi |¤ŽS 	 t        |   }d|d<    | j                  |j                  |fi |¤ŽS # t
        $ r}t        j                  | |«      |‚d }~ww xY w)NÚexpression_clauselistTÚ_in_operator_expression)r/  Ú_get_operator_dispatchrs  râ  rì  r^  r7   r¿  )r  ró  rÃ  Ú	operator_ÚdispÚopstringrÂ  s          rþ   Úvisit_expression_clauselistz'SQLCompiler.visit_expression_clauselistã
  s©   € Ø×'Ñ'ˆ	à×*Ñ*ØÐ.°ó
ˆñ Ù˜
 IÑ4°Ñ4Ð4ð	Ü  Ñ+ˆHð -1ˆBÐ(Ñ)Ø0�4×0Ñ0Ø×"Ñ" HñØ02ñð øô	 ò 	LÜ×1Ñ1°$¸	ÓBÈÐKûð	Lús   ­	A Á	A>Á"A9Á9A>c                ód  — d}|j                   �#| |j                   j                  | fi |¤Ždz   z  }|j                  D ]8  \  }}|d |j                  | fi |¤Žz   dz    |j                  | fi |¤Žz   dz   z  }Œ: |j                  �&|d |j                  j                  | fi |¤Žz   dz   z  }|dz  }|S )NzCASE r  zWHEN z THEN zELSE ÚEND)r¸  rË  ÚwhensÚelse_)r  ÚclauserÍ  ÚxÚcondr4  s         rþ   Ú
visit_casezSQLCompiler.visit_caseö
  sè   € ØˆØ�<‰<Ð#ØÐ0�—‘×0Ñ0°Ñ@¸Ñ@À3ÑFÑFˆAØ"ŸLœL‰LˆD�&ØØØ)�$×)Ñ)¨$Ñ9°&Ñ9ñ:àñð ,�&×+Ñ+¨DÑ;°FÑ;ñ<ð ñ	ñ‰Að )ð �<‰<Ð#ØØÐ9˜&Ÿ,™,×9Ñ9¸$ÑIÀ&ÑIÑIÈCÑOñˆAð 	
ˆU‰
ˆØˆrý   c                ó<   —  |j                   j                  | fi |¤ŽS r  )Útyped_expressionrË  )r  Útype_coercerÃ  s      rþ   Úvisit_type_coercezSQLCompiler.visit_type_coerce	  s    € Ø>ˆ{×+Ñ+×>Ñ>¸tÑJÀrÑJÐJrý   c                ó  —  |j                   j                  | fi |¤Ž}t        j                  d|«      }d |j                  j                  | fi |¤Ž›d|r|j                  d«      n|›d|r|j                  d«      ›�S d›�S )Nz(.*)( COLLATE .*)zCAST(rÉ   r   r  r6   r‘  )r£  rË  rL  Úmatchr  r†   )r  r   rÍ  Útype_clauser  s        rþ   Ú
visit_castzSQLCompiler.visit_cast  s…   € Ø8�d—o‘o×8Ñ8¸ÑHÀÑHˆÜ—‘Ð,¨kÓ:‰à*ˆD�K‰K×*Ñ*¨4Ñ:°6Ó:Ù#ˆE�K‰K˜ŒN¨Ñ4Ù#ˆE�K‰K˜‹NÐ+ð
ð 	
ð *,Ð+ð
ð 	
rý   c           
     óp  — |d   t         j                  u rdn|d   t         j                  u rdnh|d   dk  r5 | j                  t        j                  t        |d   «      «      fi |¤Ž›d�n+ | j                  t        j                  |d   «      fi |¤Ž›d�›d|d   t         j                  u rd›�S |d   t         j                  u rd›�S |d   dk  r7 | j                  t        j                  t        |d   «      «      fi |¤Ž›d�›�S  | j                  t        j                  |d   «      fi |¤Ž›d�›�S )	Nr   zUNBOUNDED PRECEDINGzCURRENT ROWz
 PRECEDINGz
 FOLLOWINGrÄ   r   zUNBOUNDED FOLLOWING)r   ÚRANGE_UNBOUNDEDÚRANGE_CURRENTr©  ÚliteralÚabs)r  Úrange_rÃ  s      rþ   Ú_format_frame_clausez SQLCompiler._format_frame_clause  s}  € ð ˜!‘9¤× 8Ñ 8Ñ8ñ &ð ˜a‘y¤H×$:Ñ$:Ñ:ñ "ð " !™9 qš=ð	 )˜DŸL™LÜ (× 0Ñ 0´°V¸A±Y³Ó @ñØDFóñð (˜4Ÿ<™<¬×(8Ñ(8¸À¹Ó(CÑJÀrÓJðMñð( ˜!‘9¤× 8Ñ 8Ñ8ð &ð ð+'
ð '	
ð2 ˜a‘y¤H×$:Ñ$:Ñ:ð "ðð+'
ð '	
ðB " !™9 qš=ð	 )˜DŸL™LÜ (× 0Ñ 0´°V¸A±Y³Ó @ñØDFóððð+'
ð '	
ðF (˜4Ÿ<™<¬×(8Ñ(8¸À¹Ó(CÑJÀrÓJðMðð+'
ð '	
rý   c                óÞ  —  |j                   j                  | fi |¤Ž}|j                  r!d | j                  |j                  fi |¤Žz  }n/|j                  r!d | j                  |j                  fi |¤Žz  }nd }|›ddj                  d|j                  fd|j                  ffD ��cg c]*  \  }}|�#t        |«      r|›d |j                  | fi |¤Ž›�‘Œ, c}}|r|gng z   «      ›d�S c c}}w )	NzRANGE BETWEEN %szROWS BETWEEN %sz OVER (r  Ú	PARTITIONÚORDERz BY r  )	rÁ  rË  r  r  Úrowsrw   Úpartition_byÚorder_byr˜  )r  ÚoverrÍ  r¬  r  Úwordr  s          rþ   Ú
visit_overzSQLCompiler.visit_over?  s   € Ø.ˆt�|‰|×.Ñ.¨tÑ>°vÑ>ˆØ�;Š;Ø'Ð*C¨$×*CÑ*CØ—‘ñ+Ø%ñ+ñ ‰Fð �YŠYØ&Ð)B¨×)BÑ)BØ—	‘	ñ*Ø#ñ*ñ ‰Fð ˆFò Ø�H‰Hð
 % d×&7Ñ&7Ð8Ø  $§-¡-Ð0ñ)ôñ)™˜˜fð Ð)¬c°&¬kò Ð6˜V×6Ñ6°tÑF¸vÒFòHð)òñ  &�F‘8¨2ñ	/õð
ð 	
ùós   Â'/C)c                ó~   —  |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz WITHIN GROUP (ORDER BY r  )rÁ  rË  r  )r  ÚwithingrouprÍ  s      rþ   Úvisit_withingroupzSQLCompiler.visit_withingroup\  sB   € à2ˆK×Ñ×2Ñ2°4ÑB¸6ÓBØ3ˆK× Ñ ×3Ñ3°DÑC¸FÓCð
ð 	
rý   c                ó~   —  |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz FILTER (WHERE r  )ÚfuncrË  Ú	criterion)r  Ú
funcfilterrÍ  s      rþ   Úvisit_funcfilterzSQLCompiler.visit_funcfilterb  s@   € à.ˆJ�O‰O×.Ñ.¨tÑ>°vÓ>Ø3ˆJ× Ñ ×3Ñ3°DÑC¸FÓCð
ð 	
rý   c                óª   — | j                   j                  |j                  |j                  «      }d|›d |j                  j                  | fi |¤Ž›d�S )NzEXTRACT(rÈ   r  )Úextract_mapr™  Úfieldrø  rË  )r  ÚextractrÍ  r*  s       rþ   Úvisit_extractzSQLCompiler.visit_extracth  sH   € Ø× Ñ ×$Ñ$ W§]¡]°G·M±MÓB‰âØ+ˆG�L‰L×+Ñ+¨DÑ;°FÓ;ð
ð 	
rý   c                ór   —  | j                   |j                  fi |¤Ž} | j                  |fi |¤Ž}d|›d|›�S )Nr  z).)Úvisit_functionÚfnr”  )r  rÁ  rÃ  Úcompiled_fnÚcompiled_cols        rþ   Úvisit_scalar_function_columnz(SQLCompiler.visit_scalar_function_columno  s?   € Ø)�d×)Ñ)¨'¯*©*Ñ;¸Ñ;ˆØ(�t×(Ñ(¨Ñ7°BÑ7‰Ú'©Ð6Ð6rý   c           	     óx  — |�4 ||j                   |j                   |j                   f|j                  «       t        | d|j                   j                  «       z  d «      }|r ||fi |¤Ž}�n8t        j                  |j                  «       j                  d «      }|r|j                  ri|dz  }nc|j                   }| j                  j                  |«      st        |t        j                  «      r| j                  j                  |«      n|}|dz   }dj                  |j                   D �cg c]T  }| j                  j                  |«      st        |t        j                  «      r| j                  j                  |«      n|‘ŒV c}|gz   «      d | j"                  |fi |¤Žiz  }|j$                  r|dz  }|S c c}w )Nzvisit_%s_funcz%(expr)sr  rø  z WITH ORDINALITY)rñ   rõ   ÚgetattrÚlowerrÚ   r™  Ú_deannotater´  Ú	_has_argsrš  Ú_requires_quotes_illegal_charsr§  r   r0   r‰  rw   ÚpackagenamesÚfunction_argspecÚ_with_ordinality)r  r$  rv  rÍ  rý  r¬  rñ   rù  s           rþ   r.  zSQLCompiler.visit_functiont  s§  € ð Ð(Ù˜dŸi™i¨¯©°T·Y±Y°LÀ$Ç)Á)ÔLä�t˜_¨t¯y©y¯©Ó/@Ñ@À$ÓGˆñ Ù˜Ñ' Ñ'ŠDä—=‘= ×!1Ñ!1Ó!3×!=Ñ!=¸tÓDˆDÙØ—>’>Ø˜JÑ&‘Dà—y‘y�ð —}‘}×CÑCÀDÔIÜ! $¬×(<Ñ(<Ô=ð —M‘M×'Ñ'¨Ô-ð ð	 ð ˜jÑ(�Ø—8‘8ð  $×0Ò0óñ  1˜ð	  Ÿ=™=×GÑGÈÔLÜ% d¬H×,@Ñ,@ÔAð Ÿ™×+Ñ+¨CÔ0ð !ñ!ð
  1ñð �&ñ	óð Ð.˜×.Ñ.¨tÑ>°vÑ>Ð?ñ@ˆDð × Ò ØÐ&Ñ&ˆDØˆùòs   Ä*AF7c                ó8   — | j                  |j                  «      S r  )Úvisit_sequenceÚsequence)r  Ú
next_valuerÃ  s      rþ   Úvisit_next_value_funcz!SQLCompiler.visit_next_value_func¢  s   € Ø×"Ñ" :×#6Ñ#6Ó7Ð7rý   c                óF   — t        d| j                  j                  z  «      ‚)Nz2Dialect '%s' does not support sequence increments.©rÇ  r¢  rñ   ©r  r>  rÃ  s      rþ   r=  zSQLCompiler.visit_sequence¥  s$   € Ü!Ø@Ø�l‰l×Ññ ó
ð 	
rý   c                ó<   —  |j                   j                  | fi |¤ŽS r  )Úclause_exprrË  )r  r$  rÍ  s      rþ   r:  zSQLCompiler.function_argspec«  s    € Ø2ˆt×Ñ×2Ñ2°4ÑB¸6ÑBÐBrý   c           
     ó¢  ‡ ‡‡— ‰ j                    } |j                  |‰ fi ‰¤Ž}|r‰ j                  s|‰ _        |j                  }|r‰ j                  n‰ j                   d   }|xs | xr |j                  dd«      }	|dk(  r||d<   ‰ j                   j                  |d   |d   |||	dœ«       |j                  r‰ j                  |‰«       ‰ j                  |j                     }
d	|
z   d	z   j                  ˆˆˆ fd
„t        |j                  «      D «       «      }d‰d<   | ‰ j                  |fi t        dd‰i‰¤Ž¤Žz  }| ‰ j                   |fi ‰¤Žz  }|j"                  r| ‰ j$                  |fi ‰¤Žz  }‰ j&                  r/|st)        ‰ j                   «      nd }‰ j+                  |d¬«      |z   }‰ j                   j-                  d«       |S )Nr{  r  Fr   r  r  r  )r  r  r$   r  r  r  c              3  óP   •K  — | ]  \  }} |j                   ‰f‰|d œ‰¤Ž–— Œ y­w))rS  rÆ  NrÊ  )r*  ræ  rv  rS  rÍ  r  s      €€€rþ   r,  z4SQLCompiler.visit_compound_select.<locals>.<genexpr>Ô  sC   øè ø€ ð ñ 2‘D�A�qð %�×$Ñ$ØðØ!'¸ñØ=Cõñ 2ùs   ƒ#&r�  rS  T©r¾  Úinclude_following_stackrü   )r€  Ú_compile_state_factoryr  r   r¿  r™  r�  rÀ  rÁ  Úcompound_keywordsÚkeywordrw   rå  ÚselectsÚgroup_by_clauserÂ  Úorder_by_clauseÚ_has_row_limiting_clauseÚ_row_limit_clauserD  r˜  rÄ  rv  )r  ÚcsrS  rÆ  rÍ  rÇ  r  Úcompound_stmtrŠ  Úneed_result_maprL  r¬  r¾  s   ` ` `        rþ   Úvisit_compound_selectz!SQLCompiler.visit_compound_select®  sû  ú€ ð —z‘z�>ˆà1˜×1Ñ1°"°dÑE¸fÑEˆá˜D×.Ò.Ø!.ˆDÔà%×/Ñ/ˆá-5�×)Ò)¸4¿:¹:Àb¹>ˆØ"ò 
ØÐò AØ—	‘	Ð8¸%Ó@ð 	ð ˜QÒØ "ˆE�*Ñà�
‰
×Ñà#(Ð):Ñ#;Ø % nÑ 5Ø Ø!.Ø0?ñô	
ð ×*Ò*Ø×+Ñ+¨M¸6ÔBà×(Ñ(¨¯©Ñ4ˆà�g‘ Ñ#×)Ñ)õô & b§j¡jÔ1ó	ó
ˆð #(ˆˆÑØÐ$�×$Ñ$ RÑI¬4Ñ+H°vÐ+HÀÑ+HÑIÑIˆØÐ$�×$Ñ$ RÑ2¨6Ñ2Ñ2ˆØ×&Ò&ØÐ*�D×*Ñ*¨2Ñ8°Ñ8Ñ8ˆDà�9Š9Ù3;œC §
¡
œOÀˆMà×'Ñ'Ø"/Ø,0ð (ó ð ñ	ð ð 	�
‰
�‰�rÔØˆrý   c                óf   — |j                   � | j                  |fi |¤ŽS  | j                  |fi |¤ŽS r  )Ú_fetch_clauseÚfetch_clauseÚlimit_clause)r  rR  rÍ  s      rþ   rQ  zSQLCompiler._row_limit_clauseï  s>   € Ø×ÑÐ'Ø$�4×$Ñ$ RÑ2¨6Ñ2Ð2à$�4×$Ñ$ RÑ2¨6Ñ2Ð2rý   c                óR   — d|j                   ›d|›|rd|z   nd›�}t        | |d «      S )NÚvisit_r  r‘  )r÷   r4  )r  rü  Ú
qualifier1Ú
qualifier2Úattrnames        rþ   rû  z"SQLCompiler._get_operator_dispatchõ  s5   � à×ÓÙÙ *ˆC�*Ò°Ð2ð
ˆô
 �t˜X tÓ,Ð,rý   c                ó"  — |�||fz  }||d<   ||d<   |j                   ry|j                  rt        j                  d«      ‚| j	                  |j                   dd«      }|r |||j                   fi |¤ŽS  | j
                  |t        |j                      fi |¤ŽS |j                  rX| j	                  |j                  dd«      }|r |||j                  fi |¤ŽS  | j                  |t        |j                     fi |¤ŽS t        j                  d«      ‚)Nrv  rw  zFUnary expression does not support operator and modifier simultaneouslyÚunaryr/  Úmodifierz,Unary expression has no operator or modifier)r/  ra  r7   rÃ  rû  Ú _generate_generic_unary_operatorrs  Ú _generate_generic_unary_modifier)r  r`  rv  rw  rÃ  rý  s         rþ   Úvisit_unaryzSQLCompiler.visit_unaryý  s8  € ð Ð(Ø 5 (Ñ*ÐØ&7ˆBÐ"Ñ#Ø'9ˆBÐ#Ñ$à�>Š>Ø�~Š~Ü×&Ñ&ð2óð ð ×.Ñ.Ø—‘ ¨óˆDñ Ù˜E 5§>¡>Ñ8°RÑ8Ð8à<�t×<Ñ<Øœ9 U§^¡^Ñ4ñØ8:ñð ð �^Š^Ø×.Ñ.Ø—‘ ¨óˆDñ Ù˜E 5§>¡>Ñ8°RÑ8Ð8à<�t×<Ñ<Øœ9 U§^¡^Ñ4ñØ8:ñð ô ×"Ñ"Ø>óð rý   c                óþ  — | j                   j                  rª | j                  |j                  fi |¤Ždz    | j                  t	        j
                  |j                  |j                  j                  j                  t        j                  u r|j                  j                  nt        j                  «       «      fi |¤Žz   S  | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   S )Nú / )r¢  Údiv_is_floordivr©  rx   r   ÚCastrŒ   rõ   Ú_type_affinityr%   ÚNumeric©r  r‘   r/  rÃ  s       rþ   Úvisit_truediv_binaryz SQLCompiler.visit_truediv_binary#  sç   € Ø�<‰<×'Ò'à�—‘˜VŸ[™[Ñ/¨BÑ/Øñð �$—,‘,Ü—M‘MØŸ™ð  &Ÿ|™|×0Ñ0×?Ñ?Ü'×/Ñ/ñ 0ð #ŸL™L×-Ò-ô "*×!1Ñ!1Ó!3óñð ññ	ðð( �—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ðrý   c                óŒ  — | j                   j                  rn|j                  j                  j                  t
        j                  u r> | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   S d | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   z  S )Nrf  z	FLOOR(%s))	r¢  rg  rŒ   rõ   ri  r%   ÚIntegerr©  rx   rk  s       rþ   Úvisit_floordiv_binaryz!SQLCompiler.visit_floordiv_binary>  s¹   € à�L‰L×(Ò(Ø—‘×!Ñ!×0Ñ0´H×4DÑ4DÑDð �—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ðð Ø�—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ñð rý   c                óÀ   — |j                   s| j                  j                  r | j                  |j                  fi |¤ŽS d | j                  |j                  fi |¤Žz  S )Nz%s = 1©Ú_is_implicitly_booleanr¢  rÔ  r©  rÁ  ©r  rÁ  r/  rÃ  s       rþ   Úvisit_is_true_unary_operatorz(SQLCompiler.visit_is_true_unary_operatorO  sQ   € à×*Ò*Ø�|‰|×3Ò3à�4—<‘< §¡Ñ6°2Ñ6Ð6à˜l˜dŸl™l¨7¯?©?ÑA¸bÑAÑAÐArý   c                óÆ   — |j                   s| j                  j                  r d | j                  |j                  fi |¤Žz  S d | j                  |j                  fi |¤Žz  S )NúNOT %sz%s = 0rq  rs  s       rþ   Úvisit_is_false_unary_operatorz)SQLCompiler.visit_is_false_unary_operatorX  sV   € à×*Ò*Ø�|‰|×3Ò3à˜l˜dŸl™l¨7¯?©?ÑA¸bÑAÑAÐAà˜l˜dŸl™l¨7¯?©?ÑA¸bÑAÑAÐArý   c                óJ   — d| j                  |t        j                  ¬«      z  S )Nrv  )Úoverride_operator)Úvisit_binaryr!   Úmatch_oprk  s       rþ   Úvisit_not_match_op_binaryz%SQLCompiler.visit_not_match_op_binarya  s,   € Ø˜$×+Ñ+Ø¤i×&8Ñ&8ð ,ó 
ñ 
ð 	
rý   c                ó>   — d | j                   |t        |   fi |¤Žz  S rð  )Ú_generate_generic_binaryrs  rk  s       rþ   Úvisit_not_in_op_binaryz"SQLCompiler.visit_not_in_op_binaryf  s3   € ð Ð5˜×5Ñ5Ø”I˜hÑ'ñ
Ø+-ñ
ñ 
ð 	
rý   c                ó  — |t         j                  u r*t        |«      dkD  rddj                  d„ |D «       «      z  S y|t         j                  u r*t        |«      dkD  rddj                  d„ |D «       «      z  S y| j                  |«      S )	Nr   z(%s)) OR (1 = 1rÇ   c              3  ó    K  — | ]  }d –— Œ y­w©rÍ  Nrü   ©r*  rÁ  s     rþ   r,  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>r  ó   è ø€ Ð:±E¨œf±Eùó   ‚zNULL) OR (1 = 1z(%s)) AND (1 != 1c              3  ó    K  — | ]  }d –— Œ y­wr‚  rü   rƒ  s     rþ   r,  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>y  r„  r…  zNULL) AND (1 != 1)r!   Ú	not_in_opr˜  rw   Úin_opÚvisit_empty_set_expr)r  r  Ú	expand_oprÃ  s       rþ   Úvisit_empty_set_op_exprz#SQLCompiler.visit_empty_set_op_exprn  s‹   € Øœ	×+Ñ+Ñ+Ü�5‹z˜AŠ~Ø(Ø—I‘IÑ:±EÓ:Ó:ñð ð )Øœ)Ÿ/™/Ñ)Ü�5‹z˜AŠ~Ø*Ø—I‘IÑ:±EÓ:Ó:ñð ð +à×,Ñ,¨UÓ3Ð3rý   c                óF   — t        d| j                  j                  z  «      ‚)Nz3Dialect '%s' does not support empty set expression.rB  ©r  Úelement_typesrÃ  s      rþ   r‰  z SQLCompiler.visit_empty_set_expr€  s$   € Ü!ØAØ�l‰l×Ññ ó
ð 	
rý   c                óü  ‡ ‡‡	‡
— ‰j                   j                  ‰ j                  «      }|s†|j                  rO‰ j                  j                  rdnd‰ j                  ‰j                   j                  ‰j                  «      z   }d|fS ‰ j                  ‰j                   g‰j                  «      }d|fS |j                  sB|j                  r�t        |d   t        j                  «      rst        |d   t        t        f«      sZ|j                  rt        d«      ‚‰ j                  j                  rdnddj!                  ˆˆ fd„t#        |«      D «       «      z   }d|fS |rƒ‰ j$                  }|j'                  |«      }|r|j)                  d«      sJ d«       ‚|j)                  d«      j+                  d	«      }|d
   |d   cŠ	Š
dj!                  ˆ	ˆ
ˆˆ fd„|D «       «      }d|fS dj!                  ˆˆ fd„|D «       «      }d|fS )NúVALUES r‘  r   z?bind_expression() on TupleType not supported with literal_bindsrÇ   c           	   3  óš   •K  — | ]B  \  }}d dj                  ˆfd„t        |‰j                  j                  «      D «       «      z  –— ŒD y­w)rñ  rÇ   c              3  óH   •K  — | ]  \  }}‰j                  ||«      –— Œ y ­wr  râ  )r*  r¸  Ú
param_typer  s      €rþ   r,  z[SQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>.<genexpr>¬  s/   øè ø€ ð ñ2Ñ-˜E :ð ×1Ñ1°%¸×Dñ2ùrr  N)rw   rÄ  rõ   r¶  )r*  ræ  rç  r  r  s      €€rþ   r,  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>©  sT   øè ø€ ð ñ ):Ñ$�A�}ð à—I‘Ió ä14Ø)¨9¯>©>×+?Ñ+?ô2óó õñ ):ùs   ƒAAr6   ú)unexpected format for expanding parameterrò  r   r  c              3  ób   •K  — | ]&  }‰›‰j                  |‰j                  «      ›‰›�–— Œ( y ­wr  ©rã  rõ   )r*  r¸  rõ  rö  r  r  s     €€€€rþ   r,  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>¿  s9   øè ø€ ð 3ñ "(˜ñ	  Ø×1Ñ1°%¸¿¹ÔHÙ ô	ñ "(ùs   ƒ,/c              3  óV   •K  — | ]   }‰j                  |‰j                  «      –— Œ" y ­wr  r–  )r*  r¸  r  r  s     €€rþ   r,  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>É  s*   øè ø€ ð 3á!'˜ð ×-Ñ-¨e°Y·^±^×DÙ!'ùr)  rü   )rõ   rÔ  r¢  rµ  Útuple_in_valuesr‹  r¶  rŠ  Ú_isnullr§  Úcollections_abcr   rï   ÚbytesÚ_has_bind_expressionrÇ  rw   rå  r  Úsearchr†   r÷  )r  r  r§  Úbind_expression_templateÚtyp_dialect_implÚreplacement_expressionÚpost_compile_patternr�  rù  rõ  rö  s   ``       @@rþ   Ú2_literal_execute_expanding_parameter_literal_bindsz>SQLCompiler._literal_execute_expanding_parameter_literal_binds†  s  û€ ð %Ÿ>™>×AÑAÀ$Ç,Á,ÓOÐáð
  ×.Ò.à!%§¡×!=Ò!=‘IÀ2Ø×0Ñ0Ø—N‘N×(Ñ(¨)×*=Ñ*=óñ*Ð&ðz Ð)Ð)Ð)ðm *.×)EÑ)EØ—^‘^Ð$ i×&9Ñ&9ó*Ð&ðl Ð)Ð)Ð)ðe ×,Ò,Ø×$Ò$Ü˜6 !™9¤o×&>Ñ&>Ô?Ü˜v a™y¬3´¨,Ô7à×4Ò4Ü)ð$óð ð "Ÿ\™\×9Ò9‘	¸rØ—	‘	ô ô )2°&Ô(9óó ñ&Ð"ðN Ð)Ð)Ð)ñ1 (Ø'+×'AÑ'AÐ$Ø(×/Ñ/Ð0HÓI�Ù˜QŸW™WØôð ?à>ó?ð ð —g‘g˜a“j×&Ñ& tÓ,�Ø$'¨¡F¨C°©FÐ!�˜Ø)-¯©ö 3ñ "(ó3ó *Ð&ð Ð)Ð)Ð)ð *.¯©ô 3á!'ó3ó *Ð&ð
 Ð)Ð)Ð)rý   c                óp  ‡ ‡‡
‡‡‡— ‰j                   r‰ j                  ‰|«      S ‰ j                  }‰j                  j	                  |«      Š‰ j
                  r‰ j                  Šn‰ j                  Š‰ j                  j                  r‰j                  r	ˆˆˆ ˆfd„Š
nˆfd„Š
|smg Š‰j                  r4‰ j                  ‰j                  j                  ‰j                  «      }‰|fS ‰ j                  ‰j                  g‰j                  «      }‰|fS ‰j                  sB‰j                  r¾t        |d   t         j"                  «      r¡t        |d   t$        t&        f«      sˆ‰j(                  rJ ‚t+        |d«      D ����	cg c]%  \  }}t+        |d«      D ]  \  }}	|›d|›d|›�|	f‘Œ Œ' c}	}}}Š|j,                  rdnddj/                  ˆ
ˆfd	„t+        |«      D «       «      z   }‰|fS t+        |d«      D ��	cg c]  \  }}	|›d|›�|	f‘Œ c}	}Šdj/                  ˆ
fd
„‰D «       «      }‰|fS c c}	}}}w c c}	}w )Nc                óH   •— ‰j                  ‰j                  ‰‰d| iz  «      S ©Nrñ   )Úrender_bind_castrõ   )rñ   Úbind_templater  r  rŸ  s    €€€€rþ   Ú_render_bindtemplatezNSQLCompiler._literal_execute_expanding_parameter.<locals>._render_bindtemplateã  s,   ø€ Ø×,Ñ,Ø—N‘NØ$Ø! V¨T NÑ2óð rý   c                ó   •— ‰d| iz  S r¥  rü   )rñ   r§  s    €rþ   r¨  zNSQLCompiler._literal_execute_expanding_parameter.<locals>._render_bindtemplateì  s   ø€ Ø$¨° ~Ñ5Ð5rý   r   r   r  r�  r‘  rÇ   c              3  óz   •‡‡K  — | ]0  \  ŠŠd dj                  ˆˆˆˆfd„t        ‰«      D «       «      z  –— Œ2 y­w)rñ  rÇ   c              3  ó^   •K  — | ]$  \  }} ‰‰‰t        ‰«      z  |z      d    «      –— Œ& y­w)r   N)r˜  )r*  rè  r¸  r¨  ræ  r  rç  s      €€€€rþ   r,  zMSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>.<genexpr>  sD   øè ø€ ð ñ )A™H˜A˜uñ -Ø% a¬#¨mÓ*<Ñ&<¸qÑ&@ÑAÀ!ÑD÷ñ )Aùs   ƒ*-N)rw   rå  )r*  ræ  rç  r¨  r  s    @@€€rþ   r,  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>  sG   úè ø€ ð ñ ):Ñ$�A�}ð à—I‘Iö ô )2°-Ô(@ó	ó õñ ):ùs   …6;c              3  ó4   •K  — | ]  \  }} ‰|«      –— Œ y ­wr  rü   )r*  r+  r¸  r¨  s      €rþ   r,  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>  s   øè ø€ ð /Ù<E©j¨c°5Ñ$ S×)¹Iùr%  )rÿ  r¢  r¢  rõ   rÔ  r4  r.  r-  Ú_bind_typing_render_castsr¦  rµ  r‹  r¶  rŠ  r™  r§  rš  r   rï   r›  Ú	_is_arrayrå  r˜  rw   )r  rñ   r  r§  r¢  r   ræ  rç  rè  r¸  r¨  r§  r  rŸ  s   ` `       @@@@rþ   rþ  z0SQLCompiler._literal_execute_expanding_parameterÐ  sO  ý€ Ø×$Ò$Ø×JÑJØ˜6óð ð —,‘,ˆØ$Ÿ>™>×AÑAÀ'ÓJÐà×ÒØ ×9Ñ9‰Mà ×-Ñ-ˆMð �L‰L×2Ò2Ø ×1Ò1÷ð ô6ñ ØˆIØ×.Ò.Ø)-×)EÑ)EØ—N‘N×(Ñ(¨)×*=Ñ*=ó*Ð&ðV Ð0Ð0Ð0ðO *.×)EÑ)EØ—^‘^Ð$ i×&9Ñ&9ó*Ð&ðN Ð0Ð0Ð0ðG ×,Ò,Ø×$Ò$Ü˜6 !™9¤o×&>Ñ&>Ô?Ü˜v a™y¬3´¨,Ô7à'×1Ò1Ð1Ð1ô )2°&¸!Ô(<öá(<Ñ$�A�}Ü )¨-¸Ö ;‘H�A�uò  $¢Q©Ð*¨EÒ2à ;ð 3Ø(<ôˆIð %×4Ò4‘	¸"Ø—	‘	ô ô )2°&Ô(9óó ñ&Ð"ð. Ð0Ð0Ð0ô !*¨&°!Ô 4ôá 4‘H�A�uò !¡!Ð$ eÒ,Ø 4òˆIð &*§Y¡Yó /Ù<Eó/ó &Ð"ð Ð0Ð0Ð0ùõ;ùó*s   Å=*H*
Ç5H2c           	     ó¬  — |�rt        j                  |j                  «      râ|�w|d   }|j                  j	                  t        j                  t        |j                  j                  |gz   «      t        |j                  j                  |gz   «      «      «       ni|j                  j	                  t        j                  t        |j                  j                  «      t        |j                  j                  «      «      «       | j                  rMt        |j                  t        j                  «      r)t        |j                  t        j                  «      rd|d<   |xs |j                  }| j                  |dd «      }	|	r
 |	||fi |¤ŽS 	 t         |   }
 | j"                  ||
f||dœ|¤ŽS # t$        $ r}t'        j(                  | |«      |‚d }~ww xY w)NÚenclosing_lateralTrÿ  r‘   )Úfrom_linterÚlateral_from_linter)r!   Úis_comparisonr/  rt  rf  r¥  Úproductr)   rx   r*   rŒ   r,  r§  r   rE   rû  rs  r~  r^  r7   r¿  )r  r‘   ry  Úeager_groupingr±  r²  rÃ  r°  rü  rý  rþ  rÂ  s               rþ   rz  zSQLCompiler.visit_binary  s³  € ò œ9×2Ñ2°6·?±?ÔCØ"Ð.Ø$&Ð':Ñ$;Ð!Ø#×)Ñ)×0Ñ0Ü×%Ñ%Ü!Ø"ŸK™K×5Ñ5Ð9JÐ8KÑKóô "Ø"ŸL™L×6Ñ6Ð:KÐ9LÑLóó	õ	ð ×!Ñ!×(Ñ(Ü×%Ñ%Ü! &§+¡+×";Ñ";Ó<Ü! &§,¡,×"<Ñ"<Ó=óôð × Ò Ü˜6Ÿ;™;¬×(>Ñ(>Ô?Ü˜6Ÿ<™<¬×)?Ñ)?Ô@à$(ˆBÐ Ñ!à%Ò8¨¯©ˆ	Ø×*Ñ*¨9°hÀÓEˆÙÙ˜ 	Ñ0¨RÑ0Ð0ðÜ$ YÑ/�ð 5�t×4Ñ4ØØðð !,Ø(;ñ	ð
 ñð øô ò PÜ×5Ñ5°d¸IÓFÈCÐOûðPús   Æ	F. Æ.	GÆ7GÇGc                ó<   —  | j                   |j                  fi |¤ŽS r  )r©  Úsql_functionrs  s       rþ   Ú&visit_function_as_comparison_op_binaryz2SQLCompiler.visit_function_as_comparison_op_binaryW  s   € Øˆt�|‰|˜G×0Ñ0Ñ7°BÑ7Ð7rý   c                ó&  — | j                   j                  r> | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   S  | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   S )Nz %% rÅ   )rš  r©  r©  rx   rŒ   rk  s       rþ   Úvisit_mod_binaryzSQLCompiler.visit_mod_binaryZ  s‘   € Ø�=‰=×)Ò)à�—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ðð �—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ðrý   c                ó†   — |j                   |d<    | j                  |d| j                  |j                  «      z   dz   fi |¤ŽS )Nrµ  r  )rµ  r~  rˆ  rþ  rs  s       rþ   Úvisit_custom_op_binaryz"SQLCompiler.visit_custom_op_binaryh  sS   € Ø'×6Ñ6ˆÐÑØ,ˆt×,Ñ,ØØ�$×,Ñ,¨X×->Ñ->Ó?Ñ?À#ÑEñ
ð ñ
ð 	
rý   c                ób   —  | j                   || j                  |j                  «      dz   fi |¤ŽS rö  )rb  rˆ  rþ  rs  s       rþ   Úvisit_custom_op_unary_operatorz*SQLCompiler.visit_custom_op_unary_operatorp  s:   € Ø4ˆt×4Ñ4Ø�T×/Ñ/°×0AÑ0AÓBÀSÑHñ
ØLNñ
ð 	
rý   c                ób   —  | j                   |d| j                  |j                  «      z   fi |¤ŽS rö  )rc  rˆ  rþ  rs  s       rþ   Úvisit_custom_op_unary_modifierz*SQLCompiler.visit_custom_op_unary_modifieru  s:   € Ø4ˆt×4Ñ4Ø�S˜4×5Ñ5°h×6GÑ6GÓHÑHñ
ØLNñ
ð 	
rý   c                óè   — |j                  dd«      }d|d<   |j                  |d<    |j                  j                  | fd|i|¤Ž|z    |j                  j                  | fd|i|¤Žz   }|r|rd|z  }|S )Nrú  FTÚ
_binary_oprµ  rñ  )r™  r/  rx   rË  rŒ   )r  r‘   rþ  rµ  rÃ  rú  r¬  s          rþ   r~  z$SQLCompiler._generate_generic_binaryz  s¨   € ð #%§&¡&Ð)BÀEÓ"JÐà(,ˆÐ$Ñ%Ø!Ÿ?™?ˆˆ<Ñà*ˆF�K‰K×*Ñ*ØñØ%3ðØ79ñð ñð .ˆf�l‰l×-Ñ-ØñØ%3ðØ79ññ	ð 	ñ #¡~Ø˜D‘=ˆDØˆrý   c                óB   — | |j                   j                  | fi |¤Žz   S r  rQ  ©r  r`  rþ  rÃ  s       rþ   rb  z,SQLCompiler._generate_generic_unary_operator�  s$   € ØÐ:˜%Ÿ-™-×:Ñ:¸4ÑFÀ2ÑFÑFÐFrý   c                óB   —  |j                   j                  | fi |¤Ž|z   S r  rQ  rÄ  s       rþ   rc  z,SQLCompiler._generate_generic_unary_modifier’  s#   € Ø/ˆu�}‰}×/Ñ/°Ñ;¸Ñ;¸hÑFÐFrý   c                óL   — t        j                  dt        j                  ¬«      S )Nz'%')r  )r   Úliteral_columnr%   Ú
STRINGTYPEr/  s    rþ   Ú_like_percent_literalz!SQLCompiler._like_percent_literal•  s   € ä×&Ñ& u´H×4GÑ4GÔHÐHrý   c                óD   — d |j                   j                  | fi |¤Ž› d�S )Nzlower(r  rQ  r˜  s      rþ   Ú$visit_ilike_case_insensitive_operandz0SQLCompiler.visit_ilike_case_insensitive_operand™  s)   € ØÐ:˜Ÿ™×:Ñ:¸4ÑFÀ2ÑFÐGÀqÐIÐIrý   c                óÀ   — |j                  «       }| j                  }|j                  |j                  «      j                  |«      |_         | j                  ||fi |¤ŽS r  ©Ú_clonerÉ  ÚconcatrŒ   Úvisit_like_op_binary©r  r‘   r/  rÃ  Úpercents        rþ   Úvisit_contains_op_binaryz$SQLCompiler.visit_contains_op_binaryœ  sQ   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3×:Ñ:¸7ÓCˆŒØ(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@rý   c                óÀ   — |j                  «       }| j                  }|j                  |j                  «      j                  |«      |_         | j                  ||fi |¤ŽS r  ©rÎ  rÉ  rÏ  rŒ   Úvisit_not_like_op_binaryrÑ  s        rþ   Úvisit_not_contains_op_binaryz(SQLCompiler.visit_not_contains_op_binary¢  sQ   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3×:Ñ:¸7ÓCˆŒØ,ˆt×,Ñ,¨V°XÑDÀÑDÐDrý   c                ó  — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      j	                  |«      |_         | j                  ||fi |¤ŽS r  ©rÎ  rÉ  r  rx   rÏ  rŒ   Úvisit_ilike_op_binaryrÑ  s        rþ   Úvisit_icontains_op_binaryz%SQLCompiler.visit_icontains_op_binary¨  sl   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ—~‘~Ü" 6§<¡<Ó0ó
ç
‰&�‹/ð 	Œð *ˆt×)Ñ)¨&°(ÑA¸bÑAÐArý   c                ó  — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      j	                  |«      |_         | j                  ||fi |¤ŽS r  ©rÎ  rÉ  r  rx   rÏ  rŒ   Úvisit_not_ilike_op_binaryrÑ  s        rþ   Úvisit_not_icontains_op_binaryz)SQLCompiler.visit_not_icontains_op_binary±  sl   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ—~‘~Ü" 6§<¡<Ó0ó
ç
‰&�‹/ð 	Œð .ˆt×-Ñ-¨f°hÑEÀ"ÑEÐErý   c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  )rÎ  rÉ  Ú_rconcatrŒ   rÐ  rÑ  s        rþ   Úvisit_startswith_op_binaryz&SQLCompiler.visit_startswith_op_binaryº  sH   € Ø—‘“ˆØ×,Ñ,ˆØ×'Ñ'¨¯©Ó5ˆŒØ(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@rý   c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  )rÎ  rÉ  rá  rŒ   rÖ  rÑ  s        rþ   Úvisit_not_startswith_op_binaryz*SQLCompiler.visit_not_startswith_op_binaryÀ  sH   € Ø—‘“ˆØ×,Ñ,ˆØ×'Ñ'¨¯©Ó5ˆŒØ,ˆt×,Ñ,¨V°XÑDÀÑDÐDrý   c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  )rÎ  rÉ  r  rx   rá  rŒ   rÚ  rÑ  s        rþ   Úvisit_istartswith_op_binaryz'SQLCompiler.visit_istartswith_op_binaryÆ  s^   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ×'Ñ'Ô(>¸v¿|¹|Ó(LÓMˆŒØ)ˆt×)Ñ)¨&°(ÑA¸bÑAÐArý   c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  )rÎ  rÉ  r  rx   rá  rŒ   rÞ  rÑ  s        rþ   Úvisit_not_istartswith_op_binaryz+SQLCompiler.visit_not_istartswith_op_binaryÍ  s^   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ×'Ñ'Ô(>¸v¿|¹|Ó(LÓMˆŒØ-ˆt×-Ñ-¨f°hÑEÀ"ÑEÐErý   c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  rÍ  rÑ  s        rþ   Úvisit_endswith_op_binaryz$SQLCompiler.visit_endswith_op_binaryÔ  sF   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3ˆŒØ(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@rý   c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  rÕ  rÑ  s        rþ   Úvisit_not_endswith_op_binaryz(SQLCompiler.visit_not_endswith_op_binaryÚ  sF   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3ˆŒØ,ˆt×,Ñ,¨V°XÑDÀÑDÐDrý   c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  rÙ  rÑ  s        rþ   Úvisit_iendswith_op_binaryz%SQLCompiler.visit_iendswith_op_binaryà  s\   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ—~‘~Ô&<¸V¿\¹\Ó&JÓKˆŒØ)ˆt×)Ñ)¨&°(ÑA¸bÑAÐArý   c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  rÝ  rÑ  s        rþ   Úvisit_not_iendswith_op_binaryz)SQLCompiler.visit_not_iendswith_op_binaryç  s\   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ—~‘~Ô&<¸V¿\¹\Ó&JÓKˆŒØ-ˆt×-Ñ-¨f°hÑEÀ"ÑEÐErý   c                ó  — |j                   j                  dd «      } |j                  j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›�|�%d| j                  |t        j                  «      z   z   S dz   S )NrM  z LIKE ú ESCAPE r‘  ©Ú	modifiersr™  rx   rË  rŒ   rã  r%   rÈ  ©r  r‘   r/  rÃ  rM  s        rþ   rÐ  z SQLCompiler.visit_like_op_binaryî  s‘   € Ø×!Ñ!×%Ñ% h°Ó5ˆð +ˆF�K‰K×*Ñ*¨4Ñ6°2Ó6Ø+ˆF�L‰L×+Ñ+¨DÑ7°BÒ7ð
ð
 Ð!ð ˜×2Ñ2°6¼8×;NÑ;NÓOÑOñ	
ð 	
ð ñ
ð 	
rý   c                ó  — |j                   j                  dd «      } |j                  j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›�|�%d| j                  |t        j                  «      z   z   S dz   S )NrM  z
 NOT LIKE rò  r‘  ró  rõ  s        rþ   rÖ  z$SQLCompiler.visit_not_like_op_binaryú  s�   € Ø×!Ñ!×%Ñ% h°Ó5ˆà*ˆF�K‰K×*Ñ*¨4Ñ6°2Ó6Ø+ˆF�L‰L×+Ñ+¨DÑ7°BÒ7ð
ð
 Ð!ð ˜×2Ñ2°6¼8×;NÑ;NÓOÑOñ	
ð 	
ð ñ
ð 	
rý   c                óÖ   — |t         j                  u rD|j                  «       }t        |j                  «      |_        t        |j
                  «      |_         | j                  ||fi |¤ŽS r  )r!   Úilike_oprÎ  r  rx   rŒ   rÐ  rk  s       rþ   rÚ  z!SQLCompiler.visit_ilike_op_binary  sW   € Ø”y×)Ñ)Ñ)Ø—]‘]“_ˆFÜ0°·±Ó=ˆFŒKÜ1°&·,±,Ó?ˆFŒLð )ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@rý   c                óÖ   — |t         j                  u rD|j                  «       }t        |j                  «      |_        t        |j
                  «      |_         | j                  ||fi |¤ŽS r  )r!   Únot_ilike_oprÎ  r  rx   rŒ   rÖ  rk  s       rþ   rÞ  z%SQLCompiler.visit_not_ilike_op_binary  sW   € Ø”y×-Ñ-Ñ-Ø—]‘]“_ˆFÜ0°·±Ó=ˆFŒKÜ1°&·,±,Ó?ˆFŒLð -ˆt×,Ñ,¨V°XÑDÀÑDÐDrý   c                ój   — |j                   j                  dd«      } | j                  ||rdndfi |¤ŽS )Nr®   Fz BETWEEN SYMMETRIC z	 BETWEEN ©rô  r™  r~  ©r  r‘   r/  rÃ  r®   s        rþ   Úvisit_between_op_binaryz#SQLCompiler.visit_between_op_binary  sA   € Ø×$Ñ$×(Ñ(¨°eÓ<ˆ	Ø,ˆt×,Ñ,Ø©YÑ)¸Kñ
ØKMñ
ð 	
rý   c                ój   — |j                   j                  dd«      } | j                  ||rdndfi |¤ŽS )Nr®   Fz NOT BETWEEN SYMMETRIC z NOT BETWEEN rü  rý  s        rþ   Úvisit_not_between_op_binaryz'SQLCompiler.visit_not_between_op_binary  sD   € Ø×$Ñ$×(Ñ(¨°eÓ<ˆ	Ø,ˆt×,Ñ,ØÙ)2Ñ%¸ñ
ð ñ
ð 	
rý   c                óZ   — t        j                  d| j                  j                  z  «      ‚©Nz/%s dialect does not support regular expressions©r7   rÃ  r¢  rñ   rk  s       rþ   Úvisit_regexp_match_op_binaryz(SQLCompiler.visit_regexp_match_op_binary%  ó*   € Ü×ÑØ=Ø�l‰l×Ññ ó
ð 	
rý   c                óZ   — t        j                  d| j                  j                  z  «      ‚r  r  rk  s       rþ   Ú visit_not_regexp_match_op_binaryz,SQLCompiler.visit_not_regexp_match_op_binary+  r  rý   c                óZ   — t        j                  d| j                  j                  z  «      ‚)Nz;%s dialect does not support regular expression replacementsr  rk  s       rþ   Úvisit_regexp_replace_op_binaryz*SQLCompiler.visit_regexp_replace_op_binary1  s*   € Ü×ÑØIØ�l‰l×Ññ ó
ð 	
rý   c           	     ó^  — |sí|j                   j                  | j                  «      }|j                  r¼|j	                  |«      }	 | j
                  |	fd||xr |j                   ||dœ|¤Ž}
|j                  rut        j                  d|
«      }|sJ d«       ‚d|j                  d«      ›d|j                  d«      ›d	|j                  d
«      ›d�}
|r | j                  |fd|
dœ|¤Ž}d|z  S |
S |s3|xs |j                  xs |xr | j                  }|xs |j                  }nd}|r( | j                  |fddi|¤Ž}|j                  rd|z  }|S | j                  |«      }|| j                  v �r5| j                  |   }||u�r!|j                  s|j                  rb|j                   j#                  |j                   «      s=|j$                  j#                  |j$                  «      st'        j(                  d|z  «      ‚|j                  |j                  k7  rt'        j(                  d|›d�«      ‚|j*                  s|j*                  r]|j*                  r!|j*                  rt'        j(                  d«      ‚t'        j(                  d|j,                  › d|j,                  › d�«      ‚|x| j                  |j,                  <   | j                  |<   | j.                  }|rH|\  }}|j$                  D ]4  }|j,                  |v sŒ||j,                     }||   j1                  |«       Œ6 |j2                  rd| _        |r8|rd| _        |r| xj8                  |hz  c_        n| xj:                  |hz  c_         | j<                  |f||j                  |j                   dœ|¤Ž}|j                  rd|z  }|S )NT)Úskip_bind_expressionr\  Úliteral_bindsrÿ  Úrender_postcompilez&^(.*)\(__\[POSTCOMPILE_(\S+?)\]\)(.*)$r”  z(__[POSTCOMPILE_r6   rò  r   z~~REPL~~r  z~~]))r\  rž  rñ  Fr\  zIBind parameter '%s' conflicts with unique bind parameter of the same namez"Can't reuse bound parameter name 'zê' in both 'expanding' (e.g. within an IN expression) and non-expanding contexts.  If this parameter is to receive a list/array value, set 'expanding=True' on it for expressions that aren't IN, otherwise use a different parameter name.a)  Encountered unsupported case when compiling an INSERT or UPDATE statement.  If this is a multi-table UPDATE statement, please provide string-named arguments to the values() method with distinct names; support for multi-table UPDATE statements that target multiple tables for UPDATE is very limitedzbindparam() name 'zÌ' is reserved for automatic usage in the VALUES or SET clause of this insert/update statement.   Please use a name other than column name when using bindparam() with insert() or update() (for example, 'b_z').)Úpost_compileÚ	expandingÚbindparam_type)rõ   Údialect_implr¢  rœ  Úbind_expressionr©  r  rL  r  r†   rý  rÿ  r,  Ú_truncate_bindparamr(  rš   r÷  ÚintersectionrH  r7   rÃ  Ú_is_crudr+  r@  r�  Ú
isoutparamÚhas_out_parametersr5  r=  r>  r³  )r  r·  r\  r  r  rÿ  r  rÍ  Úimplr  Úwrappedr�  r@  r  rñ   ÚexistingrÌ  rn  rm  rK  rM  s                        rþ   Úvisit_bindparamzSQLCompiler.visit_bindparam7  sî  € ñ $Ø—>‘>×.Ñ.¨t¯|©|Ó<ˆDØ×(Ò(Ø"&×"6Ñ"6°yÓ"A�Ø&˜$Ÿ,™,Ø#ðà)-Ø*?Ø"/Ò"K¸	×8KÑ8KÐ4KØ$3Ø'9ñð ñ�ð ×&Ò&ô Ÿ™ØAÀ7ó�Añ ÐIÐIÓI™1àŸ™ �
ØŸ™ �
ØŸ™ �
ð�Gñ %Ø;˜d×;Ñ;Ø%ðà26Ø5<ñð %ñ	˜ð  &¨™|Ð+à�áàò DØ×,Ñ,òDà)ÒB¨d×.BÑ.Bð ð
 +ÒA¨i×.AÑ.A‰Là ˆLáØ/�$×/Ñ/ØñØ15ðØ9?ñˆCð ×"Ò"Ø˜s‘l�ØˆJà×'Ñ'¨	Ó2ˆà�4—:‘:ÒØ—z‘z $Ñ'ˆHØ˜yÒ(à—_’_¨	×(8Ò(8Ø$×.Ñ.×;Ñ;Ø!×+Ñ+ôð %×0Ñ0×=Ñ=Ø!×-Ñ-ôô ×*Ñ*ðAØCGñHóð ð ×'Ñ'¨9×+>Ñ+>Ò>Ü×*Ò*ò :>ð@óð ð ×&Ò&¨)×*<Ò*<Ø×(Ò(¨Y×-?Ò-?ô "×.Ñ.ð&ó
ð 
ô "×.Ñ.Ø0°·±°ð @"ð #,§-¡- °ð5ó	ð 	ð 8AÐ@ˆ�
‰
�9—=‘=Ñ! D§J¡J¨tÑ$4ð ×/Ñ/ˆ
áØ#‰JˆD�$Ø×+Ô+�Ø—6‘6˜T’>Ø˜bŸf™f™�BØ˜‘H—O‘O IÕ.ð ,ð
 ×ÒØ&*ˆDÔ#áÙ!Ø+/�Ô(áØ×+Ò+°	¨{Ñ:Ö+à×(Ò(¨Y¨KÑ7Õ(à#ˆd×#Ñ#Øð
à%Ø×)Ñ)Ø$Ÿ>™>ñ	
ð
 ñ
ˆð ×ÒØ˜3‘,ˆCàˆ
rý   c                ó   — t        «       ‚r  rÆ  )r  r  Ú
dbapi_typerJ  s       rþ   r¦  zSQLCompiler.render_bind_castÜ  s   € Ü!Ó#Ð#rý   c                óØ  — |t         ur|}nœ|j                  €„|j                  €x|j                  dd «      }|rC|t        j
                  t        j                  fvr!t        j                  d|j                  f«        | j                  t        j                  fi |¤ŽS |j                  }|j                  r| j                  } ||||¬«      \  }}	|	S | j!                  ||j"                  «      S )NrÂ  z‰Bound parameter '%s' rendering literal NULL in a SQL expression; comparisons to NULL should not use operators outside of 'is' or 'is not')rž  )r.   r¸  rÆ  r™  r!   Úis_Úis_notr&   Úwarn_limitedr+  r©  r%   r·  rÇ  r  r¢  rã  rõ   )
r  r·  rã  rž  rÃ  r¸  ÚopÚleepr  r  s
             rþ   rý  z$SQLCompiler.render_literal_bindparamß  sä   € ð  ¤vÑ-Ø(‰Eà�‰Ð&¨9×+=Ñ+=Ð+EØ—V‘V˜L¨$Ó/�Ù˜"¤Y§]¡]´I×4DÑ4DÐ$EÑEÜ×%Ñ%ð@ð #Ÿ™Ð(ô	ð $�t—|‘|¤H×$5Ñ$5Ñ<¸Ñ<Ð<Ø×-Ñ-ˆEà×ÒØ×JÑJˆDÙ*.ØØØ)Aô+Ñ'ˆIÐ'ð
 $Ð#à×,Ñ,¨U°I·N±NÓCÐCrý   c                ó¢  — |€9|j                   s-| j                  t        j                  j	                  «       «      S |j                  | j                  «      }|r		  ||«      S t        j                  dt        j                  |«      › d|› �«      ‚# t        $ r5}t        j                  dt        j                  |«      › d|› d�«      |‚d}~ww xY w)a  Render the value of a bind parameter as a quoted literal.

        This is used for statement sections that do not accept bind parameters
        on the target driver/database.

        This should be implemented by subclasses using the quoting services
        of the DBAPI.

        Nz Could not render literal value "z" with datatype z); see parent stack trace for more detail.z:No literal value renderer is available for literal value ")Úshould_evaluate_noner©  r   ÚNullÚ	_instanceÚ_cached_literal_processorr¢  rë  r7   rÃ  Úsql_utilÚ_repr_single_value)r  r¸  r  Ú	processorÚes        rþ   rã  z SQLCompiler.render_literal_value   sä   € ð ˆ= ×!;Ò!;ð —<‘<¤§¡× 7Ñ 7Ó 9Ó:Ð:à×3Ñ3°D·L±LÓAˆ	Ùð	Ù  Ó'Ð'ô ×"Ñ"ðÜ×/Ñ/°Ó6Ð7ð 8!Ø!& ð)óð øô ò Ü×&Ñ&ðÜ ×3Ñ3°EÓ:Ð;ð <%à�gð #ð#óð ðûðús   ÁB Â	CÂ0C	Ã	Cc                óÎ   — || j                   v r| j                   |   S |j                  }t        |t        j                  «      r| j                  d|«      }|| j                   |<   |S )Nr·  )r)  r+  r§  r   rD   rr  )r  r·  r«  s      rþ   r  zSQLCompiler._truncate_bindparam%  s^   € Ø˜Ÿ™Ñ'Ø—?‘? 9Ñ-Ð-à—M‘Mˆ	Ü�i¤×!:Ñ!:Ô;Ø×2Ñ2°;À	ÓJˆIð &/ˆ�‰˜	Ñ"àÐrý   c                ó”  — ||f| j                   v r| j                   ||f   S |j                  | j                  «      }t        |«      | j                  dz
  kD  r]| j
                  j                  |d«      }|dt        | j                  dz
  d«       dz   t        |«      dd  z   }|dz   | j
                  |<   n|}|| j                   ||f<   |S )Né   r   r   r  r6   )	r`  Ú	apply_mapr_  r˜  r]  ra  r™  ÚmaxÚhex)r  Úident_classrñ   ÚanonnameÚcounterÚ	truncnames         rþ   rr  z!SQLCompiler._truncated_identifier2  sà   € ð ˜Ð $×"6Ñ"6Ñ6Ø×'Ñ'¨°dÐ(;Ñ<Ð<à—>‘> $§-¡-Ó0ˆäˆx‹=˜4×,Ñ,¨qÑ0Ò0Ø×.Ñ.×2Ñ2°;ÀÓBˆGà˜œS ×!2Ñ!2°QÑ!6¸Ó:Ð;Øñä�g“,˜q˜rÐ"ñ#ð ð
 5<¸a±KˆD×$Ñ$ [Ò1à ˆIØ4=ˆ×Ñ˜k¨4Ð0Ñ1ØÐrý   c                ó    — || j                   z  S r  ©r_  ©r  rñ   s     rþ   Ú
_anonymizezSQLCompiler._anonymizeG  s   € Ø�d—m‘mÑ#Ð#rý   c                óÐ  ‡ — |�|j                  |«       |�|j                  |«       |s>‰ j                  j                  |«      r#‰ j                  j	                  ˆ fd„|«      }	|}|	}|r"‰ j
                  j                  ||i«      ‰ _        |rGd|z  }
|r|
S |�:|j                  ‰ j                  «      }|j                  r‰ j                  |||
«      }
|
S ‰ j                  t        j                  u r‰ j                  d|iz  }
n‰ j                  d|iz  }
|�P‰ j                  j                   r:|j                  ‰ j                  «      }|j                  r‰ j                  |||
«      }
|
S )Nc                ó@   •— ‰j                   | j                  d«         S )Nr   )r  r†   )r�  r  s    €rþ   r¤  z.SQLCompiler.bindparam_string.<locals>.<lambda>d  s   ø€ ˜d×8Ñ8¸¿¹À»ÒDrý   z__[POSTCOMPILE_%s]rñ   )Úaddr�  r  r�  r–  r?  rŽ   rÔ  r¢  Úrender_literal_castr¦  r“  r`  ra  r.  r-  r­  )r  rñ   r  r  Úescaped_fromr  Úaccumulate_bind_namesÚvisited_bindparamrÃ  Únew_namer@  Ú	type_impls   `           rþ   r³  zSQLCompiler.bindparam_stringJ  ss  ø€ ð !Ð,Ø!×%Ñ% dÔ+ØÐ(Ø×$Ñ$ TÔ*áØ×&Ñ&×-Ñ-¨dÔ3ð  ×2Ñ2×6Ñ6ÛDØó�ð  $�Ø�áØ&*×&=Ñ&=×&CÑ&CØ˜tÐ$ó'ˆDÔ#ñ Ø&¨Ñ-ˆCÙð �
ð Ð)Ø*×BÑBØ—L‘Ló�	ð ×0Ò0Ø×/Ñ/°À	È3ÓO�CØˆJØ�Z‰Zœ=×2Ñ2Ñ2Ø×/Ñ/°6¸4°.Ñ@‰Cà×#Ñ# v¨t nÑ4ˆCð Ð&Ø—‘×6Ò6à&×>Ñ>¸t¿|¹|ÓLˆIØ×)Ò)Ø×+Ñ+¨N¸IÀsÓK�àˆ
rý   c                óÂ   — |j                  «       }|j                  dd «       t        |j                  |j                  «      D ]  \  }} |j
                  | fd|i|¤Ž Œ y )NÚcte_opts)Úcopyrv  rÄ  rÀ  Ú_independent_ctes_optsrË  )r  ÚstmtrÃ  Úlocal_kwÚcteÚopts         rþ   rÁ  z&SQLCompiler._dispatch_independent_ctes�  s[   € Ø—7‘7“9ˆØ�‰�Z Ô&ÜØ×"Ñ" D×$?Ñ$?ö
‰HˆC�ð #ˆC×"Ñ" 4ÑB°#ÐB¸ÓBñ
rý   c                óô	  ‡ — ‰ j                  «       }	|	‰ j                  u sJ ‚||d<   |j                  }
t        |
t        j
                  «      r‰ j                  d|
«      }
d}d}|j                  «       }|j                  xs |j                  }|‰ j                  v r­‰ j                  |   \  }}}||
k(  sJ ‚||
f}‰ j                  |   }|j                  r±|j                  rt        j                  d«      ‚||
f}|rt        ‰ j                  «      nd}||
fx}}‰ j                  |= |‰ j                  |<   ||fz   ‰ j                  |<   n=|rt        ‰ j                  «      nd}||
f}|‰ j                  v r‰ j                  |   }nd }|�˜||u }||j                  u s||u rd}n||j                  u r-|	|= |j                  «       }||u sJ ‚||u sJ ‚‰ j                  |= nD|j                   €|j                   �|j#                  |«      rd}nt        j                  d|
z  «      ‚|s|sy |j$                  �O|j$                  }|j$                  j                  }t        |t        j
                  «      r‰ j                  d|«      }n|}d }|�r£|‰ j                  |<   ||fz   ‰ j                  |<   |‰ j                  vr ‰ j&                  |fi |¤Ž |�s]||	v�rX|j(                  rd‰ _        ‰ j,                  j/                  ||
«      }|j(                  r^|j0                  }|j3                  d«      D �����cg c]  \  }}}}}|s|xs |‘Œ }}}}}}|dd	j5                  ˆ fd
„|D «       «      z  z  }|j7                  dd«      du sJ ‚‰ j                  s |j0                  j8                  ‰ fd|i|¤ŽS  ‰ j:                  ||j<                  fi |¤Ž}  |j0                  j8                  ‰ fddi|¤Ž}!|d| ›d|!›d�z  }|j>                  r$|d ‰ j:                  ||j>                  fi |¤Žz   z  }||	|<   |rÅ|r|
|j@                  |jC                  «       <   |s|r‰ j,                  j/                  ||
«      S |rh‰ j,                  j/                  ||«      }‰ j,                  jE                  |
«      r‰ j,                  jG                  |
«      }
|‰ jI                  |
«      z  }|S ‰ j,                  j/                  ||
«      S y c c}}}}}w )NÚvisiting_cter…  TFz6CTE is stated as 'nest_here' in more than one locationr   z5Multiple, unrelated CTEs found with the same name: %rrñ  rÇ   c              3  ól   •K  — | ]+  }‰j                   j                  |‰j                  ¬ «      –— Œ- y­w)r8  N)rš  Úformat_label_namer_  )r*  Úidentr  s     €rþ   r,  z(SQLCompiler.visit_cte.<locals>.<genexpr>,  s:   øè ø€ ð "ñ *4 ð !ŸM™M×;Ñ;Ø %°·±ð <÷ ñ *4ùs   ƒ14ÚsubqueryrS  rÉ   z
(r  r  )%r†  rD  rñ   r§  r   rD   rr  Ú_get_reference_cteÚnestingrF  rE  r7   rÃ  r˜  r€  Ú	_restatesÚ_is_clone_ofÚcompareÚ
_cte_aliasÚ	visit_cteÚ	recursiverG  rš  Úformat_aliasrÁ  Ú_generate_columns_plus_namesrw   r™  rË  Ú_generate_prefixesÚ	_prefixesÚ	_suffixesrs  r)   Ú_requires_quotesr‰  Úget_render_as_alias_suffix)"r  rJ  rS  ÚashintÚ	fromhintsrM  r±  rE  rÍ  Ú	self_ctesÚcte_nameÚ
is_new_cteÚembedded_in_current_named_cteÚ_reference_cterS  Ú	cte_levelr  Úexisting_cte_optsÚcte_level_nameÚexisting_cteÚold_level_nameÚnew_level_nameÚexisting_cte_reference_cteÚpre_alias_cteÚcte_pre_alias_namer¬  Ú
col_sourceÚ
proxy_nameÚfallback_label_namerv  ÚrepeatedÚ
recur_colsÚprefixesrˆ   s"   `                                 rþ   rX  zSQLCompiler.visit_cte•  s�  ø€ ð ×(Ñ(Ó*ˆ	Ø˜DŸI™IÑ%Ð%Ð%à!$ˆˆ~Ñà—8‘8ˆä�h¤× 9Ñ 9Ô:Ø×1Ñ1°'¸8ÓDˆHàˆ
Ø(-Ð%à×/Ñ/Ó1ˆà—+‘+Ò1 ×!1Ñ!1ˆð ˜T×3Ñ3Ñ3Ø.2×.DÑ.DØñ/Ñ+ˆI�qÐ+ð ˜’=Ð �=à'¨Ð2ˆNØ×2Ñ2°>ÑBˆLð
 ×ÒØ$×,Ò,Ü×*Ñ*ð1óð ð
 #,¨XÐ!6�Ù/6œC §
¡
œO¸A�	Ø3<¸hÐ2GÐG� à×+Ñ+¨NÐ;Ø:F�×'Ñ'¨Ñ7Ø9GØðKñ :�×&Ñ& ~Ò6ñ
 ,3œ˜DŸJ™Jœ¸ˆIØ'¨Ð2ˆNà ×!8Ñ!8Ñ8Ø#×6Ñ6°~ÑF‘à#�àÐ#Ø,8¸LÐ,HÐ)ð �l×,Ñ,Ñ,°°|Ñ0CØ"‘
Ø §¡Ñ.ð ˜lÐ+à-9×-LÑ-LÓ-NÐ*à1°^ÑCÐCÐCØ1°\ÑAÐAÐAà×*Ñ*Ð+EÑFð ×$Ñ$Ð0Ø#×0Ñ0Ð<Ø—k‘k ,Ô/Ø!&‘Jä×*Ñ*ð,Ø.6ñ7óð ñ
 ™jØà�>‰>Ð%ØŸN™NˆMØ!$§¡×!4Ñ!4ÐÜÐ,¬h×.GÑ.GÔHØ%)×%?Ñ%?ØÐ/ó&Ñ"ð  ˆMØ!%ÐâØ69ˆD×#Ñ# NÑ3Ø5CØðGñ 6ˆD×"Ñ" >Ñ2ð  D§I¡IÑ-Ø�—‘˜}Ñ7°Ò7â%¨#°YÒ*>Ø—=’=Ø*.�DÔ'Ø—}‘}×1Ñ1°#°xÓ@�Ø—=’=Ø!$§¡�Jð" )×EÑEÀdÔK÷"ñ LñØØ&Ø/ØØ$á'ð ,Ò9¨zÑ9ð Lð ô "ð  ˜FØŸ	™	ó "ñ *4ó	"ó ññ �Dð —z‘z *¨eÓ4¸Ñ=Ð=Ð=à—z’zð :˜3Ÿ;™;×9Ñ9ØñØ%+ðØ/5ñð ð  7˜t×6Ñ6Ø˜SŸ]™]ñ Ø.4ñ �Hð ;˜CŸK™K×:Ñ:ØñØ%)ðØ-3ñ�Eñ ªhºÐ>Ñ>�Dà—=’=Ø˜CÐ"9 $×"9Ñ"9Ø˜SŸ]™]ñ#Ø.4ñ#ñ ñ �Dð "&�	˜#‘áÙØ5=�×!Ñ! #§-¡-£/Ñ2áÑ"?Ø—}‘}×1Ñ1°#°xÓ@Ð@á!Ø—}‘}×1Ñ1°#Ð7IÓJ�Ø—=‘=×1Ñ1°(Ô;Ø#Ÿ}™}×2Ñ2°8Ó<�HØ˜×7Ñ7¸ÓAÑA�Ø�à—}‘}×1Ñ1°#°xÓ@Ð@àùöG"s   Ì/S1c                óˆ   — |j                   rd |d<   |j                  r | j                  |fi |¤ŽS  | j                  |fi |¤ŽS )Nr±  )Újoins_implicitlyÚ_is_lateralÚvisit_lateralÚvisit_aliasr˜  s      rþ   Úvisit_table_valued_aliasz$SQLCompiler.visit_table_valued_alias`  sN   € Ø×#Ò#Ø $ˆBˆ}ÑØ×ÒØ%�4×%Ñ% gÑ4°Ñ4Ð4à#�4×#Ñ# GÑ2¨rÑ2Ð2rý   c                ó(   —  | j                   |fi |¤ŽS r  )r”  r˜  s      rþ   Úvisit_table_valued_columnz%SQLCompiler.visit_table_valued_columnh  s   € Ø ˆt× Ñ  Ñ/¨BÑ/Ð/rý   c
           
     óº  ‡ ‡‡
— |r&d‰
vr‰j                   sJ ‚‰‰
d<   |	rd‰
vr	d‰
v r|	‰
d<   |�@|j                  ‰u r2 ‰j                  j                  ‰ f|||||‰dœ‰
¤Ž}|r
|s|rd|›d�}|S ‰x}‰
d<   |s|rMt        ‰j                  t
        j                  «      r‰ j                  d‰j                  «      }n‰j                  }|r‰ j                  j                  ‰«      S |rØ|	r|	j                  ‰j                  «       <    ‰j                  j                  ‰ fd|d	œ‰
¤Ž}|rd|›d�}|‰ j                  ‰ j                  j                  ‰«      «      z   }‰j                  r8‰j                  r,|d
dj                  ˆˆ
ˆ fd„‰j                   D «       «      z  z  }|r‰|v r‰ j#                  |‰|‰   |«      }|S  ‰j                  j                  ‰ fd|i‰
¤ŽS )Nr°  r²  )rS  ra  Úiscrudrb  ÚlateralÚenclosing_aliasr  r  r‚  r…  T)rS  r�  rñ  rÇ   c              3  óð   •K  — | ]m  }‰j                   j                  |j                  «      ›‰j                  r4d  ‰j                  j
                  j                  |j                  fi ‰¤Žz  nd›�–— Œo y­w)ú %sr‘  N)rš  r‰  rñ   Ú_render_derived_w_typesr¢  r¢  r©  rõ   )r*  ró  r…  rÍ  r  s     €€€rþ   r,  z*SQLCompiler.visit_alias.<locals>.<genexpr>²  s}   øè ø€ ð ñ $+˜Cð !ŸM™M×/Ñ/°·±Ô9ð $)×#@Ò#@ð	 !&Ø"M $§,¡,×"EÑ"E×"MÑ"MØ$'§H¡Hñ#"Ø06ñ#"ò!"ð
 &(ð!(ô	ñ $+ùs   ƒA3A6r�  )ry  rÁ  rË  r§  rñ   r   rD   rr  rš  rZ  rs  r)   r`  Ú_supports_derived_columnsÚ_render_derivedrw   rv  Úformat_from_hint_text)r  r…  rS  ra  r€  rb  rQ  r�  r‚  r±  rÍ  rˆ   Ú
alias_namer@  s   ``        `   rþ   r{  zSQLCompiler.visit_aliask  s4  ú€ ñ Ø"¨&Ñ0ð ×(Ò(Ð(Ð(Ø.3�Ð*Ñ+ñ
 Ø)°Ñ7Ø'¨6Ñ1à0;�Ð,Ñ-àÐ&¨?×+BÑ+BÀeÑ+KØ4�E—M‘M×4Ñ4Øð	àØØØ#ØØ %ñ	ð ñ	ˆEñ ™V¡wøÚ"'Ð)�ØˆLà:?Ð?ˆO˜fÐ%6Ñ7á‘VÜ˜%Ÿ*™*¤h×&?Ñ&?Ô@Ø!×7Ñ7¸ÀÇÁÓL‘
à"ŸZ™Z�
áØ—=‘=×-Ñ-¨e°ZÓ@Ð@ÙÙØ7A�×!Ñ! %§/¡/Ó"3Ñ4à4�E—M‘M×4Ñ4ØðØ!¨7ñØ6<ñˆEò Ú"'Ð)�à˜$×9Ñ9Ø—‘×*Ñ*¨5°*Ó=óñ ˆCð ×.Ò.°5×3HÒ3HØ�vØ—I‘Iõ ð $)§7¢7óó ññ �ñ$ ˜U iÑ/Ø×0Ñ0Ø˜ 	¨%Ñ 0°&ó�ð ˆJð 4�5—=‘=×3Ñ3ØñØ%ðØ)/ñð rý   c                ó2   — d|d<    | j                   |fi |¤ŽS )NTrQ  ©r{  )r  rQ  rÃ  s      rþ   Úvisit_subqueryzSQLCompiler.visit_subqueryÏ  s#   € Øˆˆ:‰Øˆt×Ñ Ñ/¨BÑ/Ð/rý   c                ó8   — d|d<   d | j                   |fi |¤Žz  S )NTr�  z
LATERAL %sr‹  )r  Úlateral_rÃ  s      rþ   rz  zSQLCompiler.visit_lateralÓ  s)   € Øˆˆ9‰ØÐ.˜d×.Ñ.¨xÑ>¸2Ñ>Ñ>Ð>rý   c                óÖ   —  | j                   |fddi|¤Ž›d |j                  «       j                  | fi |¤Ž›�}|j                  �#|d |j                  j                  | fi |¤Žz  z  }|S )NrS  Tz TABLESAMPLE z REPEATABLE (%s))r{  Ú_get_methodrË  Úseed)r  ÚtablesamplerS  rÃ  r¬  s        rþ   Úvisit_tablesamplezSQLCompiler.visit_tablesample×  sƒ   € àˆD×Ñ˜[Ñ<°Ð<¸Ó<Ø8ˆK×#Ñ#Ó%×8Ñ8¸ÑDÀÒDð
ˆð
 ×ÑÐ'ØÐ&Ø3�× Ñ ×3Ñ3°DÑ?¸BÑ?ññ ˆDð ˆrý   c                ó–   ‡ ‡‡— ‰j                  d‰j                  «       dj                  ˆˆˆ fd„‰j                  D «       «      }d|› �S )Nr  rÇ   c           	   3  ó¨   •K  — | ]I  }|D ]B  } ‰j                   t        j                  |d ‰j                  iŽj	                  «       fi ‰¤Ž–— ŒD ŒK y­w)r¶  N)r©  r   r   Ú_column_typesrþ  )r*  ÚchunkÚelemrÁ  rÃ  r  s      €€€rþ   r,  z-SQLCompiler._render_values.<locals>.<genexpr>æ  se   øè ø€ ð 	
ñ '�Û�ð ˆD�L‰LÜ—‘Ø26ðØ!×/Ñ/ñç‘*“,ñð õ	ð ðñ 'ùó   ƒAAr�  )Ú
setdefaultr  rw   Ú_data)r  rÁ  rÃ  Útupless   ``` rþ   Ú_render_valueszSQLCompiler._render_valuesä  sG   ú€ Ø
�‰�o w×'<Ñ'<Ô=Ø—‘õ 	
ð !Ÿšó	
ó 	
ˆð ˜˜Ð!Ð!rý   c           
     ó(  ‡ ‡—  ‰ j                   |fi ‰¤Ž}|j                  rd }nMt        |j                  t        j
                  «      r‰ j                  d|j                  «      }n|j                  }|j                  rd}nd}|r�|r!|�|nd|j                  |j                  «       <   |r`d‰d<   |›d|›d‰ j                  ‰ j                  j                  |«      «      ›d	d
j                  ˆˆ fd„|j                  D «       «      ›d�}|S |›d|›d�}|S )Nr§  zLATERAL r‘  z(unnamed VALUES element)Fr�  r  r  ú (rÇ   c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÊ  rß  s     €€rþ   r,  z+SQLCompiler.visit_values.<locals>.<genexpr>  s+   øè ø€ ð "á%4 ð 1˜A×0Ñ0°Ñ<¸Õ<Ù%4ùr‡  )r�  Ú_unnamedr§  rñ   r   rD   rr  ry  rs  r)   r`  rš  r‰  rw   Úcolumns)r  rÁ  rS  r±  rÃ  rq  rñ   r�  s   `   `   rþ   Úvisit_valueszSQLCompiler.visit_valuesò  s  ù€ ØˆD×Ñ Ñ.¨2Ñ.ˆà×ÒØ‰DÜ˜Ÿ™¤h×&?Ñ&?Ô@Ø×-Ñ-¨h¸¿¹ÓE‰Dà—<‘<ˆDà×ÒØ ‰GàˆGáÙà Ð,‘DÐ2Lð ×!Ñ! '×"3Ñ"3Ó"5Ñ6ñ Ø&+��?Ñ#âÚØ×3Ñ3°D·M±M×4GÑ4GÈÓ4MÕNàŸ	™	ô "à%,§_¢_ó"õ ð
�ð ˆò !(ªÐ+�Øˆrý   c                ó0   — d | j                   |fi |¤Ž› d�S rP  )r�  r˜  s      rþ   Úvisit_scalar_valueszSQLCompiler.visit_scalar_values  s%   € ØÐ&�4×&Ñ& wÑ5°"Ñ5Ð6°aÐ8Ð8rý   c                ó   — d|z   S )NrÉ   rü   )r  Úalias_name_texts     rþ   r`  z&SQLCompiler.get_render_as_alias_suffix  s   € Ø˜Ñ'Ð'rý   c                óÆ   — |sJ ‚|�|dk(  rd| _         d| _        |j                  rt        j                  d«      ‚| j
                  j                  t        ||||«      «       y )NÚ*FTzxMost backends don't support SELECTing from a tuple() object.  If this is an ORM query, consider using the Bundle object.)r2  r1  rµ  r7   rÃ  r•  r�  rî   r  s        rþ   rÃ  zSQLCompiler._add_to_result_map  sk   € ñ ˆˆwàˆ?˜g¨šnØ$)ˆDÔ!Ø#'ˆDÔ Ø×ÒÜ×"Ñ"ð4óð ð
 	×Ñ×#Ñ#Ü˜w¨¨g°uÓ=õ	
rý   c                ó8   —  | j                   d||d|€i n|fi |¤ŽS )aL  Render a column with necessary labels inside of a RETURNING clause.

        This method is provided for individual dialects in place of calling
        the _label_select_column method directly, so that the two use cases
        of RETURNING vs. SELECT can be disambiguated going forward.

        .. versionadded:: 1.4.21

        NF)Ú_label_select_column)r  rH  r’   rÉ  Úcolumn_clause_argsrÃ  s         rþ   Ú_label_returning_columnz#SQLCompiler._label_returning_column7  s:   € ð )ˆt×(Ñ(ØØØØØ$Ð,‰BÐ2Dñ
ð ñ
ð 	
rý   c                ó<  ‡‡— ‰j                   j                  | j                  «      }|j                  r|s|r|j	                  ‰«      }n‰}|r#| j
                  }|
r|Šˆfd„}n|‰ur|Šˆˆfd„}nd}|	sJ d«       ‚t        ‰t        j                  «      r-|‰ur%t        |‰j                  ‰j                  f¬«      }�n8|}�n4|r%|€J d«       ‚t        |||‰j                  f¬«      }�n|‰urd}n¯t        ‰t        j                  «      r"|xr ‰j                   xr ‰j                  du}nst        ‰t        j                   «      rd}nVt        ‰t        j"                  «      r‰j$                  xs |}n+t        ‰t        j&                  «      s‰j(                  €d}nd}|rS|s|
rJ ‚‰j*                  }t        |t        j,                  «      st        j,                  |«      n|}t        |||f¬«      }n|}|j/                  |	||¬	«        |j0                  | fi |¤ŽS )
z.produce labeled columns present in a select().c                ó   •—  ‰| || f|«       y r  rü   )rð   rñ   ró   r  rÃ  s       €rþ   rv  z;SQLCompiler._label_select_column.<locals>.add_to_result_mapr  s   ø€ Ù& w°°w°jÀ%ÕHrý   c                ó$   •—  ‰| |‰f|z   |«       y r  rü   )rð   rñ   ró   r  rÃ  r’   s       €€rþ   rv  z;SQLCompiler._label_select_column.<locals>.add_to_result_mapz  s   ø€ Ù&Ø ¨ y°7Ñ':¸Eõrý   NzX_label_select_column is only relevant within the columns clause of a SELECT or RETURNING)rô  z*proxy_name is required if 'name' is passedTF)r\  rv  r�  )rõ   r  r¢  Ú_has_column_expressionÚcolumn_expressionrÃ  r§  r   rH   rî  rñ   rÁ  r‡  rF   r†  r�   Ú
TextClauseÚUnaryExpressionÚwraps_column_expressionÚNamedColumnÚ_non_anon_labelÚ_anon_name_labelrD   rf  rË  )r  r™   r’   rÉ  rS  r¬  rñ   rr  rs  r\  Úcolumn_is_repeatedÚneed_column_expressionsr�  r  Úcol_exprrv  Úresult_exprÚrender_with_labelrÃ  s     `               @rþ   r«  z SQLCompiler._label_select_columnL  sf  ù€ ð  �{‰{×'Ñ'¨¯©Ó5ˆà×&Ò&Ù#Ñ':à×-Ñ-¨fÓ5‰HàˆHáð
 !%× 7Ñ 7Ðñ
 "Ø%6Ð"õIð
  Ñ'Ø%6Ð"öð !%Ðñ %ð 	
ð:ó	
Ð$ô �fœhŸn™nÔ-Ø˜vÑ%Ü+Ø˜fŸk™k°f·n±nÐ5Fô’ð '’áð Ð&ð<à;ó<Ø&ô (ØØàð ×$Ñ$ðôŠKð& ˜vÑ%ð %)Ñ!Ü˜F¤H×$9Ñ$9Ô:ð ò 1Ø"×-Ñ-Ð-ò1àŸ™¨DÐ0ñ "ô
 ˜F¤H×$7Ñ$7Ô8Ø$)Ñ!Ü˜F¤H×$<Ñ$<Ô=Ø$*×$BÑ$BÒ$LÀfÑ!ô
 ˜v¤x×';Ñ';Ô<ð ×*Ñ*Ð2à$(Ñ!à$)Ð!á Ù*ñ
  2Ð1Ð1Ø*0×*AÑ*AÐ'ô &Ø+¬X×-FÑ-Fôô ×-Ñ-Ð.AÔBð -ð $ô ,ØÐ1¸j¸]ô‘ð '�à×!Ñ!Ø"7Ø/Ø'ð 	"ô 	
ð
 .ˆ{×-Ñ-¨dÑIÐ6HÑIÐIrý   c                ó>   — | j                  ||«      }|r|d|z   z  }|S rö  )Úget_from_hint_text)r  rJ  r�   Úhintr€  Úhinttexts         rþ   rˆ  z!SQLCompiler.format_from_hint_textð  s*   € Ø×*Ñ*¨5°$Ó7ˆÙØ�s˜X‘~Ñ%ˆGØˆrý   c                 ó   — y r  rü   )r  Úbyfromss     rþ   Úget_select_hint_textz SQLCompiler.get_select_hint_textö  ó   € Ørý   c                 ó   — y r  rü   ©r  r�   r¬  s      rþ   r¿  zSQLCompiler.get_from_hint_textù  rÅ  rý   c                 ó   — y r  rü   rÇ  s      rþ   Úget_crud_hint_textzSQLCompiler.get_crud_hint_textü  rÅ  rý   c                ó$   — dj                  |«      S rö  rà  )r  Ú
hint_textss     rþ   Úget_statement_hint_textz#SQLCompiler.get_statement_hint_textÿ  s   € Ø�x‰x˜
Ó#Ð#rý   r  r¿  r  r  c                ó  — | j                    }|r| j                  n| j                   d   }|j                  || «      }|d   }|d   }	|r&|s$|j                  |j	                  |	«      d¬«      }
|
S |j                  ||	¬«      }
|
S )Nr{  r  r  rü   ©Úexplicit_correlate_fromsÚimplicit_correlate_froms)r€  r¿  rJ  Ú_get_display_fromsÚ
difference)r  Úselect_stmtrS  r�  rÃ  rÇ  rŠ  r  r  r  rs  s              rþ   Ú_display_froms_for_selectz%SQLCompiler._display_froms_for_select	  s¨   € ð —z‘z�>ˆÙ-5�×)Ò)¸4¿:¹:Àb¹>ˆà#×:Ñ:¸;ÈÓMˆàÐ 1Ñ2ˆØ˜^Ñ,ˆá™'Ø!×4Ñ4Ø)8×)CÑ)CØ ó*ð *,ð	 5ó ˆEð ˆð	 "×4Ñ4Ø)8Ø)5ð 5ó ˆEð ˆrý   Útranslate_select_structurec	                óþ  ‡%— |�J d«       ‚d|	d<    |j                   || fi |	¤Ž}
|
j                  |	d<   |
j                  }| j                   }|r| j                  s|
| _        |d uxs |}| j
                  r? | j
                  |fd|i|	¤Ž}||ur&|
}|}|} |j                   || fi |	¤Ž}
|
j                  }|r| j                  n| j                  d   }|xs& |j                  dd«      xs |j                  dd«      x}}|rd}|sd	|	v r|	d	= | j                  ||
||||«      }|	j                  «       }|j                  ddd
œ«       d}|j                  r| j                  |«      \  }}|r||dz   z  }nd }|j                  r| j                  ||	«       |j                  r!| | j                   ||j                  fi |	¤Žz  }| | j"                  |fi |	¤Žz  }|
j$                  D �����cg c]#  \  }}}}}| j'                  ||||||||||¬«
      ‘Œ% c}}}}}D �cg c]  }|�|‘Œ }}|r«|�©t)        t+        |
j$                  D �����cg c]
  \  }}}}}|‘Œ c}}}}}j$                  D �����cg c]
  \  }}}}}|‘Œ c}}}}}«      «      Š%| j,                  D ���� cg c]'  \  }}}} t/        ||t1        ˆ%fd„|D «       «      | «      ‘Œ) c} }}}| _        | j3                  |||
|||||	«      }|j4                  rQ|j4                  D �!�"cg c]!  \  }!}"|!d| j6                  j8                  fv r|"‘Œ# }#}!}"|#r|d| j;                  |#«      z   z  }| j<                  r2|r|r.|st?        | j                  «      nd }$| jA                  |$¬«      |z   }|jB                  r$|d | j                   ||jB                  fi |	¤Žz   z  }| j                  jE                  d«       |S c c}}}}}w c c}w c c}}}}}w c c}}}}}w c c} }}}w c c}"}!w )NzpSQLAlchemy 1.4 requires use of the translate_select_structure hook for structural translations of SELECT objectsFr\  rŽ  rS  r{  r  r  rv  )rq  r\  zSELECT r  )rñ   rr  rs  r¹  rº  c              3  óB   •K  — | ]  }‰j                  ||«      –— Œ y ­wr  r  )r*  ÚorF  s     €rþ   r,  z+SQLCompiler.visit_select.<locals>.<genexpr>Ó  s   øè ø€ Ð$FÁ#¸Q Y§]¡]°1°a×%8Á#ùs   ƒr©  r½  )#rJ  Ú_ambiguous_table_name_mapr   r€  r  rÕ  r¿  r™  Ú_setup_select_stackrF  rf  Ú_hintsÚ_setup_select_hintsrÀ  rÁ  r]  r\  Úget_select_precolumnsÚcolumns_plus_namesr«  rÂ  rÄ  r•  rî   r.  Ú_compose_select_bodyÚ_statement_hintsr¢  rñ   rÌ  rD  r˜  rÄ  r^  rv  )&r  rÓ  rS  Úinsert_intorb  rÆ  Úselect_wraps_forr�  r±  rÍ  r  rÇ  Úis_embedded_selectÚnew_select_stmtÚcompile_state_wraps_forrŠ  rÉ  rº  rs  r¬  r¬  Ú	hint_textÚbyfromrñ   rr  rs  r’   rt  rv  Úinner_columnsr+  rÌ  r  Údialect_nameÚhtÚper_dialectr¾  rF  s&                                        @rþ   Úvisit_selectzSQLCompiler.visit_select-  s   ø€ ð  Ð'ð 	
ð-ó	
Ð'ð +0ˆÐ&Ñ'à:˜×:Ñ:Ø˜ñ
Ø!'ñ
ˆð ×3Ñ3ð 	Ð)Ñ*ð $×-Ñ-ˆà—z‘z�>ˆá˜D×.Ò.Ø!.ˆDÔà+°4Ð7ÒF¸;Ðð
 ×*Ò*Ø=˜d×=Ñ=ØñØ$*ðØ.4ñˆOð  kÑ1Ø*7Ð'Ø#.Ð Ø-�à B × BÑ BØ ñ!Ø)/ñ!�ð ,×5Ñ5�á-5�×)Ò)¸4¿:¹:Àb¹>ˆð ò >Ø�y‰yÐ7¸Ó?ò>à�y‰yÐ5°uÓ=ð	
ÐÐ5ñ Ø"'Ðñ
 #Ð':¸fÑ'DØÐ*Ð+à×(Ñ(Ø˜¨¨v°wÀó
ˆð $Ÿ[™[›]ÐØ×!Ñ!Ø$)ÀEÑJô	
ð ˆà×ÒØ $× 8Ñ 8¸Ó EÑˆI�vÙØ˜	 C™Ñ'‘àˆFà×(Ò(Ø×+Ñ+¨K¸Ô@à× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ6<ññ ˆDð 	Ð*�×*Ñ*¨;ÑA¸&ÑAÑAˆð. #×5Ò5÷'ñ& 6ñØØØ'ØØð# ×)Ñ)ØØØ'ØØ&ØØ)Ø(;Ø'/Ø,Cð *õ ð$ 6ö'ó
ñ�ð* ˆ}ò- ðð 	ð 
ñ4 Ð#3Ð#?ô Üð +×=Ò=÷	ñ >ñØØ&Ø/Ø Ø$ò ð >õ	ð$ 5×GÒG÷	ñ HñØØ&Ø/Ø Ø$ò ð Hõ	óóˆIð: .2×-AÒ-Aö	$ñ .BÑ)�C˜˜s Eô #Ø˜œuÓ$FÁ#Ó$FÓFÈõð .Bô	$ˆDÔ ð ×(Ñ(ØØØØØØØØó	
ˆð ×'Ò'ð +6×*FÒ*Fôá*FÑ&�\ 2Ø C¨¯©×):Ñ):Ð#;Ñ;ò Ø*Fð ñ ñ
 Ø˜˜d×:Ñ:¸;ÓGÑGÑG�ð �9Š9Ñ0±HÙ3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDà× Ò Ø�CÐ1˜$×1Ñ1Ø˜[×2Ñ2ñØ6<ññ ñ ˆDð 	�
‰
�‰�rÔàˆùöyùò
ùö@	ùö	ùõ$ùó&s$   Ç&(OÈOÉOÉ+O(Ê,O1
Ì&O9c                óþ   — |j                   j                  «       D ���ci c];  \  \  }}}|d| j                  j                  fv r||d|j	                  | d¬«      iz  “Œ= }}}}| j                  |«      }||fS c c}}}w )Nr©  rñ   T)ra  )rÛ  rg  r¢  rñ   rË  rÄ  )r  r™   r†  r¢  rÁ  rç  ræ  s          rþ   rÜ  zSQLCompiler._setup_select_hintsú  s�   € ð /5¯m©m×.AÑ.AÔ.Cõ
ñ /DÑ*Ñ �˜ (Ø˜3 §¡× 1Ñ 1Ð2Ñ2ð �8Ø�u×/Ñ/°¸TÐ/ÓBÐCñDñ Dà.Cð 	ò 
ð ×-Ñ-¨fÓ5ˆ	Ø˜&Ð Ð ùô
s   ŸA A8c           	     óø  — |d   }|d   }|dk(  r||d<   nf|rd|d   }	t        |	j                  «      }
t        |j                  «      |
k7  r2t        j                  dd|
|dz   t        |j                  «      fz  «      ‚|r%|s#|j                  |j                  |«      d¬«      }n|j                  ||¬«      }t        t        |Ž «      }|j                  |«      }||||d	œ}| j                  j                  |«       |S )
Nr  r  r   r  z}All selectables passed to CompoundSelect must have identical numbers of columns; select #%d has %d columns, select #%d has %dr   rü   rÎ  )r  r  r$   r  )r˜  ru  rÞ  r7   rÃ  rÑ  rÒ  ro   r*   rŽ   r€  r�  )r  r™   r  rŠ  rS  r�  rÆ  r  r  r  Únumcolsrs  Únew_correlate_fromsÚall_correlate_fromsrÈ  s                  rþ   rÚ  zSQLCompiler._setup_select_stack  s;  € ð  Ð 1Ñ2ˆØ˜^Ñ,ˆà˜QÒØ &ˆE�*ÒÙØ˜ZÑ(ˆHÜ˜(×8Ñ8Ó9ˆGä�=×3Ñ3Ó4¸Ò?Ü×&Ñ&ð!ð
 ØØ&¨Ñ*Ü˜F×8Ñ8Ó9ð	ñ		óð ñ ™'Ø!×4Ñ4Ø)8×)CÑ)CØ ó*ð *,ð	 5ó ‰Eð "×4Ñ4Ø)8Ø)5ð 5ó ˆEô
 "¤-°Ð"7Ó8ÐØ1×7Ñ7¸ÓHÐð 0Ø2Ø Ø*ñ	*
ˆ	ð 	�
‰
×Ñ˜)Ô$àˆrý   c	                ó,  — |dj                  |«      z  }| j                  t        z  r1t        i t	        «       «      }	| j                  t
        z  }
|r|	| _        nd }	d}
|s|j                  «       }|r€|dz  }|j                  r8|dj                  |D �cg c]  } |j                  | fd||	dœ|¤Ž‘Œ c}«      z  }nJ|dj                  |D �cg c]  } |j                  | fd|	dœ|¤Ž‘Œ c}«      z  }n|| j                  «       z  }|j                  r) | j                  |j                  fd|	i|¤Ž}|r|d|z   z  }|
r|	€J ‚|	j                  «        |j                  r| | j                  |fi |¤Žz  }|j                   r' | j                  |j                   fi |¤Ž}|r|d	|z   z  }|j"                  r| | j$                  |fi |¤Žz  }|j&                  r| | j(                  |fi |¤Žz  }|j*                  �| | j,                  |fi |¤Žz  }|S c c}w c c}w )
NrÇ   Fz 
FROM T)rS  rb  r±  ©rS  r±  r±  z 
WHERE z	 
HAVING )rw   rW  rg  rk  ro   rh  r±  ÚrstriprÛ  rË  rC  Ú_where_criteriarî  r‰  Ú_group_by_clausesrN  Ú_having_criteriaÚ_order_by_clausesrO  rP  rQ  Ú_for_update_argÚfor_update_clause)r  r¬  r™   r  rè  rs  rç  rÇ  rÍ  r±  Úwarn_lintingÚfÚts                rþ   rß  z SQLCompiler._compose_select_body:  s–  € ð 	�—	‘	˜-Ó(Ñ(ˆà�<‰<Ô4Ò4Ü$ R¬«Ó/ˆKØŸ<™<¬,Ñ6ˆLÙØ#.�Õ àˆKØ ˆLñ Ø—;‘;“=ˆDáØ�JÑˆDà�}Š}Ø˜Ÿ	™	ñ "'ó	ñ "'˜Að -˜×,Ñ,Ø ðà#'Ø&,Ø(3ñ	ð
 %óð "'ñ	óñ ‘ð ˜Ÿ	™	ñ "'óñ "'˜Að -˜×,Ñ,Ø ðà#'Ø(3ñð %ó	ð "'ñó
ñ 
‘ð �D×%Ñ%Ó'Ñ'ˆDà×!Ò!Ø1�×1Ñ1Ø×&Ñ&ñØ4?ðØCIñˆAñ Ø˜ a™Ñ'�áØÐ*Ð*Ð*Ø×ÑÔà×#Ò#ØÐ(�D×(Ñ(¨Ñ:°6Ñ:Ñ:ˆDà×"Ò"Ø1�×1Ñ1Ø×'Ñ'ñØ+1ñˆAñ Ø˜ qÑ(Ñ(�à×#Ò#ØÐ(�D×(Ñ(¨Ñ:°6Ñ:Ñ:ˆDà×*Ò*ØÐ*�D×*Ñ*¨6Ñ<°VÑ<Ñ<ˆDà×!Ñ!Ð-ØÐ*�D×*Ñ*¨6Ñ<°VÑ<Ñ<ˆDàˆùòq	ùòs   ÂH
Ã
H
c                óN   ‡ ‡— dj                  ˆˆ fd„|D «       «      }|r|dz  }|S )Nr  c              3  ó„   •K  — | ]7  \  }}|d v s|‰j                   j                  k(  r |j                  ‰fi ‰¤Ž–— Œ9 y­w))Nr©  N)r¢  rñ   rË  )r*  Úprefixré  rÃ  r  s      €€rþ   r,  z1SQLCompiler._generate_prefixes.<locals>.<genexpr>š  sI   øè ø€ ð 
á(0Ñ$�˜Ø˜{Ñ*¨l¸d¿l¹l×>OÑ>OÒ.Oð &ˆF×%Ñ% dÑ1¨bÕ1Ù(0ùs   ƒ=A rà  )r  rH  rv  rÃ  r  s   `  ` rþ   r\  zSQLCompiler._generate_prefixes™  s1   ù€ Ø—‘ô 
á(0ó
ó 
ˆñ
 Ø�c‰MˆFØˆrý   c                óv  — | j                   sy|r§|dkD  r¢t        j                  «       }t        | j                   j	                  «       «      D ]g  }| j
                  |j                  «          \  }}}|j                  xs |j                  }||k(  xs |xr ||dz   k(  }	|r|	sŒV| j                   |   ||<   Œi n| j                   }|syt        |D �cg c]  }|j                  ‘Œ c}«      }
| j                  |
«      dz   }|dj                  |j                  «       D �cg c]  }|‘Œ c}«      z  }|dz  }|r{|dkD  rvt        |j	                  «       «      D ]Z  }| j
                  |j                  «          \  }}}| j                   |= | j                  ||f= | j
                  |j                  «       = Œ\ |S c c}w c c}w )zå
        include_following_stack
            Also render the nesting CTEs on the next stack. Useful for
            SQL structures like UNION or INSERT that can wrap SELECT
            statements containing nesting CTEs.
        r‘  r   r  ú, 
z
 )rD  r&   r…  r€  ÚkeysrF  rR  rS  rg   rY  Úget_cte_preamblerw   r§  rE  )r  r¾  rI  rD  rJ  rh  rd  rE  rS  Úis_rendered_levelrG  Úcte_textÚtxts                rþ   rÄ  zSQLCompiler._render_cte_clause£  sº  € ð �yŠyØñ ˜]¨QÒ.Ü×#Ñ#Ó%ˆDÜ˜DŸI™IŸN™NÓ,Ö-�Ø04×0FÑ0FØ×*Ñ*Ó,ñ1Ñ-�	˜8 Xð Ÿ+™+Ò9¨×)9Ñ)9�Ø$-°Ñ$>ò %Ø+ÒN°	¸]ÈQÑ=NÑ0Nð "ñ  Ñ$5Øà ŸI™I c™N��S’	ñ .ð —9‘9ˆDáØÜ±tÓ<±t°˜cŸm›m°tÑ<Ó=ˆà×(Ñ(¨Ó8¸3Ñ>ˆØ�F—K‘K°·±´Ó >±¨¢°Ñ >Ó?Ñ?ˆØ�EÑˆá˜]¨QÒ.Ü˜DŸI™I›KÖ(�Ø04×0FÑ0FØ×*Ñ*Ó,ñ1Ñ-�	˜8 Xð —I‘I˜c�NØ×+Ñ+¨Y¸Ð,AÐBØ×*Ñ*¨3×+AÑ+AÓ+CÑDð )ð ˆùò =ùò !?s   ÃF1Ä	F6
c                ó
   — |ryy)NzWITH RECURSIVEÚWITHrü   )r  rY  s     rþ   r  zSQLCompiler.get_cte_preambleØ  s   € ÙØ#àrý   c                óh   — |j                   rt        j                  dd¬«       |j                  rdS dS )zcCalled when building a ``SELECT`` statement, position is just
        before column list.

        a  DISTINCT ON is currently supported only by the PostgreSQL dialect.  Use of DISTINCT ON for other backends is currently silently ignored, however this usage is deprecated, and will raise CompileError in a future release for all backends that do not support this syntax.z1.4©ÚversionrË   r‘  )Ú_distinct_onr&   Úwarn_deprecatedÚ	_distinct©r  r™   rÃ  s      rþ   rÝ  z!SQLCompiler.get_select_precolumnsÞ  s:   € ð
 ×ÒÜ× Ñ ð3ð
 õð %×.Ò.ˆ{Ð6°BÐ6rý   c                óx   —  | j                   |j                  t        t        j                     fi |¤Ž}|rd|z   S y)z5allow dialects to customize how GROUP BY is rendered.z
 GROUP BY r‘  )râ  rö  rs  r!   Úcomma_op)r  r™   rÃ  Úgroup_bys       rþ   rN  zSQLCompiler.group_by_clauseî  sG   € ð 1�4×0Ñ0Ø×$Ñ$¤i´	×0BÑ0BÑ&Cñ
ØGIñ
ˆñ Ø (Ñ*Ð*àrý   c                óx   —  | j                   |j                  t        t        j                     fi |¤Ž}|rd|z   S y)z5allow dialects to customize how ORDER BY is rendered.z
 ORDER BY r‘  )râ  rø  rs  r!   r  )r  r™   rÃ  r  s       rþ   rO  zSQLCompiler.order_by_clauseù  sG   € ð 1�4×0Ñ0Ø×$Ñ$¤i´	×0BÑ0BÑ&Cñ
ØGIñ
ˆñ Ø (Ñ*Ð*àrý   c                 ó   — y)Nz FOR UPDATErü   r  s      rþ   rú  zSQLCompiler.for_update_clause  s   € Ørý   c               óî   — |j                  dt        j                  |«      ¬«      D �����	cg c]"  \  }}}}}	 | j                  |||f||	||dœ|¤Ž‘Œ$ }
}}}}}	ddj	                  |
«      z   S c c}	}}}}w )NT)Úcols)rs  r¹  rñ   rr  ú
RETURNING rÇ   )r[  r   Ú_select_iterablesr­  rw   )r  rH  Úreturning_colsrÉ  rÃ  rñ   rr  rs  r’   rt  r¢  s              rþ   Úreturning_clausezSQLCompiler.returning_clause  s¨   € ð2 ×2Ñ2Øœ4×1Ñ1°.ÓAð 3ô ÷#
ñ"ñØØØ#ØØð )ˆD×(Ñ(ØØØ#ð	ð %8Ø#+ØØ%ñ	ð ó	ð ð# 	ô 
ð, ˜dŸi™i¨Ó0Ñ0Ð0ùö-
s   ­'A.c                óè   — d}|j                   �#|d | j                  |j                   fi |¤Žz   z  }|j                  �4|j                   €|dz  }|d | j                  |j                  fi |¤Žz   z  }|S )Nr‘  z
 LIMIT z

 LIMIT -1z OFFSET )Ú_limit_clauser©  Ú_offset_clause)r  r™   rÃ  r¬  s       rþ   rY  zSQLCompiler.limit_clause(  s„   € ØˆØ×ÑÐ+Ø�K , $§,¡,¨v×/CÑ/CÑ"JÀrÑ"JÑJÑJˆDØ× Ñ Ð,Ø×#Ñ#Ð+Ø˜Ñ%�Ø�J  §¡¨f×.CÑ.CÑ!JÀrÑ!JÑJÑJˆDØˆrý   c                ó¨  — |€|j                   }|j                  }ndddœ}d}|j                  �K|j                  }|r!|j                  |«      r|j	                  «       } | j
                  |fi |¤Ž}	|d|	z  z  }n|r|dz  }|�O|r!|j                  |«      r|j	                  «       }|d | j
                  |fi |¤Ž›|d   rdnd›d	|d
   rdnd›�z  }|S )NF)rÒ  Ú	with_tiesr‘  z
 OFFSET %s ROWSz
 OFFSET 0 ROWSz
 FETCH FIRST rÒ  z PERCENTz ROWS r   z	WITH TIESÚONLY)rW  Ú_fetch_clause_optionsr  Ú_simple_int_clauseÚrender_literal_executer©  )
r  r™   rX  Úrequire_offsetÚ"use_literal_execute_for_simple_intrÃ  Úfetch_clause_optionsr¬  Úoffset_clauseÚ
offset_strs
             rþ   rX  zSQLCompiler.fetch_clause2  s  € ð ÐØ!×/Ñ/ˆLØ#)×#?Ñ#?Ñ à/4À5Ñ#IÐ àˆà× Ñ Ð,Ø"×1Ñ1ˆMá2Ø×-Ñ-¨mÔ<à -× DÑ DÓ F�Ø%˜Ÿ™ mÑ:°rÑ:ˆJØÐ'¨*Ñ4Ñ4‰DÙØÐ&Ñ&ˆDàÐ#á2Ø×-Ñ-¨lÔ;à+×BÑBÓD�ÙØ�—‘˜\Ñ0¨RÒ0Ø2°9Ò=‘
À2ÑEØ3°KÒ@‘ÀfÐLðñ ˆDð
 ˆrý   c	                óR  — |r|j                   |j                  |<   |s|�r| j                  j                  |«      }
|rG|
rE| j                  j	                  |
«      dz   | j                  j                  |j                  «      z   }n„| j                  j                  |j                  «      }|
s]|r[|j                  |v rM| j                  d||j                     «      }|| j                  | j                  j                  d |«      «      z   }|r||v r| j                  ||||   |«      }|S y)Nr  r…  r‘  )Úfullnamers  rš  r‹  rŒ  r‰  rñ   rr  r`  rZ  rˆ  )r  r�   rS  r€  ra  rb  Ú
use_schemar±  rŽ  rÍ  r‘  r@  Ú	anon_names                rþ   Úvisit_tablezSQLCompiler.visit_table[  s%  € ñ Ø',§~¡~ˆK×Ñ˜eÑ$á’VØ#Ÿ}™}×>Ñ>¸uÓEÐáÑ.à—M‘M×.Ñ.Ð/?Ó@Øñà—m‘m×)Ñ)¨%¯*©*Ó5ñ6ñ ð —m‘m×)Ñ)¨%¯*©*Ó5�ñ )Ù0ØŸ
™
Ð&>Ñ>à $× :Ñ :ØÐ!9¸%¿*¹*Ñ!Eó!�Ið  × ?Ñ ?ØŸ™×2Ñ2°4¸ÓCó!ñ �Cñ ˜U iÑ/Ø×0Ñ0Ø˜ 	¨%Ñ 0°&ó�ð ˆJàrý   c                óæ  — |ri|j                   j                  t        j                  t	        |j
                  j                  «      t	        |j                  j                  «      «      «       |j                  rd}n|j                  rd}nd} |j
                  j                  | fd|dœ|¤Ž|z    |j                  j                  | fd|dœ|¤Žz   dz    |j                  j                  | fd|i|¤Žz   S )Nz FULL OUTER JOIN z LEFT OUTER JOIN z JOIN Tró  ú ON r±  )rt  rf  r¥  r´  r)   rx   r*   rŒ   ru   ÚisouterrË  Úonclause)r  rw   rS  r±  rÍ  Ú	join_types         rþ   Ú
visit_joinzSQLCompiler.visit_join‹  s
  € ÙØ×Ñ×$Ñ$Ü×!Ñ!Ü˜dŸi™i×5Ñ5Ó6Ü˜dŸj™j×6Ñ6Ó7óôð �9Š9Ø+‰IØ�\Š\Ø+‰Ià ˆIà(ˆD�I‰I×(Ñ(ØðØ!¨{ñØ>Dñð ñð ,ˆd�j‰j×+Ñ+ØðØ!¨{ñØ>Dññ	ð ñð /ˆd�m‰m×.Ñ.ØñØ"-ðØ17ññð	
rý   c                ó"  — |j                   j                  «       D ���ci c]%  \  \  }}}|d| j                  j                  fv r||“Œ' }}}}|j                  |v r+| j                  ||j                  ||j                     d«      }||fS c c}}}w )Nr©  T)rÛ  rg  r¢  rñ   r�   rˆ  )r  rH  Ú
table_textr�   r¢  ræ  Údialect_hintss          rþ   Ú_setup_crud_hintszSQLCompiler._setup_crud_hints©  s�   € ð 04¯{©{×/@Ñ/@Ô/Bõ
á/BÑ+Ñ �˜ )Ø˜3 §¡× 1Ñ 1Ð2Ñ2ð �9ÑØ/Bð 	ò 
ð
 �:‰:˜Ñ&Ø×3Ñ3Ø˜DŸJ™J¨°d·j±jÑ(AÀ4óˆJð ˜jÐ(Ð(ùô
s   Ÿ*B
c                ó¤  — | j                   j                  }|j                  }|j                  }|€y|j                  r'| j
                  j                  |j                  d«      }n&| j                  j                  |j                  d«      }||z  r|S |j                  r3t        j                  d|d   › d| j                   j                  › d�«      ‚y)a)  given a :class:`.Table`, return a usable sentinel column or
        columns for this dialect if any.

        Return None if no sentinel columns could be identified, or raise an
        error if a column was marked as a sentinel explicitly but isn't
        compatible with this dialect.

        Nr   zColumn z@ can't be explicitly marked as a sentinel column when using the a�   dialect, as the particular type of default generation on this column is not currently compatible with this dialect's specific INSERT..RETURNING syntax which can receive the server-generated value in a deterministic way.  To remove this error, remove insert_sentinel=True from primary key autoincrement columns; these columns are automatically used as sentinels for supported dialects in any case.)r¢  Ú"insertmanyvalues_implicit_sentinelÚ _sentinel_column_characteristicsr¢  Ú
is_autoincÚ_sentinel_col_autoinc_lookupr™  Údefault_characterizationÚ _sentinel_col_non_autoinc_lookupÚis_explicitr7   r-  rñ   )r  r�   Úsentinel_optsÚsentinel_characteristicsÚ	sent_colsÚbitmasks         rþ   Ú_get_sentinel_column_for_tablez*SQLCompiler._get_sentinel_column_for_tableÕ  sß   € ð Ÿ™×GÑGˆØ#(×#IÑ#IÐ à,×4Ñ4ˆ	àÐØà#×.Ò.Ø×7Ñ7×;Ñ;Ø(×AÑAÀ1ó‰Gð ×;Ñ;×?Ñ?Ø(×AÑAÀ1óˆGð ˜7Ò"ØÐà#×/Ò/ô ×)Ñ)Ø˜) A™,˜ð (>à—<‘<×$Ñ$Ð%ð &@ð
@óð ð rý   c              #  óÎ  ‡ ‡‡@‡A‡B‡C‡DK  — ‰ j                   }|€J ‚|j                  sd }	nt        j                  |j                  Ž }	t	        |«      }
|j
                  r‰ j                  j                  sd}d}nE‰ j                  j                  r&|r)‰ j                  r|j                  �|j                  rd}d}nd}d}|rNt        t        dt        ||«      «      d«      D ]*  \  }\  }}t        ||‰|g|	r	 |	|«      gng d||
||«
      –— Œ, y |r,t!        j"                  ‰ j$                  j&                  |¬«      }nd }|j(                  }|r ||«      }d|› d�}|j+                  |d«      }‰ j                  j,                  }|rAt	        ‰ j.                  «      }t	        |j0                  «      }||z
  }t3        |||z
  |z  «      }t        d	t5        |«      «      }t        d	t5        |«      «      }d }d}|
|z  |
|z  rdnd
z   }|j0                  }|€J ‚|r$|D ����cg c]  \  }}}}|| ||«      |f‘Œ }}}}}d
xŠCŠD‰ j6                  s¢‰ j8                  r‰ j8                  ŠAni ŠAt;        |d
   «      } ˆAˆ fd„Š@|j<                  rd}!nd}!ddj?                  ˆ@fd„|D «       «      › |!› d�}"| jA                  ˆAfd„|D «       «      }#| jC                  |#«      D �ci c]  }||d
   |   “Œ }$}dŠBnúd}"t;        «       }#i }$|j<                  rd|› d�ŠBnd|› d�ŠBt;        «       }%|j0                  D ]  }&|%jE                  |&d   «       Œ |%r]‰ jF                  }'|'€J ‚t        |'«      D �(�)ch c]  \  }(})|)|%v r|(’Œ }*}(})t3        |*«      ŠCtI        |*«      dz   ŠDt	        |*«      ‰D‰Cz
  k(  sJ ‚‰ jJ                  r9tM        jN                  ‰ jP                  «      }+tM        jR                  |+› d�d‰B«      ŠB|�r[|d
| },|d
| }-g |d
| g |d
| |r|}.nt	        |,«      }.‰r,ˆfd„tU        |.«      D «       D �/�0�1cg c]  \  }/}0}1|/|0|1f‘Œ }}0}/}1‰ j6                  �r|jV                  }2|2t	        |,d
   «      k(  rdx}3}4|,}5n|,d
   d ‰C }3|,d
   ‰Dd  }4ˆCˆDfd„|,D «       }5|j<                  r'dj?                  ˆBfd„t        |,«      D «       «      d d }6n‰B|.z  d d }6‰ jJ                  r9|2d
kD  r4|4rJ ‚‰Cdz   }7|2|.z  |7z   }8tY        ˆ fd„tU        |7|8«      D «       «      }9|6|9z  }6|j+                  d|6«      }:tY        tZ        j\                  j_                  |5«      «      };|3|;z   |4z   };nÁg }<|$ja                  «       };t        |,«      D ]€  \  }=}|"j+                  dtc        |=«      «      }>|j<                  r|>j+                  dtc        |=«      «      }>|<je                  |>«       |;jE                  |#D �ci c]  }|› d|=› �||   “Œ c}«       Œ‚ |j+                  ddj?                  |<«      «      }:t        |:|;||,|	r|-D �?cg c]
  }? |	|?«      ‘Œ c}?ng |.|||d«
      –— |dz  }|r�ŒZy y c c}}}}w c c}w c c})}(w c c}1}0}/w c c}w c c}?w ­w)NTFzKSequence[Tuple[_DBAPISingleExecuteParams, _MutableCoreSingleExecuteParams]]r   ©r—  r  r  Ú__EXECMANY_TOKEN__zList[Sequence[Any]]r   c                ó    •— | D ]G  }‰j                  ||«      }|j                  ‰j                  d|iz  ‰j                  d|› d�iz  «      }ŒI |S )Nrñ   Ú__EXECMANY_INDEX__)r™  rª  r-  )r  Ú	formattedr+  r?  r  s      €€rþ   Úapply_placeholderszISQLCompiler._deliver_insertmanyvalues_batches.<locals>.apply_placeholders¡  sg   ø€ Û�CØ,×0Ñ0°°cÓ:�CØ )× 1Ñ 1Ø×)Ñ)¨V°S¨MÑ9Ø×)Ñ)Ø! c UÐ*<Ð#=Ð>ñ?ó!‘Ið  ð !Ð rý   z, _IMV_VALUES_COUNTERr‘  rÇ   c              3  ó:   •K  — | ]  \  }}}} ‰||«      –— Œ y ­wr  rü   )r*  r  rK  Ú	bind_keysrL  s       €rþ   r,  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>¯  s)   øè ø€ ð 6á2DÑ.�A�q˜) Yñ # 9¨i×8Ù2Dùrì  c              3  óZ   •K  — | ]"  \  }}}}|D ]  }‰j                  ||«      –— Œ Œ$ y ­wr  r  )r*  r  rN  r+  r?  s       €rþ   r,  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>´  s<   øè ø€ ð 4á*<Ñ&�A�q˜!˜YÛ$�Cð #×&Ñ& s¨C×0à$ð 1Ù*<ùó   ƒ(+z, _IMV_VALUES_COUNTER), z), r  z\d+r�  c              3  óH   •K  — | ]  }‰D ]  \  }}}|› d |› �||f–— Œ Œ y­w)r  Nrü   )r*  ro  r+  Úlen_rÖ  Úgeneric_setinputsizess        €rþ   r,  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>ú  s>   øè ø€ ð /á%>˜EÛ.C™N˜C  sð  ˜5  % Ð)¨4°Ô5à.Cð 6Ù%>ùrr  rü   c              3  ó(   •K  — | ]	  }|‰‰ –— Œ y ­wr  rü   )r*  rl  Úexpand_pos_lower_indexÚexpand_pos_upper_indexs     €€rþ   r,  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>  s"   øè ø€ ð &á!&˜Að Ð0Ð1GÔHÙ!&ùs   ƒc              3  óZ   •K  — | ]"  \  }}‰j                  d t        |«      «      –— Œ$ y­w)Ú_IMV_VALUES_COUNTERN)rª  rï   )r*  ræ  r  Úexecutemany_values_w_commas      €rþ   r,  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>  s5   øè ø€ ð  ñ )9¡  1ð 7×>Ñ>Ø 5´s¸1³v÷ñ )9ùrP  éþÿÿÿc              3  ó>   •K  — | ]  }‰j                   › |› �–— Œ y ­wr  )r/  )r*  ræ  r  s     €rþ   r,  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>3  s)   øè ø€ ð &á!2˜Að  ×>Ñ>Ð?À¸sÔCÙ!2ùrž  ÚEXECMANY_INDEX__rX  Ú__)3r;  rA  r/  r>  r˜  r6  r¢  Úsupports_default_metavalueÚsupports_multivalues_insertr•  r?  r=  rå  r   rÄ  rE  Ú	functoolsÚpartialrš  rª  r7  rª  Úinsertmanyvalues_max_parametersr)  r9  Úminr€  rQ  r?  ro   rC  rw   r  rÒ  rf  r%  r1  r4  rL  rM  r/  r–  Úranger;  r.  r¥  r¦  Úfrom_iterablerF  rï   r�  )Er  r   r!  Úcompiled_parametersrS  Ú
batch_sizer<  r—  ÚimvÚ_sentinel_from_paramsÚ	lenparamsÚuse_row_at_a_timeÚ
downgradedrM  ÚparamÚcompiled_paramÚrstÚimv_single_values_exprÚexecutemany_valuesÚ
max_paramsÚtotal_num_of_paramsÚnum_params_per_batchÚnum_params_outside_of_batchÚbatchesÚcompiled_batchesrI  rN  r9  ró  r+  rø  ÚstÚall_keysÚimv_values_counterÚformatted_values_clauseÚkeys_to_replaceÚbase_parametersÚall_names_we_will_expandr˜  r%  r?  rñ   Úall_expand_positionsÚescapedrJ  Úcompiled_batchrL  Únew_keyrR  rÖ  Únum_ins_paramsÚextra_params_leftÚextra_params_rightÚbatch_iteratorÚexpanded_values_stringr}  ri   r“  rF  rG  Úreplaced_values_clausesræ  ÚfmvrM  rL  r?  rY  rU  rV  sE   `   `                                                           @@@@@rþ   Ú!_deliver_insertmanyvalues_batchesz-SQLCompiler._deliver_insertmanyvalues_batches  s  þè ø€ ð ×$Ñ$ˆØˆÐˆà×&Ò&Ø$(Ñ!ä$,×$7Ñ$7Ø×(Ñ(ð%Ð!ô ˜
“Oˆ	Ø×Ò t§|¡|×'NÒ'Nð !%ÐØ‰JØ—‘×9Ò9Ù#Ø×$Ò$Ø×%Ñ%Ð-°×1NÒ1Nð
 !%ÐØ‰Jà %ÐØˆJáÜ5>ÜØaÜ˜
Ð$7Ó8óð ö6Ñ1�Ñ1˜5 .ô -ØØØ)Ø�Gñ 1ñ /¨~Ó>Ñ?ààØØØ+Øóó ð6ð. áÜ×#Ñ#Ø—‘×7Ñ7Ø%9ô‰Cð
 ˆCà!$×!7Ñ!7ÐÙÙ%(Ð)?Ó%@Ð"à Ð!7Ð 8¸Ð:ÐØ×%Ñ%Ð&8Ð:NÓOˆ	ð —\‘\×AÑAˆ
ÙÜ"% d§o¡oÓ"6ÐÜ#& s×'=Ñ'=Ó#>Ð à#Ð&:Ñ:ð (ô ØàÐ"=Ñ=Ø+ñ,óˆJô Ð,¬d°:Ó.>Ó?ˆÜØ!¤4Ð(;Ó#<ó
Ðð HLÐØˆØ! ZÑ/Ø˜ZÒ'‰A¨Qñ
ˆð !×3Ñ3ÐØ!Ð-Ð-Ð-áñ +=ö"á*<Ñ&�C˜˜d Bð �c™3˜t›9 bÒ)Ø*<ð ó "ð ;<Ð;ÐÐ!7à�ŠØ×&Ò&Ø%)×%<Ñ%<Ñ"à%'Ð"ä˜: a™=Ó)ˆHõ!ð ×'Ò'Ø%<Ñ"à%'Ð"Ø*+¨D¯I©Ió 6á2Dó6ó -ð ,ð "Ð" !ð''Ð#ð
 '×3Ñ3ó 4á*<ó4ó ˆOð $×.Ñ.¨Ô?óá?�Cð �Z ‘] 3Ñ'Ñ'Ø?ð ð ð *,Ñ&à&(Ð#Ü!›eˆOØ ˆOà×'Ò'àÐ.Ð/Ð/GÐHñ +ð 01Ð1GÐ0HÈÐ-LÐ*ä14³Ð$Ø×.Ô.�Ø(×/Ñ/°°Q±Õ8ð /ñ (Ø"×.Ñ.�Ø"Ð.Ð.Ð.ô &/¨{Ô%;ô(á%;™	˜˜TØÐ7Ñ7ò Ø%;ð %ñ (ô
 *-Ð-AÓ)BÐ&Ü),Ð-AÓ)BÀQÑ)FÐ&äÐ,Ó-Ø-Ð0FÑFòGððGð ×"Ò"ÜŸ)™) D×$GÑ$GÓH�Ü-/¯V©VØ�y Ð$ dÐ,Fó.Ð*ò Ø˜A˜jÐ)ˆEØ-¨a°
Ð;ˆNà$&ˆG�A�jÐ!Ø-/Ð˜Q˜zÐ*áØ%/Ñ"ä%(¨£ZÐ"á$ó/ä%*Ð+=Ô%>ô/õ+ñ/Ñ*˜  sð ˜d CÒ(ð/ð (ò +ð �‹Ø!$×!BÑ!B�ð "¤S¨¨q©£]Ò2Ø=?Ð?Ð%Ð(:Ø%*‘Nà(-¨a©Ð1HÐ2HÐ(IÐ%Ø).¨q©Ð2HÐ2IÐ)JÐ&ô&á!&ó&�Nð
 ×+Ò+àŸ™ó  ô )2°%Ô(8ó	 ó ð �rð.Ñ*ð 4Ð6HÑHØ�rð.Ð*ð ×&Ò&¨>¸AÒ+=ñ  2Ð1Ð1à2°QÑ6�EØ(Ð,>Ñ?À%ÑG�Cô !&ó &ä!& u¨cÔ!2ó&ó !�Ið .DÀiÑ-OÐ*à%.×%6Ñ%6Ø(Ð*@ó&Ð"ô ',Ü—O‘O×1Ñ1°.ÓAó'Ð#ð
 &Ø)ñ*à(ñ)ñ $ð +-Ð'Ø&5×&:Ñ&:Ó&<Ð#ä )¨%Ö 0‘H�A�uØ1×9Ñ9Ø*¬C°«Fó�Cð ×/Ò/Ø!Ÿk™kÐ*?ÄÀQÃÓH˜à+×2Ñ2°3Ô7Ø'×.Ñ.Ù>MÓN¹o°s˜C˜5  1 #˜¨¨c©
Ñ2¸oÑNõð !1ð &/×%6Ñ%6Ø(Ø—I‘IÐ5Ó6ó&Ð"ô
 )Ø"Ø#Ø'Øñ -ñ :HÓH¹°2Ñ*¨2Õ.¸ÒHàà"ØØØ'Øóò ð  ˜‰MˆHõI ùõo"ùòPùó:(ùôD+ùòx Oùò IùsX   ‰HY%ÈY
È1B"Y%ËY	Ë#A;Y%ÍYÍ.B5Y%Ð#YÐ3FY%×Y
×9Y%ØY Ø&Y%Ø?&Y%c                óä  ‡ —  |j                   |‰ fi |¤Ž}|j                  }|�||d<   d}n‰ j                   }|r-d‰ _        ‰ j                  s|‰ _        ‰ j
                  s|‰ _        ‰ j                  j                  t        «       t        «       |dœ«       d}d }‰ j                  r|€g }t        j                  ‰ |||fd|i|¤Ž}‰ j                  rB|�@t        |«      }‰ j                  r)‰ j                  �‰ xj                  |z  c_        n|‰ _        |j                  }	|	sn‰ j                  j                   sX‰ j                  j"                  sB‰ j                  j$                  s,t'        j(                  d‰ j                  j*                  z  «      ‚|j,                  rˆ‰ j                  j.                  s,t'        j(                  d‰ j                  j*                  z  «      ‚‰ j0                  s|j2                  r!|j4                  rt'        j(                  d	«      ‚|j                  }	n|j                  }	‰ j6                  }
‰ j                  j                   }d
}|j8                  r!| ‰ j:                  ||j8                  fi |¤Žz  }|dz  }|
j=                  |j>                  «      }|j@                  r‰ jC                  ||«      \  }}|jD                  r‰ jG                  ||«       ||z  }|	s|s,|ddjI                  |	D ��cg c]	  \  }}}}|‘Œ c}}«      z  z  }|jJ                  }d }d }d}‰ j0                  xs |j2                  }|rë|jL                  }|�´|sJ ‚|	D ���ci c]
  \  }}}}||“Œ }}}}g }|D ]7  }||vrd } n/‰ jO                  |«      }|||   vrd } n|j                  |«       Œ9 |€@‰ j                  jP                  tR        jT                  z  rd}n|d   jV                  rJ d«       ‚tY        |«      tY        |«      z   }‰ j[                  |||¬«      }‰ j\                  r|d|z   z  }nd }|j^                  �‡ ‰ j`                  ‰ j                  d   d   fddi|¤Ž}‰ jb                  rL‰ j                  jd                  r6|st        ‰ j                  «      nd }|d‰ jg                  |d¬«      ›|›�z  }�nï|d|z  z  }�nå|	sf|rd|dz  }|�rÙti        d‰ j                  jj                  tm        d|	«      ||j4                  |jn                  d u||rt        |«      nd|¬«	      ‰ _8        �n}|j,                  r*|ddjI                  d„ |jr                  D «       «      ›�z  }�nGdjI                  tm        d|	«      D ��cg c]	  \  }}}}|‘Œ c}}«      }|�r|rµ‰ j                  jP                  tR        jt                  z  rŽ|jv                  s‚d}‰ j                  jP                  tR        jx                  z  } djI                  d„ t{        |	«      D «       «      }!| r$djI                  ˆ fd„t{        |	«      D «       «      }"n|!}"|d|"› d|› d|!› d �z  }nd}|d!|› d"�z  }ti        d|tm        d|	«      ||j4                  |jn                  d u||rt        |«      nd|||¬#«      ‰ _8        n	|d!|› d"�z  }|jn                  �' ‰ j`                  |jn                  fi |¤Ž}#|#r|d|#z   z  }|r‰ j\                  s|d|z   z  }‰ jb                  rE‰ j                  jd                  s/|st        ‰ j                  «      nd }‰ jg                  |d¬«      |z   }‰ j                  j}                  d«       |S c c}}w c c}}}w c c}}w )$NrM  FTr¼  r   rA  zWThe '%s' dialect with current database version settings does not support empty inserts.zcThe '%s' dialect with current database version settings does not support in-place multirow inserts.zcRETURNING cannot be determinstically sorted when using an INSERT which includes multi-row values().zINSERT zINTO ú (%s)rÇ   zTsentinel selection rules should have prevented us from getting here for this dialect©rÉ  r  r{  r  rá  rH  r„  z DEFAULT VALUESr8  )r<  r=  r?  r@  rB  z VALUES c              3  óR   K  — | ]  }d dj                  d„ |D «       «      z  –— Œ! y­w)rñ  rÇ   c              3  ó*   K  — | ]  \  }}}}|–— Œ y ­wr  rü   )r*  r  r¸  s      rþ   r,  z5SQLCompiler.visit_insert.<locals>.<genexpr>.<genexpr>f  s   è ø€ Ð L¹^©>¨1¨a°¸¤¹^ùs   ‚Nrà  )r*  Úcrud_param_sets     rþ   r,  z+SQLCompiler.visit_insert.<locals>.<genexpr>d  s3   è ø€ ð ñ +N˜ð Ø—y‘yÑ L¹^Ó LÓLõNá*Mùs   ‚%'c              3  ó,   K  — | ]  \  }}d |› �–— Œ y­w©ÚpNrü   )r*  ræ  r  s      rþ   r,  z+SQLCompiler.visit_insert.<locals>.<genexpr>‹  s   è ø€ ð )Ù,I¡D A q˜!˜A˜3œÑ,Iùs   ‚c              3  ó®   •K  — | ]L  \  }^}}‰j                  |j                  |j                  j                  ‰j                  «      d |› �«      –— ŒN y­wr’  )r¦  rõ   rÔ  r¢  )r*  ræ  ró  r  r  s       €rþ   r,  z+SQLCompiler.visit_insert.<locals>.<genexpr>—  sX   øè ø€ ð 4ñ 1N¡  9 C¨!ð !×1Ñ1Ø #§¡Ø #§¡× @Ñ @ÀÇÁÓ NØ"# A 3 ÷ñ
 1Nùs   ƒAAz SELECT z FROM (VALUES (z)) AS imp_sen(z#, sen_counter) ORDER BY sen_counterz	 VALUES (r  )r6  r7  r9  r;  r<  r=  r?  r@  rA  rB  rC  )?rJ  r   r€  r   rœ  r  r�  ro   rQ  r   Ú_get_crud_paramsr˜  r4  rA  Úsingle_paramsr¢  Úsupports_default_valuesr^  Úsupports_empty_insertr7   rÃ  rñ   Ú_has_multi_parametersr_  r&  Ú
_returningÚ_sort_by_parameter_orderrš  r]  r\  Úformat_tabler�   rÛ  r8  rÀ  rÁ  rw   Úuse_insertmanyvaluesÚuse_sentinel_columnsr  r:  rR  r[  Ú_insert_sentinelr€  r  r*  r™   r©  rD  Úcte_follows_insertrÄ  r5  Údefault_metavalue_tokenr   Ú_post_values_clauser;  Úall_multi_paramsr]  Úis_default_metavalue_onlyr^  rå  rv  )$r  Úinsert_stmtrA  rM  rÃ  r  rÇ  Úcounted_bindparamÚcrud_params_structÚcrud_params_singlerš  r—  r¬  r6  r  rø  r�  Únamed_sentinel_paramsÚadd_sentinel_colsrB  r  ró  Úparam_namesÚ_params_by_colÚ_add_sentinel_colÚ
param_namer  Úselect_textr¾  r¸  rs  Úembed_sentinel_valueÚrender_bind_castsÚcolnamesÚcolnames_w_castÚpost_values_clauses$   `                                   rþ   Úvisit_insertzSQLCompiler.visit_insertn  s‡  ø€ ð ;˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆð $×-Ñ-ˆàÐ#Ø!-ˆBˆ~ÑØ‰HàŸ:™:�~ˆHáØ ˆDŒMØ×)Ò)Ø)6�Ô&Ø×%Ò%Ø%2�Ô"à�
‰
×Ñä#&£5Ü #£Ø)ñô	
ð Ðð !Ðð �?Š?˜|Ð3ð
 !#Ðä!×2Ñ2ØØØØñ	
ð
 0ð
ð ñ
Ðð �?Š?Ð0Ð<Ü #Ð$5Ó 6ÐØ×"Ò"Ø×)Ñ)Ð5Ø×*Ò*Ð.?Ñ?Ö*à->�DÔ*à/×=Ñ=Ðñ #Ø—L‘L×8Ò8Ø—L‘L×;Ò;Ø—L‘L×6Ò6ä×"Ñ"ðà!Ÿ\™\×.Ñ.ñ/óð ð ×.Ò.Ø—<‘<×;Ò;Ü×&Ñ&ð1à37·<±<×3DÑ3DñEóð ð ×'Ò'¨;×+AÒ+AØ×6Ò6Ü×&Ñ&ðIóð ð "4×!AÑ!AÑà!3×!AÑ!AÐà—=‘=ˆØ"&§,¡,×"FÑ"FÐàˆà× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ68ññ ˆDð 	�‰ˆØ×*Ñ*¨;×+<Ñ+<Ó=ˆ
à×ÒØ ×2Ñ2°;À
ÓK‰MˆAˆzà×(Ò(Ø×+Ñ+¨K¸Ô<à�
ÑˆáÑ%<Ø�G˜dŸi™iÙ+=Ô>Ñ+=™-˜!˜T 1 a’Ð+=Ò>óñ ñ ˆDð  2×FÑFÐØ9=ÐØ ÐØ!Ðà×0Ñ0ÒJ°K×4JÑ4JˆÙØ 2× GÑ GÐØ Ð,Ù+Ð+Ð+ñ 3Eõ"á2DÑ.˜˜Q  ;ð ˜Ñ$Ø2Dð ò "ð )+Ð%Û):Ð%Ø(°Ñ>Ø04Ð-ÙØ!%×!CÑ!CØ)ó"�Jð "¨Ð8IÑ)JÑJØ04Ð-ÙØ)×0Ñ0°Õ<ð *;ð )Ð0ð Ÿ™×GÑGÜ6×HÑHòIð -1Ñ)ð $5°QÑ#7×#HÒ#Hð ðDóÐHô "& nÓ!5¼Ð=NÓ8OÑ!O�à#×4Ñ4ØØØ$,ð  5ó  Ðð ×-Ò-Ø˜Ð.Ñ.Ñ.‘ð  $Ðà×ÑÐ)à&˜$Ÿ,™,Ø—
‘
˜2‘Ð3Ñ4ñØBFðØJLñˆKð �yŠy˜TŸ\™\×<Ò<Ù7?¤ D§J¡J¤ÀT�ÙØ×+Ñ+Ø&3Ø04ð ,ô ñ  ðñ ’ð ˜ Ñ+Ñ+’Ù#Ñ(?ØÐ%Ñ%ˆDÚ#Ü):ØØ—L‘L×8Ñ8ÜØ9Ð;Móð &à#×<Ñ<ð $×7Ñ7¸tÐCà%6á2CœÐ-Ô.Èà&7ô#*�Ö&ð& ×0Ò0ÙØ—	‘	ñ ð +=×*MÒ*Móô ðñ ŠDð )-¯	©	ô +/Ø9Ø*ô+ôñ+™˜˜1˜e Qò ð+òó)Ð%ò $á%àŸ™×GÑGÜ6×MÑMòNð
 0×IÒIð ,0Ð(ð Ÿ™×GÑGÜ6×NÑNñOð &ð
  $Ÿy™yñ )Ü,5Ð6HÔ,Ió)ó  �Hñ )ð +/¯)©)ó 4ô 1:Ð:LÔ0Mó4ó +™ð +3˜àØ" ?Ð"3ð 4$Ø$=Ð#>ð ?&Ø&. Zð 0/ð/ñ‘Dð ,1Ð(Ø˜iÐ(AÐ'BÀ!ÐDÑD�Dä):Ø$)Ø'@Ü'+Ø9Ø*ó(ð 3Dà#×<Ñ<ð $×7Ñ7¸tÐCà%6á2CœÐ-Ô.Èà(=Ø&7Ø)=ô)*�Õ&ð0 ˜)Ð$=Ð#>¸aÐ@Ñ@�à×*Ñ*Ð6Ø!- §¡Ø×/Ñ/ñ"Ø35ñ"Ðñ "Ø˜Ð0Ñ0Ñ0�á D×$BÒ$BØ�CÐ*Ñ*Ñ*ˆDà�9Š9˜TŸ\™\×<Ò<Ù3;œC §
¡
œOÀˆMà×'Ñ'Ø"/Ø,0ð (ó ð ñ	ð ð 	�
‰
�‰�rÔàˆùós ?ùô0"ùó^s   Ë;]Í]%Õ;],
c                 ó   — y)z3Provide a hook for MySQL to add LIMIT to the UPDATENrü   )r  Úupdate_stmts     rþ   Úupdate_limit_clausezSQLCompiler.update_limit_clauseà  s   € àrý   c                ó6   — d|d<    |j                   | fddi|¤ŽS )z|Provide a hook to override the initial table clause
        in an UPDATE statement.

        MySQL overrides this.

        TrS  r€  rÊ  )r  r·  Ú
from_tableÚextra_fromsrÃ  s        rþ   Úupdate_tables_clausez SQLCompiler.update_tables_clauseä  s*   € ð ˆˆ8‰Ø,ˆz×,Ñ,¨TÑE¸$ÐEÀ"ÑEÐErý   c                ó   — t        d«      ‚)z~Provide a hook to override the generation of an
        UPDATE..FROM clause.

        MySQL and MSSQL override this.

        zCThis backend does not support multiple-table criteria within UPDATErÆ  ©r  r·  rº  r»  Ú
from_hintsrÃ  s         rþ   Úupdate_from_clausezSQLCompiler.update_from_clauseî  s   € ô "ð%ó
ð 	
rý   c                ó|  —  |j                   || fi |¤Ž}|j                  }|�||d<   d}n| j                   }|r-d| _        | j                  s|| _        | j
                  s|| _        | j                  t        z  r1t        i t        «       «      }| j                  t        z  }|r|| _        nd }d}|j                  }t        |«      }	|	rDt        t        |j                  «      «      }
|D �cg c]	  }||
vsŒ|‘Œ }}|
j!                  |«      }ng }|j                  h}| j                  j#                  |||dœ«       d}|j$                  r!| | j&                  ||j$                  fi |¤Žz  } | j(                  ||j                  |fd|i|¤Ž}t+        j,                  | |||fi |¤Ž}|j.                  }|j0                  r| j3                  ||«      \  }}nd }|j4                  r| j7                  ||«       ||z  }|dz  }|dj9                  d	„ t;        d
|«      D «       «      z  }| j<                  s|j>                  r>| j@                  r2|d| jC                  || j<                  xs |j>                  |¬«      z   z  }|r, | jD                  ||j                  ||fd|i|¤Ž}|r|d|z   z  }|jF                  r) | jH                  |jF                  fd|i|¤Ž}|r|d|z   z  }| jK                  |«      }|r|d|z   z  }| j<                  s|j>                  r>| j@                  s2|d| jC                  || j<                  xs |j>                  |¬«      z   z  }| jL                  r.|stO        | j                  «      nd }| jQ                  |¬«      |z   }|r|€J ‚|jS                  d¬«       | j                  jU                  d«       |S c c}w )NrM  FTr¼  zUPDATE r±  z SET rÇ   c              3  ó6   K  — | ]  \  }}}}|d z   |z   –— Œ y­w)Ú=Nrü   )r*  r  rø  r¸  s       rþ   r,  z+SQLCompiler.visit_update.<locals>.<genexpr>N  s.   è ø€ ð 
ñ&Ñ!��4˜ ð �3‰J˜Õñ&ùs   ‚zList[Tuple[Any, str, str, Any]]r  r�  ú WHERE r½  ÚUPDATE©rˆ  r{  )+rJ  r   r€  r!  rœ  r  rW  rg  rk  ro   rh  r±  Ú_extra_fromsr  r*   r�   rŽ   r�  r]  r\  r¼  r   r•  r–  rÛ  r8  rÀ  rÁ  rw   r   r&  rš  r*  r  rÀ  rõ  rî  r¸  rD  r˜  rÄ  r‰  rv  )r  r·  rM  rÃ  r  rÇ  r±  rû  r»  Úis_multitableÚ
main_fromsrü  Úrender_extra_fromsr  r¬  r6  r§  Úcrud_paramsr7  Úextra_from_textrý  rY  r¾  s                          rþ   Úvisit_updatezSQLCompiler.visit_updateü  sN  € Ø:˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆð $×-Ñ-ˆàÐ#Ø!-ˆBˆ~ÑØ‰HàŸ:™:�~ˆHáØ ˆDŒMØ×)Ò)Ø)6�Ô&Ø×%Ò%Ø%2�Ô"à�<‰<Ô4Ò4Ü$ R¬«Ó/ˆKØŸ<™<¬,Ñ6ˆLÙØ#.�Õ àˆKØ ˆLà#×0Ñ0ˆÜ˜[Ó)ˆáäœ]¨;×+<Ñ+<Ó=Ó>ˆJá&ó"Ù&�a¨!°:Ò*=’˜;ð ð "ð )×.Ñ.¨{Ó;‰Oà!#ÐØ*×0Ñ0Ð1ˆOà�
‰
×Ñà#2Ø /Ø)ñô	
ð ˆà× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ68ññ ˆDð /�T×.Ñ.ØØ×ÑØñ
ð $ð	
ð
 ñ
ˆ
ô "×2Ñ2Ø�+˜}¨hñ
Ø:<ñ
Ðð )×6Ñ6ˆà×ÒØ(,×(>Ñ(>Ø˜Zó)Ñ%ˆM™:ð !ˆMà×(Ò(Ø×+Ñ+¨K¸Ô<à�
Ñˆà�‰ˆØ�—	‘	ñ 
ä%)Ø1°;ô&ó
ó 
ñ 	
ˆð ×"Ò" k×&<Ò&<Ø×-Ò-Ø˜˜d×3Ñ3ØØ×+Ñ+ÒE¨{×/EÑ/EØ(0ð 4ó ñ ñ �ñ Ø5˜d×5Ñ5ØØ×!Ñ!Ø"Øñ	ð
 (ðð ñˆOñ Ø˜˜oÑ-Ñ-�à×&Ò&Ø1�×1Ñ1Ø×+Ñ+ñØ9DðØHJñˆAñ Ø˜	 A™Ñ%�à×/Ñ/°Ó<ˆÙØ�C˜,Ñ&Ñ&ˆDð ×#Ò# {×'=Ò'=Ø×0Ò0Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDð �9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDáØÐ*Ð*Ð*Ø×Ñ xÐÔ0à�
‰
�‰�rÔàˆùòS"s   Ã*	N9Ã4N9c                ó   — t        d«      ‚)zÀProvide a hook to override the generation of an
        DELETE..FROM clause.

        This can be used to implement DELETE..USING for example.

        MySQL and MSSQL override this.

        zCThis backend does not support multiple-table criteria within DELETErÆ  r¾  s         rþ   Údelete_extra_from_clausez$SQLCompiler.delete_extra_from_clause‰  s   € ô "ð%ó
ð 	
rý   c                ó.   —  |j                   | fdddœ|¤ŽS )NT)rS  r€  rÊ  )r  Údelete_stmtrº  r»  rÃ  s        rþ   Údelete_table_clausezSQLCompiler.delete_table_clause™  s,   € Ø,ˆz×,Ñ,Øð
Ø dñ
Ø.0ñ
ð 	
rý   c                óè  —  |j                   || fi |¤Ž}|j                  }|�||d<   d}n| j                   }|r-d| _        | j                  s|| _        | j
                  s|| _        | j                  t        z  r1t        i t        «       «      }| j                  t        z  }|r|| _        nd }d}|j                  }|j                  hj                  |«      }	| j                  j                  |	|	|dœ«       d}
|j                   r!|
 | j"                  ||j                   fi |¤Žz  }
|
dz  }
	 | j%                  ||j                  ||¬«      }t+        j,                  | |||fi |¤Ž |j.                  r| j1                  ||«      \  }}nd }|j2                  r| j5                  ||«       |
|z  }
| j6                  s|j8                  r>| j:                  r2|
d| j=                  || j6                  xs |j8                  |¬	«      z   z  }
|r, | j>                  ||j                  ||fd
|i|¤Ž}|r|
d|z   z  }
|j@                  r) | jB                  |j@                  fd
|i|¤Ž}|r|
d|z   z  }
| j6                  s|j8                  r>| j:                  s2|
d| j=                  || j6                  xs |j8                  |¬	«      z   z  }
| jD                  r.|stG        | j                  «      nd }| jI                  |¬«      |
z   }
|r|€J ‚|jK                  d¬«       | j                  jM                  d«       |
S # t&        $ r@ | j%                  ||j                  |«      }|r| j)                  |j                  |¬«      }Y �Œ&w xY w)NrM  FTr¼  zDELETE úFROM )r±  r  r�  r±  rÄ  r½  ÚDELETErÆ  r{  )'rJ  r   r€  r  rœ  r  rW  rg  rk  ro   rh  r±  rÇ  r�   rŽ   r�  r]  r\  rÒ  Ú	TypeErrorr©  r   r•  rÛ  r8  rÀ  rÁ  r&  rš  r*  r  rÏ  rõ  rî  rD  r˜  rÄ  r‰  rv  )r  rÑ  rM  rÃ  r  rÇ  r±  rû  r»  r  r¬  r6  r  r7  rÌ  rý  r¾  s                    rþ   Úvisit_deletezSQLCompiler.visit_deletež  sÛ  € Ø:˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆð $×-Ñ-ˆàÐ#Ø!-ˆBˆ~ÑØ‰HàŸ:™:�~ˆHáØ ˆDŒMØ×)Ò)Ø)6�Ô&Ø×%Ò%Ø%2�Ô"à�<‰<Ô4Ò4Ü$ R¬«Ó/ˆKØŸ<™<¬,Ñ6ˆLÙØ#.�Õ àˆKØ ˆLà#×0Ñ0ˆà&×,Ñ,Ð-×3Ñ3°KÓ@ˆØ�
‰
×Ñà#2Ø /Ø)ñô	
ð ˆà× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ68ññ ˆDð 	�‰ˆð	MØ×1Ñ1ØØ×!Ñ!ØØ'ð	 2ó ˆJô 	×Ñ˜d K°ÀÑOÈBÒOà×ÒØ(,×(>Ñ(>Ø˜Zó)Ñ%ˆM™:ð !ˆMà×(Ò(Ø×+Ñ+¨K¸Ô<à�
Ñˆð ×#Ò# {×'=Ò'=Ø×,Ò,Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDñ Ø;˜d×;Ñ;ØØ×!Ñ!ØØñ	ð
 (ðð ñˆOñ Ø˜˜oÑ-Ñ-�à×&Ò&Ø1�×1Ñ1Ø×+Ñ+ñØ9DðØHJñˆAñ Ø˜	 A™Ñ%�ð ×#Ò# {×'=Ò'=Ø×0Ò0Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDð �9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDáØÐ*Ð*Ð*Ø×Ñ xÐÔ0à�
‰
�‰�rÔàˆøôM ò 	Mð ×1Ñ1Ø˜[×.Ñ.°óˆJñ Ø—L‘L ×!2Ñ!2À�LÓL�úð	Mús   Ä+L( Ì(AM1Í0M1c                ó>   — d| j                   j                  |«      z  S )NzSAVEPOINT %s©rš  Úformat_savepoint©r  Úsavepoint_stmtrÃ  s      rþ   Úvisit_savepointzSQLCompiler.visit_savepoint  s   € Ø §¡× >Ñ >¸~Ó NÑNÐNrý   c                ó>   — d| j                   j                  |«      z  S )NzROLLBACK TO SAVEPOINT %srÙ  rÛ  s      rþ   Úvisit_rollback_to_savepointz'SQLCompiler.visit_rollback_to_savepoint   s#   € Ø)¨D¯M©M×,JÑ,JØó-
ñ 
ð 	
rý   c                ó>   — d| j                   j                  |«      z  S )NzRELEASE SAVEPOINT %srÙ  rÛ  s      rþ   Úvisit_release_savepointz#SQLCompiler.visit_release_savepoint%  s#   € Ø%¨¯©×(FÑ(FØó)
ñ 
ð 	
rý   )r¢  r\   r   r�  rž  r�  rU  r$  rV  r  rW  re  rk  zOptional[SQLCompiler]rÍ  r   )r  r7  )r  r%  )r  zDict[Any, Any])r  zMutableMapping[CTE, str])r  zVMutableMapping[str, Union[_BindProcessorType[Any], Sequence[_BindProcessorType[Any]]]])NT)rÒ  rÛ  rÔ  r  r  r  )NNTNTF)rÒ  rÛ  rÓ  rÜ  rÔ  r  rÈ  zOptional[int]rÉ  r  rS  r  r  r[   ©F)r!  r[   rT  r  r  r  )r  zCallable[[Any], str])NFFNrü   )NTrü   N)r’   úColumnClause[Any]rv  úOptional[_ResultMapAppender]r�  r  rw  rò   rŽ  z Optional[_AmbiguousTableNameMap]rÍ  r   r  rï   r  )NF)r$  zFunction[Any]rv  rä  rÍ  r   r  rï   )FN©Nrü   )NFNN)FFFFF)r3  rï   rñ   rD   r  rï   )rñ   rï   r  rï   )FFNNNN)rñ   rï   r  r  r  r  r?  r7  r  zOptional[TypeEngine[Any]]r@  zOptional[Set[str]]rA  r9  rÃ  r   r  rï   )rJ  rM   rS  r  ra  r  rb  zOptional[_FromHintsType]rM  zOptional[CTE]r±  zOptional[FromLinter]rE  zselectable._CTEOptsrÍ  r   r  r7  )FFFNFFNN)
rð   rï   rñ   rï   ró   rò   r  rô   r  r  )NNNTFFT)FFNNNFN)r™   r  r  zTuple[str, _FromHintsType]©
rH  rB   r  zSequence[ColumnElement[Any]]rÉ  r  rÃ  r   r  rï   )NFF)FFFNTNN)r�   rJ   r  r>  )r   rï   r!  rW   rf  z%List[_MutableCoreSingleExecuteParams]rS  rH  rg  r:  r<  r  r—  r–  r  z Iterator[_InsertManyValuesBatch]rm  )ùr÷   rø   rù   rú   ÚEXTRACT_MAPr)  r&   rà  r  rû   rÝ  ÚCOMPOUND_KEYWORDSrK  r  r   r!  r#  r$  r&  r'  r*  r+  r,  r0  r1  r2  r3  r4  r5  r6  r8  r:  r;  r<  Ú	frozensetr=  r>  rß  r?  r  Úpostfetch_lastrowidr@  r%  rA  rB  rC  rL  rN  r  r©  Úpatternr—  rá  r°  rJ  rf  r®  r3  rs  Úro_memoized_propertyrw  ry  r~  r�  Úmemoized_propertyrƒ  Úmemoized_instancemethodr†  Ú
contextlibÚcontextmanagerr‹  ri  rh  r¹  r»  rÈ  r¾  rÕ  rß  rÒ  rj  Úpreload_moduler  r  r6  rA  rC  rN  rT  rW  rh  rn  r{  r  rƒ  r”  r™  r�  rŸ  r¤  r­  rˆ  rº  rÊ  rÏ  rÕ  rØ  râ  rî  rô  rò  rÿ  r  r  r  r  r  r"  r'  r,  r2  r.  r@  r=  r:  rU  rQ  rû  rd  rl  ro  rt  rw  r|  r  r‹  r‰  r¢  rþ  rz  r¸  rº  r¼  r¾  rÀ  r~  rb  rc  rÉ  rË  rÓ  r×  rÛ  rß  râ  rä  ræ  rè  rê  rì  rî  rð  rÐ  rÖ  rÚ  rÞ  rþ  r   r  r  r	  r  r¦  r.   rý  rã  r  rr  r:  r³  rÁ  r$   Ú_CTEOptsrX  r|  r~  r{  rŒ  rz  r“  r�  r£  r¥  r`  rÃ  r­  r«  rˆ  rÄ  r¿  rÉ  rÌ  r<  r   r¿  rÔ  rÕ  rì  rÜ  rÚ  rß  r\  rÄ  r  rÝ  rN  rO  rú  r  rY  rX  r.  r4  r8  r,   Ú
CLIENTSIDErR  r\  ÚSENTINEL_DEFAULTÚNONErY  rZ  r?  rŽ   rX  r=  rE  rŠ  rµ  r¸  r¼  rÀ  rÍ  rÏ  rÒ  r×  rÝ  rß  rá  rü   rý   rþ   r  r  	  sÎ  … ñð €Kð 	ˆ×ÑàØØØØØØØñ	ó	
ð Ð ;ó ðð: /Ó.Ø6Ó6à€Fà)Ðà€HˆdÓØ€HˆdÓØ€HˆdÓðð
 +Ó*ð%ð .0€OÐ*Ó/ðð .0€OÐ*Ó/ð$ð BFÐÐ>ÓEðð €K�Óà(Ó(ØIà-Ó-ð6ð %Ó$ð4ð ',Ð˜tÓ+ðð 5:Ð+¨TÓ9ðð
 "€O�TÓ!ðð ÓØBà!Ó!ðð %(Ó'ðð
 .Ó-ðð
 &+Ð˜dÓ*ðð "€O�TÓ!ðð "Ð�dÓ!ðð ).Ð Ó-ðð !€N�DÓ ðð !&Ð˜Ó%ðð =AÐ Ð"9Ó@ðð +/Ð˜-Ó.ðð
 6:ÐÐ2Ó9à59ÐÐ2Ó9à=AÐÐ:ÓAá<E»KÐÐ9ÓGðñ
 :C»ÐÐ6ÓDðð
 8<·±ÐÐ4ÓFðð
 Ððð  Ðð%ð 	ð ð ó ðð (,€KÐ$Ó+ðð .2ÐÐ*Ó1à.2ÐÐ+Ó2à€FˆDÓà
,Ó,ð 3Ó2ð GÓFàÓà&˜BŸJ™JÐ'LÓMÐØ"˜Ÿ
™
Ð#4Ó5ÐØ$˜"Ÿ*™*Ø×$Ñ$Ð
% QÐ'<×'DÑ'DÐ&EÐFóÐð ñ#ó ð#ð ñCó ðCð )-Ø/3Ø %Ø%Ø59ðPàðPð +ðPð &ð	Pð
 -ðPð ðPð ðPð 3ðPð ôPðd ó=ó ð=ð$ 
×Ñóó ðð0 ñ(ó ð(ð ñ Mó ð MðD ñGó ðGð 
×Ñóó ðð 
×!Ñ!óó "ðð. ×Ññó ðò.9òvGðR 
×Ñð
ð
ó
ó ð
ò8#ð ñó ðð
 6:Ø!ñ
à2ð
ð ð
ð 
ô	
ð2 6:ØGKØ!Ø'+ØØ %ñ~à2ð~ð Eð~ð ð	~ð
 %ð~ð ð~ð ð~ð 
)ô~ð@ 
×!Ñ!ñ$ó "ð$ðL ñ
3ó ð
3ð  %ñCà3ðCð ðCð 
ô	CðJ €T×ÑÐ3Ó4ñ
ó 5ð
ð 4Ó3à	×Ñóó ðð 
×ÑØ€T×ÑÐ3Ó4ñPó 5ó ðPðd 
×ÑØ€T×ÑÐ3Ó4ñ,ó 5ó ð,ò\ò>ô@OòOð .3ô-
ð` .3ô+ð` Ø!Ø#Ø"Øô/òb
ò
/ð ;?Ø"Ø.0ØEIñ9Oà!ð9Oð 8ð9Oð ð	9Oð
 ,ð9Oð #Cð9Oð ð9Oð 
ô9OòvAòòò
òò
ô

ð4 05ô2òhòòò
òò"@òLòò&ò&Kò
ò(
òT
ò:
ò
ò
ò7ð ;?ñ,àð,ð 8ð,ð ð	,ð
 
ô,ò\8ò
òCð 04ô?òB3ò-ð ACô$òLò6ò"BòBò
ò

ò4ò$
ð ;?ôH*òTM1ðd ØØØ ô6òp8òò
ò
ò

ð 05ôò*GòGð 
×ÑñIó ðIòJòAòEòBòFòAòEòBòFòAòEòBòFò

ò	
òAòEò
ò
ò
ò
ò
ð $ØØ"ØØ ôcòJ$ð $Ø!%ó	DòB#òJðØðØ&6ðà	ôô*$ð #ØØ&*Ø48Ø48Ø15ñAàðAð ðAð ð	Að
 $ðAð 2ðAð  2ðAð /ðAð ðAð 
ôAòFCð ØØ.2Ø&*Ø,0Ø(;¨
×(;Ò(;¸EÓ(BðIàðIð ðIð ð	Ið
 ,ðIð $ðIð *ðIð &ðIð ðIð 
ôIòV3ò0ð ØØØØØØØôbòH0ò?ôò"ô$òL9ò(ð
àð
ð ð
ð !ð	
ð
 ð
ð 
ô
ð4 EIô
ð8 ØØ Ø"Ø Ø %ØôbJòHòòòò$ð .Ó-à×ÓØ1˜t×1Ñ1Ø¡£Ð-°Á	ÃÐ/LÐMó 
Ðð
 ,1ôð: '+Ð Ó*ðð ØØØØØØôKðZ
!Ø!ð
!à	#ô
!ò2òh]ò~ð Ø %ô3òjò7ò 	ò
òð1àð1ð 5ð1ð
 "ð1ð ð1ð 
ô1ò@ð ØØ+0ô'ðX ØØØØØØ!%ô.ô`
ò<
)ð" (: t×'9Ñ'9à,×7Ò7Ø,×>Ò>à,×=Ò=Ø,×>Ò>à,×1Ò1Ø,×>Ò>à,×5Ò5Ø,×5Ò5à,×5Ò5Ø,×5Ò5ð	
ó(Ð$ð& $D×#IÒ#Ià,×1Ò1Ø,×:Ò:ð	
ó$Ð ð<Øð<à	(ô<ð|YàðYð -ðYð Cð	Yð
  CðYð ðYð "&ðYð ?ðYð 
*ôYðx
 AEôpòdòFò
ôKòZ
ò 
õ
}ó~Oó
ô

rý   r  c                  ó¶   ‡ — e Zd ZdZd„ Z ej                  d«      ˆ fd„«       Zd„ Zd„ Z	d„ Z
d„ Z	 	 	 	 	 	 	 	 	 	 dd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚStrSQLCompilera“  A :class:`.SQLCompiler` subclass which allows a small selection
    of non-standard SQL features to render into a string value.

    The :class:`.StrSQLCompiler` is invoked whenever a Core expression
    element is directly stringified without calling upon the
    :meth:`_expression.ClauseElement.compile` method.
    It can render a limited set
    of non-standard SQL constructs to assist in basic stringification,
    however for more substantial custom or dialect-specific SQL constructs,
    it will be necessary to make use of
    :meth:`_expression.ClauseElement.compile`
    directly.

    .. seealso::

        :ref:`faq_sql_expression_string`

    c                 ó   — y)Nz<name unknown>rü   r~  s     rþ   r  z$StrSQLCompiler._fallback_column_name?  s   € Ørý   zsqlalchemy.engine.urlc                óT  •— |j                   dk7  r‰t        j                  j                  } |j                  j                  |j                   «      j                  «       «       }|j                  |d | ¬«      }t        |t        «      s |j                  |fi |¤ŽS t        ‰| �1  ||«      S )NrŸ   )rk  )Ústringify_dialectr&   r  Ú
engine_urlÚURLr“   Úget_dialectÚstatement_compilerr§  r÷  r©  r±  rÄ  )r  rÁ  rÂ  rÃ  Úurlr¢  Úcompilerr´  s          €rþ   rÄ  z,StrSQLCompiler.visit_unsupported_compilationB  s˜   ø€ à×$Ñ$¨	Ò1Ü—.‘.×+Ñ+ˆCØM�c—g‘g—n‘n W×%>Ñ%>Ó?×KÑKÓMÓOˆGà×1Ñ1Ø˜°4ð 2ó ˆHô ˜h¬Ô7Ø'�x×'Ñ'¨Ñ6°2Ñ6Ð6ä‰wÑ4°W¸cÓBÐBrý   c                ó~   —  | j                   |j                  fi |¤Ž›d | j                   |j                  fi |¤Ž›d�S )Nr  r  )r©  rx   rŒ   rk  s       rþ   Úvisit_getitem_binaryz#StrSQLCompiler.visit_getitem_binaryP  s:   € àˆD�L‰L˜Ÿ™Ñ+¨Ó+ØˆD�L‰L˜Ÿ™Ñ,¨Ó,ð
ð 	
rý   c                ó*   —  | j                   ||fi |¤ŽS r  ©r  rk  s       rþ   Úvisit_json_getitem_op_binaryz+StrSQLCompiler.visit_json_getitem_op_binaryV  ó   € Ø(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@rý   c                ó*   —  | j                   ||fi |¤ŽS r  r  rk  s       rþ   Ú!visit_json_path_getitem_op_binaryz0StrSQLCompiler.visit_json_path_getitem_op_binaryY  r  rý   c                ó@   — d| j                   j                  |«      › d�S )Nz<next sequence value: Ú>)rš  Úformat_sequencerC  s      rþ   r=  zStrSQLCompiler.visit_sequence\  s#   € à$ T§]¡]×%BÑ%BÀ8Ó%LÐ$MÈQÐOð	
rý   c          
     óž   — t        j                  |«      D �cg c]  }| j                  d |ddi «      ‘Œ }}ddj                  |«      z   S c c}w )NTFr  rÇ   )r   r  r«  rw   )r  rH  r  rÉ  rÃ  rv  r¢  s          rþ   r  zStrSQLCompiler.returning_clausea  s]   € ô ×+Ñ+¨NÔ;ó
á;�ð ×%Ñ% d¨A¨t°U¸BÕ?Ø;ð 	ð 
ð ˜dŸi™i¨Ó0Ñ0Ð0ùò	
s   ˜A
c                óP   ‡ ‡‡— d‰d<   ddj                  ˆˆˆ fd„|D «       «      z   S )NTrS  rÔ  rÇ   c              3  óH   •K  — | ]  } |j                   ‰fd ‰i‰¤Ž–— Œ y­w©rb  NrÊ  ©r*  rý  r¿  rÃ  r  s     €€€rþ   r,  z4StrSQLCompiler.update_from_clause.<locals>.<genexpr>s  s0   øè ø€ ð #
á �ð !ˆA× Ñ  ÑB°ÐB¸rÕBÙ ùrr  rà  r¾  s   `   ``rþ   rÀ  z!StrSQLCompiler.update_from_clauseo  s3   ú€ ð ˆˆ8‰Ø˜Ÿ™õ #
á ó#
ó 
ñ 
ð 	
rý   c                óP   ‡ ‡‡— d‰d<   ddj                  ˆˆˆ fd„|D «       «      z   S )NTrS  rÇ   c              3  óH   •K  — | ]  } |j                   ‰fd ‰i‰¤Ž–— Œ y­wr  rÊ  r  s     €€€rþ   r,  z:StrSQLCompiler.delete_extra_from_clause.<locals>.<genexpr>|  s0   øè ø€ ð  
á �ð !ˆA× Ñ  ÑB°ÐB¸rÕBÙ ùrr  rà  r¾  s   `   ``rþ   rÏ  z'StrSQLCompiler.delete_extra_from_clausex  s3   ú€ ð ˆˆ8‰Ø�d—i‘iõ  
á ó 
ó 
ñ 
ð 	
rý   c                 ó   — y)NzSELECT 1 WHERE 1!=1rü   r�  s      rþ   r‰  z#StrSQLCompiler.visit_empty_set_expr�  s   € Ø$rý   c                ó   — d|z  S )Nz[%s]rü   rÇ  s      rþ   r¿  z!StrSQLCompiler.get_from_hint_text„  s   € Ø˜‰}Ðrý   c                ó*   —  | j                   |dfi |¤ŽS )Nz
 <regexp> ©r~  rk  s       rþ   r  z+StrSQLCompiler.visit_regexp_match_op_binary‡  s   € Ø,ˆt×,Ñ,¨V°\ÑHÀRÑHÐHrý   c                ó*   —  | j                   |dfi |¤ŽS )Nz <not regexp> r  rk  s       rþ   r  z/StrSQLCompiler.visit_not_regexp_match_op_binaryŠ  s   € Ø,ˆt×,Ñ,¨VÐ5EÑLÈÑLÐLrý   c                ó€   — d |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz<regexp replace>(rÇ   r  )rx   rË  rŒ   rk  s       rþ   r	  z-StrSQLCompiler.visit_regexp_replace_op_binary�  s>   � à*ˆF�K‰K×*Ñ*¨4Ñ6°2Ó6Ø+ˆF�L‰L×+Ñ+¨DÑ7°BÓ7ð
ð 	
rý   c                ó€   — d |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz	TRY_CAST(rÉ   r  )r  rË  r£  )r  r   rÍ  s      rþ   Úvisit_try_castzStrSQLCompiler.visit_try_cast“  s>   � à*ˆD�K‰K×*Ñ*¨4Ñ:°6Ó:Ø.ˆD�O‰O×.Ñ.¨tÑ>°vÓ>ð
ð 	
rý   ræ  )r÷   rø   rù   rú   r  r&   rñ  rÄ  r  r  r  r=  r  rÀ  rÏ  r‰  r¿  r  r  r	  r  râ  rã  s   @rþ   r÷  r÷  +  s¦   ø„ ñò& ð €T×ÑÐ0Ó1óCó 2ðCò
òAòAò
ð
1àð1ð 5ð1ð
 "ð1ð ð1ð 
ó1ò
ò
ò%òòIòMò
ö
rý   r÷  c                  ó   — e Zd ZdZer	 	 	 d0	 	 	 	 	 	 	 	 	 d1d„Zej                  d„ «       Zej                  d„ «       Z		 	 	 d2	 	 	 	 	 	 	 d3d„Z
d„ Zd„ Zd	„ Zd
„ Zd4d„Z	 d5d„Zd„ Zd„ Zd„ Z	 d6d„Zd„ Zd4d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd5d„Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+d(„ Z,d)„ Z-d*„ Z.d+„ Z/d,„ Z0d-„ Z1d.„ Z2d/„ Z3y)7ÚDDLCompilerTc                 ó   — y r  rü   r«  s         rþ   r®  zDDLCompiler.__init__Ÿ  s   € ð rý   c                óf   — | j                   j                  | j                   d | j                  ¬«      S )NrG  )r¢  rþ  r—  r/  s    rþ   rÈ  zDDLCompiler.sql_compiler¨  s/   € à�|‰|×.Ñ.Ø�L‰L˜$°T×5NÑ5Nð /ó 
ð 	
rý   c                ó.   — | j                   j                  S r  )r¢  r¢  r/  s    rþ   Útype_compilerzDDLCompiler.type_compiler®  s   € à�|‰|×2Ñ2Ð2rý   Nc                 ó   — y r  rü   rÑ  s       rþ   rÕ  zDDLCompiler.construct_params²  s   € ð rý   c                óþ  — |j                   }t        |j                  t        j                  «      r¦|j                  «       }| j                  }|j                  |j                  «      }t        |«      dk(  r|d   d}}n
|d   |d   }}|j                  d|«       |j                  d|«       |j                  d|j                  |j                  «      «       | j                  j                  |j                  |z  «      S )Nr   r   r‘  r{  r�   r#   r+  )Úcontextr§  Útargetr#   rJ   rF  rš  Úformat_table_seqr˜  rš  rœ  rÈ  r­  r   )r  ÚddlrÍ  r#  rš  Úpathr�   Úschs           rþ   Ú	visit_ddlzDDLCompiler.visit_ddlº  sÍ   € à—+‘+ˆÜ�c—j‘j¤&§,¡,Ô/Ø—l‘l“nˆGà—}‘}ˆHØ×,Ñ,¨S¯Z©ZÓ8ˆDÜ�4‹y˜AŠ~Ø! !™W b�s‘à! "™X t¨A¡w�s�à×Ñ˜w¨Ô.Ø×Ñ˜x¨Ô-Ø×Ñ˜z¨8×+@Ñ+@ÀÇÁÓ+LÔMà× Ñ ×2Ñ2°3·=±=À7Ñ3JÓKÐKrý   c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )NzCREATE SCHEMA úIF NOT EXISTS )Úif_not_existsrš  Úformat_schemarÁ  )r  r“   rÃ  r¬  s       rþ   Úvisit_create_schemazDDLCompiler.visit_create_schemaÍ  s9   € ØˆØ×ÒØÐ$Ñ$ˆDØ�d—m‘m×1Ñ1°&·.±.ÓAÑAÐArý   c                óž   — d}|j                   r|dz  }|| j                  j                  |j                  «      z  }|j                  r|dz  }|S )NzDROP SCHEMA ú
IF EXISTS ú CASCADE)Ú	if_existsrš  r-  rÁ  Úcascade©r  ÚdroprÃ  r¬  s       rþ   Úvisit_drop_schemazDDLCompiler.visit_drop_schemaÓ  sK   € ØˆØ�>Š>Ø�LÑ ˆDØ�—‘×+Ñ+¨D¯L©LÓ9Ñ9ˆØ�<Š<Ø�JÑˆDØˆrý   c                ó,  — |j                   }| j                  }d}|j                  r!|dj                  |j                  «      dz   z  }|dz  }|j                  r|dz  }||j                  |«      dz   z  }| j                  |«      }|r||dz   z  }|dz  }d}d}|j                  D ]P  }	|	j                   }
	 | j                  |	|
j                  xr | ¬«      }|�||z  }d	}|d
|z   z  }|
j                  rd}ŒR | j                  ||j                   ¬«      }|r||d
z   |z   z  }|d| j#                  |«      z  z  }|S # t        j                  $ rE}t        j                  d|j                  ›d|
j                  ›d|j                  d   ›�«      |‚d }~ww xY w)Nz
CREATE r  zTABLE r+  r  Ú
F©Úfirst_pkr  Ú	Tz(in table 'z', column 'z'): r   )Ú _include_foreign_key_constraintsz
)%s

)rÁ  rš  r]  rw   r,  rœ  Úcreate_table_suffixr¢  r©  r.  r7   rÃ  Údescriptionrñ   ÚargsÚcreate_table_constraintsÚinclude_foreign_key_constraintsÚpost_create_table)r  r“   rÃ  r�   rš  r¬  r=  rá  r:  Úcreate_columnr’   Ú	processedÚceÚconsts                 rþ   Úvisit_create_tablezDDLCompiler.visit_create_tableÜ  sÏ  € Ø—‘ˆØ—=‘=ˆàˆØ�?Š?Ø�C—H‘H˜UŸ_™_Ó-°Ñ3Ñ3ˆDà�ÑˆØ×ÒØÐ$Ñ$ˆDà�×%Ñ% eÓ,¨sÑ2Ñ2ˆà"×6Ñ6°uÓ=ÐÙØÐ'¨#Ñ-Ñ-ˆDà�‰ˆàˆ	ð ˆØ#Ÿ^œ^ˆMØ"×*Ñ*ˆFðØ ŸL™LØ!¨F×,>Ñ,>Ò,OÀxÀ<ð )ó �	ð Ð(Ø˜IÑ%�DØ &�IØ˜D 9Ñ,Ñ,�DØ×%Ò%Ø#�Høð ,ð$ ×-Ñ-ØØ-3×-SÑ-Sð .ó 
ˆñ Ø�I Ñ$ uÑ,Ñ,ˆDà�˜d×4Ñ4°UÓ;Ñ;Ñ;ˆØˆøô ×#Ñ#ò Ü×&Ò&à×(Ó(¨&¯+«+°r·w±w¸q²zðCóð ðûðús   Â5AD;Ä;FÅA FÆFc                ó¼   ‡ — |j                   }|j                  ry ‰ j                  ||¬«      }dj                  ˆ fd„|j                  D «       «      }|r|d|z   z  }|S )Nr9  r  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr  )r©  ©r*  r°   r  s     €rþ   r,  z2DDLCompiler.visit_create_column.<locals>.<genexpr>  s   øè ø€ ð 
Ù7I¨ˆD�L‰L˜×$Ñ7Iùs   ƒ)rÁ  ÚsystemÚget_column_specificationrw   Úconstraints)r  r“   r:  rÃ  r’   r¬  rF  s   `      rþ   Úvisit_create_columnzDDLCompiler.visit_create_column  sd   ø€ Ø—‘ˆà�=Š=Øà×,Ñ,¨V¸hÐ,ÓGˆØ—‘ó 
Ø7=×7IÒ7Ió
ó 
ˆñ Ø�C˜%‘KÑˆDàˆrý   c                ól  ‡ — g }|j                   r|j                  |j                   «       |j                  }|�|j                  |«      }n
t	        «       }|j                  |j                  D �cg c]  }||j                   ur||vr|‘Œ c}«       dj                  d„ ˆ fd„|D «       D «       «      S c c}w )Nz, 
	c              3  ó$   K  — | ]  }|�|–— Œ
 y ­wr  rü   )r*  r“  s     rþ   r,  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>6  s#   è ø€ ð 
ñ�ð ˆ}ô ñùrÝ  c              3  ó¨   •K  — | ]I  }|j                  ‰«      r6‰j                  j                  rt        |d d«      s‰j	                  |«      –— ŒK y­w)Ú	use_alterFN)Ú_should_create_for_compilerr¢  Úsupports_alterr4  r©  rJ  s     €rþ   r,  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>8  sI   øè ø€ ð á"-�JØ×:Ñ:¸4Ô@àŸ™×3Ò3Ü" :¨{¸EÔBð —‘˜Z×(Ù"-ùr™  )r.  r�  Úforeign_key_constraintsrÒ  ro   r   Ú_sorted_constraintsrw   )r  r�   r<  rÃ  rM  Úall_fkcsÚ	omit_fkcsrv  s   `       rþ   r@  z$DDLCompiler.create_table_constraints  sÅ   ø€ ð
 ˆØ×ÒØ×Ñ˜u×0Ñ0Ô1à×0Ñ0ˆØ+Ð7Ø ×+Ñ+Ð,LÓM‰Iä›ˆIà×Ñð ×2Ò2óá2�AØ˜E×-Ñ-Ñ-°!¸9Ñ2Dò Ø2ñô	
ð �}‰}ñ 
óá"-ôó
ó 
ð 	
ùòs   Á.B1c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )Nz
DROP TABLE r0  )r2  rš  rœ  rÁ  r4  s       rþ   Úvisit_drop_tablezDDLCompiler.visit_drop_tableD  s6   € ØˆØ�>Š>Ø�LÑ ˆDØ�d—m‘m×0Ñ0°·±Ó>Ñ>Ð>rý   c                óR   — d| j                   j                  |j                  «      z   S )Nz
DROP VIEW ©rš  rœ  rÁ  ©r  r5  rÃ  s      rþ   Úvisit_drop_viewzDDLCompiler.visit_drop_viewJ  s    € Ø §¡× :Ñ :¸4¿<¹<Ó HÑHÐHrý   c                ó`   — |j                   €"t        j                  d|j                  z  «      ‚y )Nz,Index '%s' is not associated with any table.)r�   r7   rÃ  rñ   ©r  ro  s     rþ   Ú_verify_index_tablezDDLCompiler._verify_index_tableM  s0   € Ø�;‰;ÐÜ×"Ñ"Ø>ÀÇÁÑKóð ð rý   c           	     ó¦  ‡ — |j                   }‰ j                  |«       ‰ j                  }d}|j                  r|dz  }|j                  €t        j                  d«      ‚|dz  }|j                  r|dz  }|‰ j                  ||¬«      ›d|j                  |j                  |¬«      ›d	d
j                  ˆ fd„|j                  D «       «      ›d�z  }|S )NzCREATE úUNIQUE z0CREATE INDEX requires that the index have a namezINDEX r+  ©Úinclude_schemar0  ©r,  rŸ  rÇ   c              3  óZ   •K  — | ]"  }‰j                   j                  |d d¬«      –— Œ$ y­w)FT©r�  r  N)rÈ  r©  )r*  rø  r  s     €rþ   r,  z1DDLCompiler.visit_create_index.<locals>.<genexpr>j  s:   øè ø€ ð ñ .�Dð ×!Ñ!×)Ñ)Ø¨¸Tð *÷ ñ .ùrP  r  )rÁ  ra  rš  rš   rñ   r7   rÃ  r,  Ú_prepared_index_namerœ  r�   rw   Úexpressions)r  r“   re  Úinclude_table_schemarÃ  ro  rš  r¬  s   `       rþ   Úvisit_create_indexzDDLCompiler.visit_create_indexS  sä   ø€ ð —‘ˆØ× Ñ  Ô'Ø—=‘=ˆØˆØ�<Š<Ø�IÑˆDØ�:‰:ÐÜ×"Ñ"ØBóð ð 	�ÑˆØ×ÒØÐ$Ñ$ˆDàØ×%Ñ% e¸NÐ%ÕKØ×!Ñ!Ø—‘Ð(<ð "õ ð �I‰Ió ð "×-Ò-ó	õ ð
ñ 	
ˆð ˆrý   c                ó®   — |j                   }|j                  €t        j                  d«      ‚d}|j                  r|dz  }|| j                  |d¬«      z   S )Nz.DROP INDEX requires that the index have a namez
DROP INDEX r0  Trd  )rÁ  rñ   r7   rÃ  r2  ri  )r  r5  rÃ  ro  r¬  s        rþ   Úvisit_drop_indexzDDLCompiler.visit_drop_indexs  s^   € Ø—‘ˆà�:‰:ÐÜ×"Ñ"Ø@óð ð ˆØ�>Š>Ø�LÑ ˆDà�d×/Ñ/°ÀdÐ/ÓKÑKÐKrý   c                óü   — |j                   �&| j                  j                  |j                   «      }nd }|r|r| j                  j                  |«      }nd }| j                  j	                  |«      }|r|dz   |z   }|S ©Nr  )r�   rš  r‹  rŒ  Úformat_index)r  ro  re  r‘  Úschema_nameÚ
index_names         rþ   ri  z DDLCompiler._prepared_index_name€  sw   € Ø�;‰;Ð"Ø#Ÿ}™}×>Ñ>¸u¿{¹{ÓKÑà#ÐÙÑ.ØŸ-™-×4Ñ4Ð5EÓF‰KàˆKà—]‘]×/Ñ/°Ó6ˆ
áØ$ sÑ*¨ZÑ7ˆJØÐrý   c                óž   — d| j                   j                  |j                  j                  «      ›d| j	                  |j                  «      ›�S )NúALTER TABLE z ADD )rš  rœ  rÁ  r�   r©  ©r  r“   rÃ  s      rþ   Úvisit_add_constraintz DDLCompiler.visit_add_constraint�  s8   � à�M‰M×&Ñ& v§~¡~×';Ñ';Õ<Ø�L‰L˜Ÿ™Ô(ð
ð 	
rý   c                óØ   — d| j                   j                  |j                  «      ›d| j                  j	                  |j                  j
                  t        j                  «       «      ›�S )NzCOMMENT ON TABLE rÊ   )rš  rœ  rÁ  rÈ  rã  Úcommentr%   ÚStringrv  s      rþ   Úvisit_set_table_commentz#DDLCompiler.visit_set_table_comment–  sL   � à�M‰M×&Ñ& v§~¡~Õ6Ø×Ñ×2Ñ2Ø—‘×&Ñ&¬¯©Ó(9ôð
ð 	
rý   c                óR   — d| j                   j                  |j                  «      z  S )NzCOMMENT ON TABLE %s IS NULLr\  r]  s      rþ   Úvisit_drop_table_commentz$DDLCompiler.visit_drop_table_commentž  s'   € Ø,¨t¯}©}×/IÑ/IØ�L‰Ló0
ñ 
ð 	
rý   c                óÞ   — d| j                   j                  |j                  dd¬«      ›d| j                  j	                  |j                  j
                  t        j                  «       «      ›�S )NzCOMMENT ON COLUMN T)Ú	use_tabler,  rÊ   )rš  Úformat_columnrÁ  rÈ  rã  ry  r%   rz  rv  s      rþ   Úvisit_set_column_commentz$DDLCompiler.visit_set_column_comment£  sZ   � à�M‰M×'Ñ'Ø—‘¨$¸4ð (õ ð ×Ñ×2Ñ2Ø—‘×&Ñ&¬¯©Ó(9ôð	
ð 	
rý   c                óV   — d| j                   j                  |j                  d¬«      z  S )NzCOMMENT ON COLUMN %s IS NULLT)r  )rš  r€  rÁ  r]  s      rþ   Úvisit_drop_column_commentz%DDLCompiler.visit_drop_column_comment­  s/   € Ø-°·±×0KÑ0KØ�L‰L Dð 1Ló 1
ñ 
ð 	
rý   c                ó@   — t        j                  | t        |«      «      ‚r  r¾  rv  s      rþ   Úvisit_set_constraint_commentz(DDLCompiler.visit_set_constraint_comment²  s   € Ü×-Ñ-¨d´D¸³LÓAÐArý   c                ó@   — t        j                  | t        |«      «      ‚r  r¾  r]  s      rþ   Úvisit_drop_constraint_commentz)DDLCompiler.visit_drop_constraint_commentµ  s   € Ü×-Ñ-¨d´D¸³JÓ?Ð?rý   c                ó–  — g }|j                   �|j                  d|j                   z  «       |j                  �|j                  d|j                  z  «       |j                  �|j                  d|j                  z  «       |j                  �|j                  d|j                  z  «       |j
                  �|j                  d«       |j                  �|j                  d«       |j                  �|j                  d|j                  z  «       |j                  �|j                  |j                  rdnd	«       d
j                  |«      S )NzINCREMENT BY %dzSTART WITH %dzMINVALUE %dzMAXVALUE %dzNO MINVALUEzNO MAXVALUEzCACHE %dÚCYCLEzNO CYCLEr  )
Ú	incrementr�  r}  ÚminvalueÚmaxvalueÚ
nominvalueÚ
nomaxvalueÚcacheÚcyclerw   )r  Úidentity_optionsr¬  s      rþ   Úget_identity_optionsz DDLCompiler.get_identity_options¸  s  € ØˆØ×%Ñ%Ð1Ø�K‰KÐ)Ð,<×,FÑ,FÑFÔGØ×!Ñ!Ð-Ø�K‰K˜Ð*:×*@Ñ*@Ñ@ÔAØ×$Ñ$Ð0Ø�K‰K˜Ð(8×(AÑ(AÑAÔBØ×$Ñ$Ð0Ø�K‰K˜Ð(8×(AÑ(AÑAÔBØ×&Ñ&Ð2Ø�K‰K˜Ô&Ø×&Ñ&Ð2Ø�K‰K˜Ô&Ø×!Ñ!Ð-Ø�K‰K˜
Ð%5×%;Ñ%;Ñ;Ô<Ø×!Ñ!Ð-Ø�K‰KÐ#3×#9Ò#9™¸zÔJØ�x‰x˜‹~Ðrý   c                óÔ   — d}|j                   r|dz  }|| j                  j                  |j                  «      z  }|r||z  }| j	                  |j                  «      }|r|d|z   z  }|S )NzCREATE SEQUENCE r+  r  )r,  rš  r  rÁ  r’  )r  r“   r   rÃ  r¬  Úoptionss         rþ   Úvisit_create_sequencez!DDLCompiler.visit_create_sequenceÌ  sn   € Ø!ˆØ×ÒØÐ$Ñ$ˆDØ�—‘×-Ñ-¨f¯n©nÓ=Ñ=ˆáØ�F‰NˆDØ×+Ñ+¨F¯N©NÓ;ˆÙØ�C˜'‘MÑ!ˆDØˆrý   c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )NzDROP SEQUENCE r0  )r2  rš  r  rÁ  r4  s       rþ   Úvisit_drop_sequencezDDLCompiler.visit_drop_sequenceÙ  s6   € ØˆØ�>Š>Ø�LÑ ˆDØ�d—m‘m×3Ñ3°D·L±LÓAÑAÐArý   c                ód  — |j                   }|j                  �| j                  j                  |«      }nd }|€"t	        j
                  d|j                   z  «      ‚d| j                  j                  |j                   j                  «      ›d|j                  rdnd›|›|j                  rd›�S d›�S )Nz<Can't emit DROP CONSTRAINT for constraint %r; it has no nameru  z DROP CONSTRAINT r0  r‘  r1  )
rÁ  rñ   rš  Úformat_constraintr7   rÃ  rœ  r�   r2  r3  )r  r5  rÃ  r°   Úformatted_names        rþ   Úvisit_drop_constraintz!DDLCompiler.visit_drop_constraintß  s´   € Ø—\‘\ˆ
Ø�?‰?Ð&Ø!Ÿ]™]×<Ñ<¸ZÓH‰Nà!ˆNàÐ!Ü×"Ñ"ð!Ø#'§<¡<ñ0óð ð "ð �M‰M×&Ñ& t§|¡|×'9Ñ'9Õ:Ø ŸNšN‰L°Ð2ÙØŸ,š,ˆJÐ.ð	
ð 	
ð -/Ð.ð	
ð 	
rý   c                ó"  — | j                   j                  |«      dz   | j                  j                  j	                  |j
                  |¬«      z   }| j                  |«      }|�|d|z   z  }|j                  �!|d| j	                  |j                  «      z   z  }|j                  �7| j                  j                  r!|d| j	                  |j                  «      z   z  }|j                  s'|j                  r| j                  j                  s|dz  }|S )Nr  )r¡  z	 DEFAULT z	 NOT NULL)rš  r€  r¢  r¢  r©  rõ   Úget_column_default_stringÚcomputedÚidentityÚsupports_identity_columnsÚnullable)r  r’   rÍ  ÚcolspecrŸ   s        rþ   rL  z$DDLCompiler.get_column_specificationò  s÷   € à�M‰M×'Ñ'¨Ó/Øñà�l‰l×1Ñ1×9Ñ9Ø—‘¨Vð :ó ñð 	ð ×0Ñ0°Ó8ˆØÐØ�{ WÑ,Ñ,ˆGà�?‰?Ð&Ø�s˜TŸ\™\¨&¯/©/Ó:Ñ:Ñ:ˆGð �O‰OÐ'Ø—‘×6Ò6à�s˜TŸ\™\¨&¯/©/Ó:Ñ:Ñ:ˆGà�ŠØ—’ t§|¡|×'MÒ'Mà�{Ñ"ˆGØˆrý   c                 ó   — y©Nr‘  rü   ©r  r�   s     rþ   r=  zDDLCompiler.create_table_suffix  ó   € Ørý   c                 ó   — yr¤  rü   r¥  s     rþ   rB  zDDLCompiler.post_create_table  r¦  rý   c                ó–   — t        |j                  t        j                  «      r%| j	                  |j                  j
                  «      S y r  )r§  Úserver_defaultr#   ÚDefaultClauseÚrender_default_stringÚargr~  s     rþ   r�  z%DDLCompiler.get_column_default_string  s8   € Ü�f×+Ñ+¬V×-AÑ-AÔBØ×-Ñ-¨f×.CÑ.C×.GÑ.GÓHÐHàrý   c                ó°   — t        |t        «      r*| j                  j                  |t        j
                  «      S | j                  j                  |d¬«      S )NT)r  )r§  rï   rÈ  rã  r%   rÈ  r©  )r  rŸ   s     rþ   r«  z!DDLCompiler.render_default_string  sN   € Ü�gœsÔ#Ø×$Ñ$×9Ñ9Øœ×,Ñ,óð ð ×$Ñ$×,Ñ,¨WÀDÐ,ÓIÐIrý   c                ó^   — |j                   r| j                  |«      S | j                  |«      S r  )Úis_column_levelÚvisit_column_check_constraintÚvisit_check_constraint©r  r°   rÃ  s      rþ   Ú&visit_table_or_column_check_constraintz2DDLCompiler.visit_table_or_column_check_constraint!  s-   € Ø×%Ò%Ø×5Ñ5°jÓAÐAà×.Ñ.¨zÓ:Ð:rý   c                óð   — d}|j                   �%| j                  j                  |«      }|�|d|z  z  }|d| j                  j	                  |j
                  dd¬«      z  z  }|| j                  |«      z  }|S ©Nr‘  úCONSTRAINT %s z
CHECK (%s)FTrh  ©rñ   rš  r™  rÈ  r©  rJ  Údefine_constraint_deferrability©r  r°   rÃ  r¬  rš  s        rþ   r±  z"DDLCompiler.visit_check_constraint'  ó�   € ØˆØ�?‰?Ð&Ø!Ÿ]™]×<Ñ<¸ZÓHˆNØÐ)ØÐ(¨>Ñ9Ñ9�Ø�˜t×0Ñ0×8Ñ8Ø×Ñ¨eÀ4ð  9ó  
ñ 
ñ 	
ˆð 	�×4Ñ4°ZÓ@Ñ@ˆØˆrý   c                óð   — d}|j                   �%| j                  j                  |«      }|�|d|z  z  }|d| j                  j	                  |j
                  dd¬«      z  z  }|| j                  |«      z  }|S rµ  r·  r¹  s        rþ   r°  z)DDLCompiler.visit_column_check_constraint3  rº  rý   c                óB  ‡ — t        |«      dk(  ryd}|j                  �%‰ j                  j                  |«      }|�|d|z  z  }|dz  }|ddj	                  ˆ fd„|j
                  r|j                  n|j                  D «       «      z  z  }|‰ j                  |«      z  }|S )Nr   r‘  r¶  zPRIMARY KEY rñ  rÇ   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  ©rš  r‰  rñ   ©r*  rv  r  s     €rþ   r,  z;DDLCompiler.visit_primary_key_constraint.<locals>.<genexpr>H  s3   øè ø€ ð #
ñ(ð ð �M‰M×Ñ §¡×'ñ(ùó   ƒ/2)	r˜  rñ   rš  r™  rw   Ú_implicit_generatedÚcolumns_autoinc_firstr¢  r¸  r¹  s   `    rþ   Úvisit_primary_key_constraintz(DDLCompiler.visit_primary_key_constraint?  s»   ø€ Üˆz‹?˜aÒØØˆØ�?‰?Ð&Ø!Ÿ]™]×<Ñ<¸ZÓHˆNØÐ)ØÐ(¨>Ñ9Ñ9�Ø�ÑˆØ�˜Ÿ™ó #
ð ×1Ò1ð ×0Ò0à×'Ñ'ð(ó#
ó 
ñ 
ñ 	
ˆð 	�×4Ñ4°ZÓ@Ñ@ˆØˆrý   c           
     ó  ‡— | j                   Šd}|j                  �%| j                   j                  |«      }|�|d|z  z  }t        |j                  «      d   j
                  j                  }|ddj                  ˆfd„|j                  D «       «      ›d| j                  ||‰«      ›ddj                  ˆfd	„|j                  D «       «      ›d
�z  }|| j                  |«      z  }|| j                  |«      z  }|| j                  |«      z  }|S )Nr‘  r¶  r   zFOREIGN KEY(rÇ   c              3  óh   •K  — | ])  }‰j                  |j                  j                  «      –— Œ+ y ­wr  )r‰  Úparentrñ   ©r*  rü  rš  s     €rþ   r,  z;DDLCompiler.visit_foreign_key_constraint.<locals>.<genexpr>\  ó'   øè ø€ ð Ù7J°!�—‘˜qŸx™xŸ}™}×-Ñ7JùrÀ  z) REFERENCES rŸ  c              3  óh   •K  — | ])  }‰j                  |j                  j                  «      –— Œ+ y ­wr  )r‰  r’   rñ   rÇ  s     €rþ   r,  z;DDLCompiler.visit_foreign_key_constraint.<locals>.<genexpr>b  rÈ  rÀ  r  )rš  rñ   r™  r€  r   r’   r�   rw   Údefine_constraint_remote_tableÚdefine_constraint_matchÚdefine_constraint_cascadesr¸  )r  r°   rÃ  r¬  rš  Úremote_tablerš  s         @rþ   Úvisit_foreign_key_constraintz(DDLCompiler.visit_foreign_key_constraintS  s  ø€ Ø—=‘=ˆØˆØ�?‰?Ð&Ø!Ÿ]™]×<Ñ<¸ZÓHˆNØÐ)ØÐ(¨>Ñ9Ñ9�Ü˜J×/Ñ/Ó0°Ñ3×:Ñ:×@Ñ@ˆÙØ�I‰Ió Ø7A×7JÒ7Jóõ ð ×/Ñ/Ø˜L¨(õð �I‰Ió Ø7A×7JÒ7Jóõ ð

ñ 
	
ˆð 	�×,Ñ,¨ZÓ8Ñ8ˆØ�×/Ñ/°
Ó;Ñ;ˆØ�×4Ñ4°ZÓ@Ñ@ˆØˆrý   c                ó$   — |j                  |«      S )z=Format the remote table clause of a CREATE CONSTRAINT clause.)rœ  )r  r°   r�   rš  s       rþ   rÊ  z*DDLCompiler.define_constraint_remote_tablek  s   € ð ×$Ñ$ UÓ+Ð+rý   c                ó  ‡ — t        |«      dk(  ryd}|j                  �%‰ j                  j                  |«      }|�|d|z  z  }|d ‰ j                  |fi |¤Ž›ddj                  ˆ fd„|D «       «      ›d�z  }|‰ j                  |«      z  }|S )	Nr   r‘  r¶  rc  r  rÇ   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  r¾  r¿  s     €rþ   r,  z6DDLCompiler.visit_unique_constraint.<locals>.<genexpr>z  s%   øè ø€ ÐF¹:°a�d—m‘m×)Ñ)¨!¯&©&×1¹:ùrÀ  r  )r˜  rñ   rš  r™  Ú!define_unique_constraint_distinctrw   r¸  r¹  s   `    rþ   Úvisit_unique_constraintz#DDLCompiler.visit_unique_constraintp  s�   ø€ Üˆz‹?˜aÒØØˆØ�?‰?Ð&Ø!Ÿ]™]×<Ñ<¸ZÓHˆNØÐ)ØÐ(¨>Ñ9Ñ9�ÙØ2ˆD×2Ñ2°:ÑDÀÓDØ�I‰IÓF¹:ÓFÕFð
ñ 	
ˆð 	�×4Ñ4°ZÓ@Ñ@ˆØˆrý   c                 ó   — yr¤  rü   r²  s      rþ   rÒ  z-DDLCompiler.define_unique_constraint_distinct  r¦  rý   c                óú   — d}|j                   �0|d| j                  j                  |j                   t        «      z  z  }|j                  �0|d| j                  j                  |j                  t
        «      z  z  }|S )Nr‘  z ON DELETE %sz ON UPDATE %s)Úondeleterš  Úvalidate_sql_phraseÚFK_ON_DELETEÚonupdateÚFK_ON_UPDATE©r  r°   r¬  s      rþ   rÌ  z&DDLCompiler.define_constraint_cascades‚  s‚   € ØˆØ×ÑÐ*Ø�O d§m¡m×&GÑ&GØ×#Ñ#¤\ó'ñ ñ ˆDð ×ÑÐ*Ø�O d§m¡m×&GÑ&GØ×#Ñ#¤\ó'ñ ñ ˆDð ˆrý   c                óÈ   — d}|j                   �|j                   r|dz  }n|dz  }|j                  �0|d| j                  j                  |j                  t        «      z  z  }|S )Nr‘  z DEFERRABLEz NOT DEFERRABLEz INITIALLY %s)r±   r«   rš  r×  ÚFK_INITIALLYrÛ  s      rþ   r¸  z+DDLCompiler.define_constraint_deferrabilityŽ  sq   € ØˆØ× Ñ Ð,Ø×$Ò$Ø˜Ñ%‘àÐ)Ñ)�Ø×ÑÐ+Ø�O d§m¡m×&GÑ&GØ×$Ñ$¤ló'ñ ñ ˆDð ˆrý   c                óF   — d}|j                   �|d|j                   z  z  }|S )Nr‘  z	 MATCH %s)r  rÛ  s      rþ   rË  z#DDLCompiler.define_constraint_match›  s-   € ØˆØ×ÑÐ'Ø�K *×"2Ñ"2Ñ2Ñ2ˆDØˆrý   c                ó¬   — d| j                   j                  |j                  dd¬«      z  }|j                  du r|dz  }|S |j                  du r|dz  }|S )NzGENERATED ALWAYS AS (%s)FTrh  z STOREDz VIRTUAL)rÈ  r©  rJ  Ú	persisted)r  Ú	generatedrÃ  r¬  s       rþ   Úvisit_computed_columnz!DDLCompiler.visit_computed_column¡  sr   € Ø)¨D×,=Ñ,=×,EÑ,EØ×Ñ¨UÀ$ð -Fó -
ñ 
ˆð ×Ñ $Ñ&Ø�IÑˆDð ˆð × Ñ  EÑ)Ø�JÑˆDØˆrý   c                ód   — d|j                   rdnd›d�}| j                  |«      }|r|d|z  z  }|S )Nz
GENERATED ÚALWAYSz
BY DEFAULTz AS IDENTITYrŒ  )Úalwaysr’  )r  rŸ  rÃ  r¬  r”  s        rþ   Úvisit_identity_columnz!DDLCompiler.visit_identity_column«  s@   � à Ÿš‰H¨\Ñ9ð
ˆð ×+Ñ+¨HÓ5ˆÙØ�G˜gÑ%Ñ%ˆDØˆrý   )...)
r¢  r\   r   r@   r—  r–  r¬  r  r­  rØ  rÙ  rÚ  râ  r  )FT)4r÷   rø   rù   rÞ  r   r®  r&   rí  rÈ  r   rÕ  r)  r.  r6  rG  rN  r@  rZ  r^  ra  rl  rn  ri  rw  r{  r}  r�  rƒ  r…  r‡  r’  r•  r—  r›  rL  r=  rB  r�  r«  r³  r±  r°  rÃ  rÎ  rÊ  rÓ  rÒ  rÌ  r¸  rË  râ  ræ  rü   rý   rþ   r  r  š  sœ  „ Ø€Fáð FIØ,/Ø03ð	àð	ð ,ð	ð #Cð		ð
 &*ð	ð .ó	ð 
×Ññ
ó ð
ð
 
×Ññ3ó ð3ð
 6:ØGKØ!ð	à2ðð Eðð ð	ð
 
3óòLò&Bòò2óhð  7;ó#
òJ?òIòð BFóò@Lóò 
ò
ò
ò

ò
ò
Bò@òó(òBò
ò&ò6òòòJò;ò
ò
òò(ò0,ò
òò
òòòórý   r  c                  ó(  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd1d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.d.„ Z/d/„ Z0d0„ Z1y)2ÚGenericTypeCompilerc                 ó   — y)NÚFLOATrü   ré  s      rþ   Úvisit_FLOATzGenericTypeCompiler.visit_FLOAT¶  ó   € Ørý   c                 ó   — y)NÚDOUBLErü   ré  s      rþ   Úvisit_DOUBLEz GenericTypeCompiler.visit_DOUBLE¹  ó   € Ørý   c                 ó   — y)NzDOUBLE PRECISIONrü   ré  s      rþ   Úvisit_DOUBLE_PRECISIONz*GenericTypeCompiler.visit_DOUBLE_PRECISION¼  s   € Ø!rý   c                 ó   — y)NÚREALrü   ré  s      rþ   Ú
visit_REALzGenericTypeCompiler.visit_REAL¿  rÐ  rý   c                óŽ   — |j                   €y|j                  €dd|j                   iz  S d|j                   |j                  dœz  S )NÚNUMERICzNUMERIC(%(precision)s)Ú	precisionz!NUMERIC(%(precision)s, %(scale)s)©rø  Úscalerù  ré  s      rþ   Úvisit_NUMERICz!GenericTypeCompiler.visit_NUMERICÂ  óM   € Ø�?‰?Ð"ØØ�[‰[Ð Ø+¨{¸E¿O¹OÐ.LÑLÐLà6Ø"Ÿ_™_ØŸ™ñ:ñ ð rý   c                óŽ   — |j                   €y|j                  €dd|j                   iz  S d|j                   |j                  dœz  S )NÚDECIMALzDECIMAL(%(precision)s)rø  z!DECIMAL(%(precision)s, %(scale)s)rù  rù  ré  s      rþ   Úvisit_DECIMALz!GenericTypeCompiler.visit_DECIMALÍ  rü  rý   c                 ó   — y)NÚINTEGERrü   ré  s      rþ   Úvisit_INTEGERz!GenericTypeCompiler.visit_INTEGERØ  ó   € Ørý   c                 ó   — y)NÚSMALLINTrü   ré  s      rþ   Úvisit_SMALLINTz"GenericTypeCompiler.visit_SMALLINTÛ  ó   € Ørý   c                 ó   — y)NÚBIGINTrü   ré  s      rþ   Úvisit_BIGINTz GenericTypeCompiler.visit_BIGINTÞ  rð  rý   c                 ó   — y)NÚ	TIMESTAMPrü   ré  s      rþ   Úvisit_TIMESTAMPz#GenericTypeCompiler.visit_TIMESTAMPá  s   € Ørý   c                 ó   — y)NÚDATETIMErü   ré  s      rþ   Úvisit_DATETIMEz"GenericTypeCompiler.visit_DATETIMEä  r  rý   c                 ó   — y)NÚDATErü   ré  s      rþ   Ú
visit_DATEzGenericTypeCompiler.visit_DATEç  rÐ  rý   c                 ó   — y)NÚTIMErü   ré  s      rþ   Ú
visit_TIMEzGenericTypeCompiler.visit_TIMEê  rÐ  rý   c                 ó   — y)NÚCLOBrü   ré  s      rþ   Ú
visit_CLOBzGenericTypeCompiler.visit_CLOBí  rÐ  rý   c                 ó   — y)NÚNCLOBrü   ré  s      rþ   Úvisit_NCLOBzGenericTypeCompiler.visit_NCLOBð  rì  rý   Nc                ó˜   — |}|r	|d|z  z  }n|j                   r|d|j                   z  z  }|j                  r|d|j                  z  z  }|S )Nú(%d)z COLLATE "%s")Úlengthr—  )r  r  rñ   Úlength_overrider¬  s        rþ   Ú_render_string_typez'GenericTypeCompiler._render_string_typeó  sR   € ØˆÙØ�F˜_Ñ,Ñ,‰DØ�\Š\Ø�F˜UŸ\™\Ñ)Ñ)ˆDØ�?Š?Ø�O e§o¡oÑ5Ñ5ˆDØˆrý   c                ó&   — | j                  |d«      S )NÚCHAR©r!  ré  s      rþ   Ú
visit_CHARzGenericTypeCompiler.visit_CHARý  ó   € Ø×'Ñ'¨¨vÓ6Ð6rý   c                ó&   — | j                  |d«      S )NÚNCHARr$  ré  s      rþ   Úvisit_NCHARzGenericTypeCompiler.visit_NCHAR   s   € Ø×'Ñ'¨¨wÓ7Ð7rý   c                ó&   — | j                  |d«      S )NÚVARCHARr$  ré  s      rþ   Úvisit_VARCHARz!GenericTypeCompiler.visit_VARCHAR  s   € Ø×'Ñ'¨¨yÓ9Ð9rý   c                ó&   — | j                  |d«      S )NÚNVARCHARr$  ré  s      rþ   Úvisit_NVARCHARz"GenericTypeCompiler.visit_NVARCHAR  s   € Ø×'Ñ'¨¨zÓ:Ð:rý   c                ó&   — | j                  |d«      S )NÚTEXTr$  ré  s      rþ   Ú
visit_TEXTzGenericTypeCompiler.visit_TEXT	  r&  rý   c                 ó   — y)NÚUUIDrü   ré  s      rþ   Ú
visit_UUIDzGenericTypeCompiler.visit_UUID  rÐ  rý   c                 ó   — y)NÚBLOBrü   ré  s      rþ   Ú
visit_BLOBzGenericTypeCompiler.visit_BLOB  rÐ  rý   c                óJ   — d|j                   xr d|j                   z  xs dz   S )NÚBINARYr  r‘  ©r  ré  s      rþ   Úvisit_BINARYz GenericTypeCompiler.visit_BINARY  s$   € Ø˜5Ÿ<™<ÒA¨F°U·\±\Ñ,AÒGÀRÑHÐHrý   c                óJ   — d|j                   xr d|j                   z  xs dz   S )NÚ	VARBINARYr  r‘  r;  ré  s      rþ   Úvisit_VARBINARYz#GenericTypeCompiler.visit_VARBINARY  s$   € Ø˜eŸl™lÒD¨v¸¿¹Ñ/DÒJÈÑKÐKrý   c                 ó   — y)NÚBOOLEANrü   ré  s      rþ   Úvisit_BOOLEANz!GenericTypeCompiler.visit_BOOLEAN  r  rý   c                ó”   — |j                   r| j                  j                  s| j                  |dd¬«      S  | j                  |fi |¤ŽS )Nr#  é    )r   )Únative_uuidr¢  Úsupports_native_uuidr!  r5  ré  s      rþ   Ú
visit_uuidzGenericTypeCompiler.visit_uuid  sE   € Ø× Ò ¨¯©×(IÒ(IØ×+Ñ+¨E°6È2Ð+ÓNÐNà"�4—?‘? 5Ñ/¨BÑ/Ð/rý   c                ó(   —  | j                   |fi |¤ŽS r  )r8  ré  s      rþ   Úvisit_large_binaryz&GenericTypeCompiler.visit_large_binary!  ó   € Øˆt�‰˜uÑ+¨Ñ+Ð+rý   c                ó(   —  | j                   |fi |¤ŽS r  )rB  ré  s      rþ   Úvisit_booleanz!GenericTypeCompiler.visit_boolean$  ó   € Ø!ˆt×!Ñ! %Ñ.¨2Ñ.Ð.rý   c                ó(   —  | j                   |fi |¤ŽS r  )r  ré  s      rþ   Ú
visit_timezGenericTypeCompiler.visit_time'  rJ  rý   c                ó(   —  | j                   |fi |¤ŽS r  )r  ré  s      rþ   Úvisit_datetimez"GenericTypeCompiler.visit_datetime*  ó   € Ø"ˆt×"Ñ" 5Ñ/¨BÑ/Ð/rý   c                ó(   —  | j                   |fi |¤ŽS r  )r  ré  s      rþ   Ú
visit_datezGenericTypeCompiler.visit_date-  rJ  rý   c                ó(   —  | j                   |fi |¤ŽS r  )r
  ré  s      rþ   Úvisit_big_integerz%GenericTypeCompiler.visit_big_integer0  ó   € Ø ˆt× Ñ  Ñ-¨"Ñ-Ð-rý   c                ó(   —  | j                   |fi |¤ŽS r  )r  ré  s      rþ   Úvisit_small_integerz'GenericTypeCompiler.visit_small_integer3  rR  rý   c                ó(   —  | j                   |fi |¤ŽS r  )r  ré  s      rþ   Úvisit_integerz!GenericTypeCompiler.visit_integer6  rM  rý   c                ó(   —  | j                   |fi |¤ŽS r  )rõ  ré  s      rþ   Ú
visit_realzGenericTypeCompiler.visit_real9  rJ  rý   c                ó(   —  | j                   |fi |¤ŽS r  )rë  ré  s      rþ   Úvisit_floatzGenericTypeCompiler.visit_float<  s   € Øˆt×Ñ Ñ,¨Ñ,Ð,rý   c                ó(   —  | j                   |fi |¤ŽS r  )rï  ré  s      rþ   Úvisit_doublez GenericTypeCompiler.visit_double?  rW  rý   c                ó(   —  | j                   |fi |¤ŽS r  )rû  ré  s      rþ   Úvisit_numericz!GenericTypeCompiler.visit_numericB  rM  rý   c                ó(   —  | j                   |fi |¤ŽS r  ©r,  ré  s      rþ   Úvisit_stringz GenericTypeCompiler.visit_stringE  rM  rý   c                ó(   —  | j                   |fi |¤ŽS r  re  ré  s      rþ   Úvisit_unicodez!GenericTypeCompiler.visit_unicodeH  rM  rý   c                ó(   —  | j                   |fi |¤ŽS r  ©r2  ré  s      rþ   Ú
visit_textzGenericTypeCompiler.visit_textK  rJ  rý   c                ó(   —  | j                   |fi |¤ŽS r  rj  ré  s      rþ   Úvisit_unicode_textz&GenericTypeCompiler.visit_unicode_textN  rJ  rý   c                ó(   —  | j                   |fi |¤ŽS r  re  ré  s      rþ   Ú
visit_enumzGenericTypeCompiler.visit_enumQ  rM  rý   c                ó2   — t        j                  d|z  «      ‚)NzKCan't generate DDL for %r; did you forget to specify a type on this Column?r}  ré  s      rþ   rÏ  zGenericTypeCompiler.visit_nullT  s"   € Ü×Ñð#à%*ñ+ó
ð 	
rý   c                óZ   —  | j                   |j                  | j                  «      fi |¤ŽS r  )r©  Útype_enginer¢  ré  s      rþ   Úvisit_type_decoratorz(GenericTypeCompiler.visit_type_decorator[  s'   € Øˆt�|‰|˜E×-Ñ-¨d¯l©lÓ;ÑB¸rÑBÐBrý   c                ó&   —  |j                   di |¤ŽS rå  )Úget_col_specré  s      rþ   Úvisit_user_definedz&GenericTypeCompiler.visit_user_defined^  s   € Ø!ˆu×!Ñ!Ñ' BÑ'Ð'rý   r  )2r÷   rø   rù   rë  rï  rò  rõ  rû  rÿ  r  r  r
  r  r  r  r  r  r  r!  r%  r)  r,  r/  r2  r5  r8  r<  r?  rB  rG  rI  rL  rO  rQ  rT  rV  rY  r[  r]  r_  ra  rc  rf  rh  rk  rm  ro  rÏ  rs  rv  rü   rý   rþ   rè  rè  µ  sð   „ òòò"òò	ò	òòòòòòòòòóò7ò8ò:ò;ò7òòòIòLòò0ò,ò/ò,ò0ò,ò.ò0ò/ò,ò-ò.ò/ò/ò/ò,ò,ò/ò
òCó(rý   rè  c                  ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚStrSQLTypeCompilerc                ór   — 	 |j                   } || fi |¤ŽS # t        $ r  | j                  |fi |¤ŽcY S w xY wr  )rË  ÚAttributeErrorÚ_visit_unknown)r  r  rÃ  rË  s       rþ   r©  zStrSQLTypeCompiler.processc  sN   € ð	2Ø!&×!9Ñ!9Ðñ & dÑ1¨bÑ1Ð1øô ò 	4Ø&�4×&Ñ& uÑ3°Ñ3Ò3ð	4ús   ‚ —6µ6c                óR   — |j                  d«      r| j                  S t        |«      ‚)Nr[  )rZ  r{  rz  )r  r+  s     rþ   Ú__getattr__zStrSQLTypeCompiler.__getattr__k  s%   € Ø�>‰>˜(Ô#Ø×&Ñ&Ð&ä  Ó%Ð%rý   c                óº   — |j                   j                  |j                   j                  j                  «       k(  r|j                   j                  S t        |«      S r  )r´  r÷   ÚupperÚreprré  s      rþ   r{  z!StrSQLTypeCompiler._visit_unknownq  sA   € Ø�?‰?×#Ñ# u§¡×'?Ñ'?×'EÑ'EÓ'GÒGØ—?‘?×+Ñ+Ð+ä˜“;Ðrý   c                 ó   — yrÌ  rü   ré  s      rþ   rÏ  zStrSQLTypeCompiler.visit_nullw  rÐ  rý   c                ó`   — 	 |j                   } |di |¤ŽS # t        $ r t        |«      cY S w xY wrå  )ru  rz  r€  )r  r  rÃ  ru  s       rþ   rv  z%StrSQLTypeCompiler.visit_user_definedz  s=   € ð	&Ø ×-Ñ-ˆLñ  Ñ% "Ñ%Ð%øô ò 	Ü˜“;Òð	ús   ‚ –-¬-N)r÷   rø   rù   r©  r}  r{  rÏ  rv  rü   rý   rþ   rx  rx  b  s   „ ò2ò&òòó&rý   rx  c                  ó   — e Zd Zdd„Zy)Ú_SchemaForObjectCallablec                 ó   — y r  rü   )r  Ú_SchemaForObjectCallable__objs     rþ   r  z!_SchemaForObjectCallable.__call__„  s   € ¨3rý   N)r†  r   r  rï   r	  rü   rý   rþ   r„  r„  ƒ  s   „ Ü.rý   r„  c                  ó   — e Zd Zdd„Zy)r  c                 ó   — y r  rü   )r  ró  s     rþ   r  z _BindNameForColProtocol.__call__ˆ  s   € °srý   N)ró  rã  r  rï   r	  rü   rý   rþ   r  r  ‡  s   „ Ü:rý   r  c                  óÄ  — e Zd ZU dZeZeZeZ	de
d<   de
d<   de
d<    ej                  d«      Zde
d	<   	 d
Zde
d<   	 	 	 	 	 d+d„Zd„ Zd„ Zd,d„Zd,d„Zd„ Zd,d„Zd-d„Zd„ Zd.d/d„Zd.d0d„Zd„ Zd1d„Z	 d.	 	 	 	 	 d2d„Z	 d.	 	 	 	 	 d3d„Zd.d„Z ej@                  d«      d1d„«       Z!d1d „Z"d1d!„Z#d"„ Z$d#„ Z%d4d$„Z&d%„ Z'	 d.d&„Z(	 	 	 	 	 d5d'„Z)d1d(„Z*ejV                  d)„ «       Z,d*„ Z-y)6r™  z@Handle quoting and case-folding of identifiers based on options.rï   Úinitial_quoteÚfinal_quotezMutableMapping[str, str]Ú_stringsr#   r„  r‹  Fr  Ú_includes_none_schema_translateNc                óä   — || _         || _        |xs | j                  | _        || _        | j                  dz  | _        || _        || _        i | _        | j                   j                  dv | _	        y)as  Construct a new ``IdentifierPreparer`` object.

        initial_quote
          Character that begins a delimited identifier.

        final_quote
          Character that ends a delimited identifier. Defaults to
          `initial_quote`.

        omit_schema
          Prevent prepending schema name. Useful for databases that do
          not support schemae.
        r6   )rÀ   r¾   N)
r¢  rŠ  r‹  Úescape_quoteÚescape_to_quoteÚomit_schemaÚquote_case_sensitive_collationsrŒ  rY  r©  )r  r¢  rŠ  r‹  r�  r’  r‘  s          rþ   r®  zIdentifierPreparer.__init__§  st   € ð. ˆŒØ*ˆÔØ&Ò<¨$×*<Ñ*<ˆÔØ(ˆÔØ#×0Ñ0°1Ñ4ˆÔØ&ˆÔØ/NˆÔ,ØˆŒØ $§¡× 7Ñ 7ð <
ð !
ˆÕrý   c                óÊ   ‡— | j                   j                  | j                   «      }|j                  j                  | j                  «       d |v Šˆfd„}||_        ‰|_        |S )Nc                óÀ   •— | j                   }| j                  r:|€‰r6|� d|v sd|v rt        j                  d|z  «      ‚t	        d|xs dz  d¬«      S | j                   S )Nr  r  zJSquare bracket characters ([]) not supported in schema translate name '%s'z__[SCHEMA_%s]Ú_noneF©r‰  )r#   Ú_use_schema_mapr7   rÃ  r0   )rÌ  rñ   Úincludes_nones     €rþ   Úsymbol_getterz@IdentifierPreparer._with_schema_translate.<locals>.symbol_getterÑ  sw   ø€ Ø—:‘:ˆDØ×"Ò"¨Ð(8¹MØÐ#¨°©¸¸t¹Ü×*Ñ*ð8Ø:>ñ?óð ô #Ø# t¢¨wÑ7¸uôð ð —z‘zÐ!rý   )r´  Ú__new__re  rf  r‹  r�  )r  r—  Úprepr™  r˜  s       @rþ   r¤  z)IdentifierPreparer._with_schema_translateË  sX   ø€ Ø�~‰~×%Ñ% d§n¡nÓ5ˆØ�‰×Ñ˜TŸ]™]Ô+àÐ 4Ð4ˆô	"ð "/ˆÔØ/<ˆÔ,Øˆrý   c                óž   ‡ ‡— |Šd ‰v r)‰ j                   st        j                  d«      ‚‰d    ‰d<   ˆˆ fd„}t        j                  d||«      S )Nzâschema translate map which previously did not have `None` present as a key now has `None` present; compiled statement may lack adequate placeholders.  Please use consistent keys in successive schema_translate_map dictionaries.r•  c                óð   •— | j                  d«      }|‰v r‰|   }n|dv rt        j                  d«      ‚|}|s-‰j                  j                  }|st        j
                  d«      ‚‰j                  |«      S )Nr6   )Nr•  zâschema translate map which previously had `None` present as a key now no longer has it present; don't know how to apply schema for compiled statement. Please use consistent keys in successive schema_translate_map dictionaries.zLDialect has no default schema name; can't use None as dynamic schema target.)r†   r7   r-  r¢  Údefault_schema_namerÃ  rŒ  )r�  rñ   r‘  Údr  s      €€rþ   rª  z=IdentifierPreparer._render_schema_translates.<locals>.replaceñ  s‹   ø€ Ø—7‘7˜1“:ˆDØ�q‰yØ#$ T¡7Ñ à˜?Ñ*Ü×1Ñ1ð=óð ð $(Ð á#Ø#'§<¡<×#CÑ#CÐ Ù'ä×*Ñ*ð=óð ð ×$Ñ$Ð%5Ó6Ð6rý   z(__\[SCHEMA_([^\]]+)\]))r�  r7   r-  rL  r–  )r  r   r—  rª  rŸ  s   `   @rþ   rª  z,IdentifierPreparer._render_schema_translatesã  sZ   ù€ Ø ˆØ�1‰9Ø×7Ò7Ü×-Ñ-ð9óð ð ˜4™ˆAˆg‰Jõ	7ô2 �v‰vÐ0°'¸9ÓEÐErý   c                óŽ   — |j                  | j                  | j                  «      }| j                  r|j                  dd«      }|S )z€Escape an identifier.

        Subclasses should override this to provide database-dependent
        escaping behavior.
        r  r§  )rª  r�  r�  r©  ©r  r¸  s     rþ   Ú_escape_identifierz%IdentifierPreparer._escape_identifier  s>   € ð —‘˜d×/Ñ/°×1EÑ1EÓFˆØ× Ò Ø—M‘M # tÓ,ˆEØˆrý   c                óN   — |j                  | j                  | j                  «      S )z±Canonicalize an escaped identifier.

        Subclasses should override this to provide database-dependent
        unescaping behavior that reverses _escape_identifier.
        )rª  r�  r�  r¡  s     rþ   Ú_unescape_identifierz'IdentifierPreparer._unescape_identifier  s!   € ð �}‰}˜T×1Ñ1°4×3DÑ3DÓEÐErý   c                óx   — |�7|j                  |«      s&t        j                  d|›d|j                  ›d�«      ‚|S )zýkeyword sequence filter.

        a filter for elements that are intended to represent keyword sequences,
        such as "INITIALLY", "INITIALLY DEFERRED", etc.   no special characters
        should be present.

        .. versionadded:: 1.3

        zUnexpected SQL phrase: z (matching against r  )r  r7   rÃ  rë  )r  rÁ  rO  s      rþ   r×  z&IdentifierPreparer.validate_sql_phrase!  s=   € ð Ð s§y¡y°Ô'9Ü×"Ò"â˜CŸK›Kð)óð ð ˆrý   c                óX   — | j                   | j                  |«      z   | j                  z   S )z~Quote an identifier.

        Subclasses should override this to provide database-dependent
        quoting behavior.
        )rŠ  r¢  r‹  r¡  s     rþ   Úquote_identifierz#IdentifierPreparer.quote_identifier3  s3   € ð ×ÑØ×%Ñ% eÓ,ñ-à×Ññð	
rý   c                óÀ   — |j                  «       }|| j                  v xs? |d   | j                  v xs, | j                  j	                  t        |«      «       xs ||k7  S )z5Return True if the given identifier requires quoting.r   )r5  Úreserved_wordsÚillegal_initial_charactersÚlegal_charactersr  rï   )r  r¸  Úlc_values      rþ   r_  z#IdentifierPreparer._requires_quotes@  sf   € à—;‘;“=ˆà˜×+Ñ+Ð+ò #Ø�Q‰x˜4×:Ñ:Ð:ò#à×(Ñ(×.Ñ.¬s°5«zÓ:Ð:ò#ð ˜EÑ!ð		
rý   c                óL   — | j                   j                  t        |«      «       S )zjReturn True if the given identifier requires quoting, but
        not taking case convention into account.)r«  r  rï   r¡  s     rþ   r8  z1IdentifierPreparer._requires_quotes_illegal_charsJ  s"   € ð ×(Ñ(×.Ñ.¬s°5«zÓ:Ð:Ð:rý   c                óV   — |�t        j                  dd¬«       | j                  |«      S )a  Conditionally quote a schema name.


        The name is quoted if it is a reserved word, contains quote-necessary
        characters, or is an instance of :class:`.quoted_name` which includes
        ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for schema names.

        :param schema: string schema name
        :param force: unused

            .. deprecated:: 0.9

                The :paramref:`.IdentifierPreparer.quote_schema.force`
                parameter is deprecated and will be removed in a future
                release.  This flag has no effect on the behavior of the
                :meth:`.IdentifierPreparer.quote` method; please refer to
                :class:`.quoted_name`.

        zÚThe IdentifierPreparer.quote_schema.force parameter is deprecated and will be removed in a future release.  This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().ú0.9r  )r&   r  r‰  )r  r#   Úforces      rþ   rŒ  zIdentifierPreparer.quote_schemaO  s5   € ð. Ðô × Ñ ð!ð õð �z‰z˜&Ó!Ð!rý   c                óR  — |�t        j                  dd¬«       t        |dd«      }|€k|| j                  v r| j                  |   S | j	                  |«      r| j                  |«      | j                  |<   n|| j                  |<   | j                  |   S |r| j                  |«      S |S )a  Conditionally quote an identifier.

        The identifier is quoted if it is a reserved word, contains
        quote-necessary characters, or is an instance of
        :class:`.quoted_name` which includes ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for identifier names.

        :param ident: string identifier
        :param force: unused

            .. deprecated:: 0.9

                The :paramref:`.IdentifierPreparer.quote.force`
                parameter is deprecated and will be removed in a future
                release.  This flag has no effect on the behavior of the
                :meth:`.IdentifierPreparer.quote` method; please refer to
                :class:`.quoted_name`.

        NzÓThe IdentifierPreparer.quote.force parameter is deprecated and will be removed in a future release.  This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().r¯  r  r‰  )r&   r  r4  rŒ  r_  r§  )r  rP  r°  s      rþ   r‰  zIdentifierPreparer.quotev  s±   € ð, Ðô × Ñ ð!ð õô ˜˜w¨Ó-ˆàˆ=Ø˜Ÿ™Ñ%Ø—}‘} UÑ+Ð+à×(Ñ(¨Ô/Ø+/×+@Ñ+@ÀÓ+G�D—M‘M %Ò(à+0�D—M‘M %Ñ(Ø—}‘} UÑ+Ð+ÙØ×(Ñ(¨Ó/Ð/àˆLrý   c                ó@   — | j                   r| j                  |«      S |S r  )r’  r‰  )r  Úcollation_names     rþ   r–  z#IdentifierPreparer.format_collationª  s    € Ø×/Ò/Ø—:‘:˜nÓ-Ð-à!Ð!rý   c                ó¬   — | j                  |j                  «      }| j                  |«      }| j                  s|r|�| j	                  |«      dz   |z   }|S rp  )r‰  rñ   r‹  r‘  rŒ  )r  r>  r,  rñ   r‘  s        rþ   r  z"IdentifierPreparer.format_sequence°  sY   € Ø�z‰z˜(Ÿ-™-Ó(ˆà×1Ñ1°(Ó;Ðð × Ò ÙØ Ð,à×$Ñ$Ð%5Ó6¸Ñ<¸tÑCˆDØˆrý   c                ó@   — | j                  |xs |j                  «      S r  ©r‰  rñ   )r  rï  rñ   s      rþ   ru  zIdentifierPreparer.format_label½  s   € ð �z‰z˜$Ò, %§*¡*Ó-Ð-rý   c                óf   — |€|€J ‚| j                  |j                  «      S | j                  |«      S r  r¶  )r  r…  rñ   s      rþ   rZ  zIdentifierPreparer.format_aliasÂ  s7   € ð ˆ<ØÐ$Ð$Ð$Ø—:‘:˜eŸj™jÓ)Ð)à—:‘:˜dÓ#Ð#rý   c                ój   — |xs |j                   }| j                  |«      r| j                  |«      }|S r  )rP  r_  r§  )r  Ú	savepointrñ   rP  s       rþ   rÚ  z#IdentifierPreparer.format_savepointË  s5   € ð Ò'˜	Ÿ™ˆØ× Ñ  Ô'Ø×)Ñ)¨%Ó0ˆEØˆrý   zsqlalchemy.sql.namingc                ó  — t         j                  j                  }|j                  t        u r|j                  ||j                  «      }|€y |j                  }|j                  dk(  r| j                  ||¬«      S | j                  ||¬«      S )Nro  )Ú_alembic_quote)
r&   r  Ú
sql_namingrñ   r+   Ú_constraint_name_for_tabler�   r   Útruncate_and_render_index_nameÚ#truncate_and_render_constraint_name)r  r°   r»  Únamingrñ   s        rþ   r™  z$IdentifierPreparer.format_constraintÔ  s•   € ä—‘×*Ñ*ˆà�?‰?œjÑ(Ø×4Ñ4Ø˜J×,Ñ,óˆDð ˆ|Øà—?‘?ˆDà×$Ñ$¨Ò/Ø×6Ñ6Ø ^ð 7ó ð ð ×;Ñ;Ø ^ð <ó ð rý   c                ó„   — | j                   j                  xs | j                   j                  }| j                  |||«      S r  )r¢  Úmax_index_name_lengthr^  Ú _truncate_and_render_maxlen_name©r  rñ   r»  Úmax_s       rþ   r¾  z1IdentifierPreparer.truncate_and_render_index_nameë  sD   € ð
 �L‰L×.Ñ.ò 2Ø�|‰|×1Ñ1ð 	ð ×4Ñ4Ø�$˜ó
ð 	
rý   c                ó„   — | j                   j                  xs | j                   j                  }| j                  |||«      S r  )r¢  Úmax_constraint_name_lengthr^  rÃ  rÄ  s       rþ   r¿  z6IdentifierPreparer.truncate_and_render_constraint_name÷  sD   € ð
 �L‰L×3Ñ3ò 2Ø�|‰|×1Ñ1ð 	ð ×4Ñ4Ø�$˜ó
ð 	
rý   c                óü   — t        |t        j                  «      r3t        |«      |kD  r@|d|dz
   dz   t	        j
                  |«      dd  z   }n| j                  j                  |«       |s|S | j                  |«      S )Nr   rT  r  éüÿÿÿ)	r§  r   rD   r˜  r&   Úmd5_hexr¢  Úvalidate_identifierr‰  )r  rñ   rÅ  r»  s       rþ   rÃ  z3IdentifierPreparer._truncate_and_render_maxlen_name  sq   € Ü�dœH×5Ñ5Ô6Ü�4‹y˜4ÒØ˜A  q¡Ð)¨CÑ/´$·,±,¸tÓ2DÀRÀSÐ2IÑI‘à�L‰L×,Ñ,¨TÔ2áØˆKà—:‘:˜dÓ#Ð#rý   c                ó$   — | j                  |«      S r  )r™  r`  s     rþ   rq  zIdentifierPreparer.format_index  s   € Ø×%Ñ% eÓ,Ð,rý   c                ó´   — |€|j                   }| j                  |«      }| j                  |«      }| j                  s|r|r| j	                  |«      dz   |z   }|S )z'Prepare a quoted table and schema name.r  )rñ   r‰  r‹  r‘  rŒ  )r  r�   r,  rñ   r4  r‘  s         rþ   rœ  zIdentifierPreparer.format_table  s_   € ð ˆ<Ø—:‘:ˆDà—‘˜DÓ!ˆà×1Ñ1°%Ó8Ðà×Ò¡JÑ3CØ×&Ñ&Ð'7Ó8¸3Ñ>ÀÑGˆFØˆrý   c                ó$   — | j                  |«      S )zPrepare a quoted schema name.r–  r9  s     rþ   r-  z IdentifierPreparer.format_schema   s   € ð �z‰z˜$ÓÐrý   c                ó~   — |�+t        |t        j                  «      r|j                  |«      }| j	                  |«      S )úPrepare a quoted column name.)r§  r   rD   r0  r‰  )r  rñ   r_  s      rþ   rO  z$IdentifierPreparer.format_label_name%  s;   € ð Ð¤JØ”(×+Ñ+ô%
ð —>‘> (Ó+ˆDà�z‰z˜$ÓÐrý   c                ón  — |€|j                   }|�+t        |t        j                  «      r|j	                  |«      }t        |dd«      sF|r3| j                  |j                  ||¬«      dz   | j                  |«      z   S | j                  |«      S |r$| j                  |j                  ||¬«      dz   |z   S |S )rÐ  r†  F)r,  rñ   r  )	rñ   r§  r   rD   r0  r4  rœ  r�   r‰  )r  r’   r  rñ   Ú
table_namer,  r_  s          rþ   r€  z IdentifierPreparer.format_column3  sÝ   € ð ˆ<Ø—;‘;ˆDàÐ¤JØ”(×+Ñ+ô%
ð —>‘> (Ó+ˆDä�v˜|¨UÔ3Ùà×%Ñ%ØŸ™°À*ð &ó ð ñð —j‘j Ó&ñ	'ðð —z‘z $Ó'Ð'ñ
 à×%Ñ%ØŸ™°À*ð &ó ð ñð ñ	ðð �rý   c                ó´   — | j                  |«      }| j                  s(|r&|r$| j                  |«      | j                  |d¬«      fS | j                  |d¬«      fS )z(Format table name and schema as a tuple.Frf  )r‹  r‘  rŒ  rœ  )r  r�   r,  r‘  s       rþ   r%  z#IdentifierPreparer.format_table_seq`  sj   € ð  ×1Ñ1°%Ó8Ðà×Ò¡JÑ3Cà×!Ñ!Ð"2Ó3Ø×!Ñ! %°EÐ!Ó:ðð ð
 ×%Ñ% e¸Ð%Ó>Ð@Ð@rý   c                ó¸   — d„ | j                   | j                  | j                  | j                  «      fD «       \  }}}t        j                  d|||dœz  «      }|S )Nc              3  óF   K  — | ]  }t        j                  |«      –— Œ y ­wr  )rL  rM  rÛ  s     rþ   r,  z4IdentifierPreparer._r_identifiers.<locals>.<genexpr>s  s$   è ø€ ð )
ñ�ô �I‰I�a�Lñùs   ‚!zM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+)ÚinitialÚfinalr€  )rŠ  r‹  r¢  rL  rN  )r  rÖ  r×  Úescaped_finalÚrs        rþ   Ú_r_identifiersz!IdentifierPreparer._r_identifiersq  sp   € ñ)
ð ×"Ñ"Ø× Ñ Ø×'Ñ'¨×(8Ñ(8Ó9ñó)
Ñ%ˆ�˜ô �J‰Jð$ð "¨E¸mÑLñMó
ˆð ˆrý   c                óº   — | j                   }|j                  |«      D ��cg c]  \  }}|xs |‘Œ c}}D �cg c]  }| j                  |«      ‘Œ c}S c c}}w c c}w )z:Unpack 'schema.table.column'-like strings into components.)rÚ  Úfindallr¤  )r  ÚidentifiersrÙ  Úarl  ræ  s         rþ   Úunformat_identifiersz'IdentifierPreparer.unformat_identifiersƒ  sh   € ð ×Ñˆð *+¯©°;Ô)?Ô@Ñ)?¡  A�a’f˜1‘fÐ)?Ó@ó
á@�ð ×%Ñ% aÕ(Ø@ñ
ð 	
ùã@ùò
s
   ¡A·A)r…  Nr…  TF)r¸  rï   r  rï   )r¸  rï   r  r  r  )r#   rï   r°  r   r  rï   )rP  rï   r°  r   r  rï   )T)rï  z
Label[Any]rñ   r7  r  rï   )r…  zOptional[AliasedReturnsRows]rñ   r7  r  rï   )TN)FNNFN).r÷   rø   rù   rú   ÚRESERVED_WORDSr©  ÚLEGAL_CHARACTERSr«  ÚILLEGAL_INITIAL_CHARACTERSrª  rû   r/  Ú
attrgetterr‹  r�  r®  r¤  rª  r¢  r¤  r×  r§  r_  r8  rŒ  r‰  r–  r  ru  rZ  rÚ  r&   rñ  r™  r¾  r¿  rÃ  rq  rœ  r-  rO  r€  r%  rí  rÚ  rß  rü   rý   rþ   r™  r™  ‹  s|  … ÙJà#€Nà'Ðà!;ÐàÓàÓà&Ó&à2E°(×2EÑ2EÀhÓ2OÐÐ/ÓOðð -2Ð# TÓ1ð
 ØØØ(,Øó"
òHò0'FóR
óFòó$
ó
ò;ô
%"ôN2òh"óð 8<ð.Øð.Ø'4ð.à	ó.ð JNð$Ø1ð$Ø9Fð$à	ó$óð €T×ÑÐ0Ó1òó 2ðó,

ó

ò
$ò-óò ð ó ð" ØØØØó+óZAð" 
×Ññó ðó"
rý   r™  )ìrú   Ú
__future__r   rw  Úcollections.abcÚabcrš  rï  Úenumr   r`  r¥  r/  rL  Útimer   r<  r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r‘  r   r   r   r   r    r!   r"   r#   r$   r%   r&   r)  Ú_typingr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   Útype_apir3   Úvisitorsr4   r5   r7   r8   Úutil.typingr9   r:   r;   Ú
annotationr<   r=   r>   rž  r?   r&  r@   ÚdmlrA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   Úengine.cursorrT   Úengine.interfacesrU   rV   rW   rX   rY   rZ   r[   r\   r]   rï   Ú_FromHintsTyperà  rN  ÚIrá  ÚLEGAL_CHARACTERS_PLUS_SPACErd  rŽ   râ  rØ  rÚ  rÝ  ÚUNICODEr¹  r¸  r[  r\  rè  Úor_r=  Úmulr–  ÚmodÚnegÚltÚleÚneÚgtÚgeÚeqÚis_distinct_fromÚis_not_distinct_fromÚ	concat_opr{  Únot_match_oprˆ  r‡  r  r†  rt  r  r   rž   ÚexistsÚdistinct_opÚinvÚany_opÚall_opÚdesc_opÚasc_opÚnulls_first_opÚnulls_last_opÚbitwise_xor_opÚbitwise_or_opÚbitwise_and_opÚbitwise_not_opÚbitwise_lshift_opÚbitwise_rshift_oprs  rÍ   r³   rµ   rº   r¶   r­   r¹   rÔ   rÕ   r·   r   ÚcubeÚrollupÚgrouping_setsrÚ   rû   rç  Ú_CompoundSelectKeywordrê   Ú	UNION_ALLrë   Ú
EXCEPT_ALLrì   ÚINTERSECT_ALLrè  rî   r   r
  r  r  r  r  r  r  r5  rE  rR  r`  re  r.  rf  rg  rh  ri  Ú
namedtuplerk  r�  ÚEnsureKWArgrå  ÚBinaryElementRoleÚCompilerColumnElementrî  r  r  r÷  r  rè  rx  r„  r  r™  )r  s   0rþ   Ú<module>r	     s  ðòõ" #ã Ý )Û Ý Û Û Û Û 	Ý Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý &Ý Ý Ý Ý Ý 2Ý Ý Ý #Ý !Ý Ý Ý  Ý %Ý Ý Ý Ý Ý !Ý "Ý #à	×ÒÝ+Ý,Ý"Ý#Ý)ÝÝÝÝ*Ý'Ý&Ý'ÝÝ#ÝÝ.Ý/ÝÝ&Ý+Ý'Ý"Ý'Ý,Ý4Ý<Ý:Ý<Ý=Ý3Ý=ÝCÝ+Ý:à�l CÐ'Ñ(€ò_€ðB �2—:‘:Ð.°·±Ó5Ð Ø(˜bŸj™jÐ):¸B¿D¹DÓAÐ Ù.3°A°r¬lÓ;©l¨™c !�f¨lÑ;×AÑAÀ3À%ÓHÐ àˆr�z‰zØ<¸b¿d¹dó€ð ˆr�z‰zØ<¸b¿d¹dó€ð ˆr�z‰zÐ5°r·t±tÓ<€Øˆb�j‰jÐAÀ2Ç:Â:ÓN€Ø�"—*‘*Ð9¸2¿:º:ÓF€à$Ð à"ØØØØ$Øñ€ð.à‡N‚N�Gð.ð ‡M‚M�6ð.ð ‡M‚M�5ð	.ð
 ‡M‚M�5ð.ð ‡M‚M�5ð.ð ‡M‚M�5ð.ð ‡M‚M�3ð.ð ‡L‚L�%ð.ð ‡L‚L�&ð.ð ‡L‚L�&ð.ð ‡L‚L�%ð.ð ‡L‚L�&ð.ð ‡L‚L�%ð.ð ×ÒÐ 4ð.ð  ×"Ò"Ð$<ð!.ð" ×Ò˜ð#.ð$ ×Ò˜	ñ%.ð& ×Ò˜Mð'.ð( ‡O‚O�Vð).ð* ×Ò˜ð+.ð, ×Ò˜ð-.ð. ‡O‚O�Xð/.ð0 ‡M‚M�6ð1.ð2 ‡M‚M�6ð3.ð4 ×Ò�jð5.ð6 ×Ò�{ð7.ð: ×Ò�ið;.ð< ×Ò˜;ð=.ð> ‡M‚M�6ð?.ð@ ×Ò�fðA.ðB ×Ò�fðC.ðF ×Ò�wðG.ðH ×Ò�fðI.ðJ ×Ò˜nñK.ðL ×Ò˜]à×Ò˜eØ×Ò˜UØ×Ò˜eØ×Ò˜cØ×Ò Ø×Ò ñ[.€	ðb ×Ò˜
Ø×Ò˜NØ×Ò˜NØ×ÒÐ!4Ø×Ò˜NØ×Ò˜Ø×ÒÐ.Ø×Ò�hØ×Ò�yØ×Ò˜NØ‡N‚N�FØ‡N‚N�FØ×Ò�hØ×Ò˜_ð-€	Ð)ó ð& ØØØØØØØØØØØ"Ø"Ø$Ø(ñ€ð& ×%Ò%×+Ò+¨WØ×%Ò%×/Ò/°Ø×%Ò%×,Ò,¨hØ×%Ò%×0Ò0°,Ø×%Ò%×/Ò/°Ø×%Ò%×3Ò3°_ðÐ ô˜ô ô>˜ô ð  !Ð �*Ó  Ø€ˆÓ Ø€
ˆJÓ Ø€ˆÓ ô˜iô ô$Ð1¸õ $ô:�Jô :ôzt˜
ô tôn˜Zô ô2! ;ô !ô$�Gô ô ˆgô ñ. FKØóFÑ B€
Ð&¨°lô
?#Ð'�×'Ò'¨°wÀÐ6HÓIô ?#÷DH'ñ H'ôVF�4×#Ò#ô Fô0Ø	×Ò˜CÑ  (×"@Ò"@ôô2#
Ø	×Ò˜CÑ  (×"@Ò"@ô#
ôL_T
�(ô _T
ôDil
�[ô l
ô^X�(ô Xôvj(˜,ô j(ôZ&Ð,ô &ôB/˜xô /ô;˜hô ;÷
ò 
ùòK] <s   Êa6