Ë
    ­Œj·R ã                  óÖ  — 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/l0m<Z< dd0l=m>Z> d1d2l&m?Z? d1d&l&m1Z1 d1d3l1m@Z@ d1d4lAmBZB d1d5lAmCZC d1d6lAmDZD d1d7lAmEZE ejH                  �r>dd8lFmGZG dd9l'mHZH dd:l'mIZI dd;l'mJZJ dd<lKmLZL dd=lMmNZN dd>lOmPZP dd?lOmQZQ dd@lOmRZR ddAlOmSZS ddBlOmTZT ddCl*mUZU ddDl*mVZV ddEl*mWZW ddFl*mXZX ddGl*mYZY ddHl*mZZZ ddIl*m[Z[ ddJl*m\Z\ ddKl*m]Z] ddLl*m^Z^ ddMl+m_Z_ ddNl.m`Z` ddOl.maZa ddPl.mbZb ddQl.mcZc ddRl.mdZd ddSl.meZe ddTl.mfZf ddUl/mgZg ddVl/mhZh ddWl/miZi ddXl/mjZj ddYl/mkZk ddZl/mlZl dd[l/mmZm dd\l/mnZn dd]l/moZo dd^lpmqZq dd_lpmrZr dd`lpmsZs ddalpmtZt ddbl=muZu d1dclvmwZw d1ddlxmyZy d1delxmzZz d1dflxm{Z{ d1dglxm|Z| d1dhlxm}Z} d1dilxm~Z~ d1djlxmZ d1dklxm€Z€ d1dllxm�Z� edme‚f   Zƒh dn£Z„ e�j
                  doe�j                  «      Z‡ e�j
                  dpe�j                  «      Zˆ e‰ddq«      D � ch c]
  }  e‚| «      ’Œ c} �j                  drg«      Z‹ e�j
                  dse�j                  «      ZŒ e�j
                  dse�j                  «      Z� e�j
                  dte�j                  «      ZŽ e�j
                  due�j                  «      Z� e�j
                  dve�j                  «      Z‘dwZ’e’dxdydzd{d|d}œZ“i e,�j(                  d~“e,�j*                  d“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Ž“i 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—“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¦i¥Z½e+�j|                  d§e+�j~                  d¨e+�j€                  d©e+�j‚                  dªe+�j„                  d«e+�j†                  d¬e+�jˆ                  d­e+�jŠ                  d®e+�jŒ                  d¯e+�jŽ                  d°e+�j�                  d±e+�j’                  d²e+�j”                  d³e+�j–                  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ÐeC«      ZØdZÙdÑeÍdÒ<   dZÚdÓeÍdÔ<   d1ZÛdÕeÍdÖ<   d×ZÜdØeÍdÙ<    G dÚ„ dÛeE«      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çe@«      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eC«      Zø G �d„ �deC«      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)ÚNO_ARG)Úquoted_name)Ú	TupleType)Úprefix_anon_mapé   )Úexc)ÚFastIntFlag)ÚLiteral)ÚProtocol)ÚSelf)Ú	TypedDict)Ú_AnnotationDict)Ú_AmbiguousTableNameMap)ÚCompileState)Ú
Executable)ÚCacheKey)ÚExecutableDDLElement)ÚInsert)ÚUpdate)Ú
UpdateBase)ÚUpdateDMLState)Ú
ValuesBase)Ú_truncated_label)ÚBinaryExpression)ÚBindParameter)ÚClauseElement)ÚColumnClause)ÚColumnElement)ÚFalse_)ÚLabel)ÚNull)ÚTrue_)ÚFunction)ÚColumn)Ú
Constraint)ÚForeignKeyConstraint)ÚIndex)ÚPrimaryKeyConstraint)ÚTable)ÚUniqueConstraint)Ú_ColumnsClauseElement)ÚAliasedReturnsRows)ÚCompoundSelectState)ÚCTE)Ú
FromClause)ÚNamedFromClause)ÚReturnsRows)ÚSelect)ÚSelectState)Ú_BindProcessorType)ÚTypeDecorator)Ú
TypeEngine)ÚUserDefinedType)Ú	Visitable)ÚCursorResultMetaData)Ú_CoreSingleExecuteParams)Ú_DBAPIAnyExecuteParams)Ú_DBAPIMultiExecuteParams)Ú_DBAPISingleExecuteParams)Ú_ExecuteOptions)Ú_GenericSetInputSizesType)Ú_MutableCoreSingleExecuteParams)ÚDialect)ÚSchemaTranslateMapTyperY   >^   Ú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__© ó    úa/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/sqlalchemy/sql/compiler.pyrý   rý   k  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  Š  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_fromsr[   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_compoundr[   Ú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þ   Ú	statementrd   Ú
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  ©r0  )Ú.0Úkeyr  s     €r  Ú	<genexpr>z6ExpandedState.positional_parameters.<locals>.<genexpr>ß  s   øè ø€ ÐFÑ5E¨c�T—_‘_ SÕ)Ñ5Eùs   ƒ)r4  r2   Ú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`.r8  r>  s    r  Úadditional_parametersz#ExpandedState.additional_parametersá  s   € ð �‰Ðr  N)r  r  )r  rd   )r  r  r  r	  r
  Úpropertyr?  rA  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_columnsr3  Úsentinel_param_keysÚimplicit_sentinelÚembed_values_counter)r  r  r  r	  r
  rK  rL  rN  rO  rP  rQ  rR  r  r  r  rD  rD  ç  s·   … ñð Óðð
 Óðð 8Ó7ØMà#&Ó&ð
ð %*Ð˜TÓ)ðð ',Ð˜tÓ+ðð 9=ÐÐ5Ó<ðð !"Ð˜#Ó!ðð 48ÐÐ0Ó7ðð  $Ð�tÓ#ð	ð "'Ð˜$Ó&ð	r  rD  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_statementre   Úreplaced_parametersú#Optional[_GenericSetInputSizesType]Úprocessed_setinputsizesz#Sequence[_DBAPISingleExecuteParams]ÚbatchzSequence[Tuple[Any, ...]]Úsentinel_valuesrI  Úcurrent_batch_sizeÚbatchnumÚtotal_batchesr&  Úrows_sortedÚis_downgradedNr  r  r  r  rT  rT  ^  sD   … ñ
ð ÓØ/Ó/Ø@Ó@Ø.Ó.Ø.Ó.ØÓØƒMØÓØÓØÔr  rT  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   r1   é   é   é   é@   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  ra  ra  w  sE   „ ñð
 €MØ€MØ€HØ€Hà%¨Ñ0°8Ñ;ÐØ%Ð(9Ñ9ÐàÐØ Ñr  ra  c                  ó   — e Zd ZdZ	 dZ	 dZy)ÚCompilerStater   r   r1   N)r  r  r  Ú	COMPILINGÚSTRING_APPLIEDÚNO_STATEMENTr  r  r  ro  ro  ‰  s    „ Ø€IØ=à€Nðð €Lðr  ro  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   r1   N)r  r  r  r	  Ú
NO_LINTINGÚCOLLECT_CARTESIAN_PRODUCTSÚWARN_LINTINGÚFROM_LINTINGr  r  r  rt  rt  ™  s5   „ ñð €JØà!"Ððð €LØ2à-°Ñ<€Lðr  rt  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)r9  ÚedgeÚnodes     €r  r;  z"FromLinter.lint.<locals>.<genexpr>Õ  s#   øè ø€ ÐNÁI¸D˜T d§j¡j°Ó&6Ð"6Õ7ÁIùó   ƒ")Úfromsr~   ÚedgesÚremoveÚpopÚcollectionsÚdequeÚpopleftÚdiscardÚ
extendleftÚdifference_update)
r  Ústartr‚  rƒ  Úthe_restÚ
start_withÚstackr  Ú	to_remover€  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)r‚  )r9  Úfrom_r  s     €r  r;  z"FromLinter.warn.<locals>.<genexpr>ë  s(   øè ø€ ð &Ù:?°�a˜Ÿ
™
 5Ñ)Ð*¨!Ô,¹%ùó   ƒ )Ú	stmt_typer‚  rŒ  )r‘  r†   rÏ   r‚  r&   Úwarn)r  r—  r�  rŽ  r‚  Ú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  rz  rz  µ  s   „ ñó#ôJ#r  rz  r‚  rƒ  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*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þ   Ústringro  ÚstateFzOptional[CursorResultMetaData]Ú_cached_metadataz"Optional[List[ResultColumnsEntry]]Ú_result_columnsú Optional[SchemaTranslateMapType]Úschema_translate_maprh   Úexecution_optionsÚIdentifierPreparerÚpreparerr8   Ú_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'                  | 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_translatero  rp  r¢  r/  Úsupports_executionÚcan_executerª  r   Ú
isinstancer;   Ú_execution_optionsr§  Úprocessr¡  Ú_render_schema_translatesrq  rr  r   r¯  ©r  r±  r/  r¦  Úrender_schema_translateÚcompile_kwargss         r  Ú__init__zCompiled.__init__K  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á&Ø+Ð7Ð7Ð7Ø"Ÿ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   ø€ Ø×ÑÔ Ü‰wÑ(Ó*Ð*r  c                 ó   — y r  r  ©rÂ  s    r  r¿  zCompiled._init_compiler_clsˆ  s   € àr  c                ó~   — | j                   r|j                  | ||«      S t        j                  | j                  «      ‚r  )rµ  Ú_execute_compiledr2   ÚObjectNotExecutableErrorr/  )r  Ú
connectionÚdistilled_paramsr§  s       r  Ú_execute_on_connectionzCompiled._execute_on_connectionŒ  s@   € ð ×ÒØ×/Ñ/ØÐ&Ð(9óð ô ×.Ñ.¨t¯~©~Ó>Ð>r  c                óB   — t        j                  | t        |«      «      |‚r  ©r2   Ú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¢  ro  rq  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±  rk   r/  rŸ  r¦  r¥  r»  r&  r¼  úMapping[str, Any])r  r  ©r  ÚSQLCompiler)rÛ  rb   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Ó  rB  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×,>Ñ,>Ó,@ð7(àð7(ð +ð7(ð ?ð	7(ð
 "&ð7(ð *ó7(õr+ð ñó ðò?ò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  )r2   rÎ  rÏ  s       r  rÓ  z*TypeCompiler.visit_unsupported_compilationÓ  s   € ô ×-Ñ-¨d°GÓ<À#ÐEr  N)r±  rk   )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½  rB  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½  rB  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`„ ZJe9�dda„«       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„ «       «       ZU�ddo„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€„Zg�dd�„Zh�dd‚„Zi�ddƒ„Zjd„„ Zkd…„ Zld†„ Zmd‡„ Zndˆ„ Zod‰„ ZpdŠ„ Zqd‹„ ZrdŒ„ Zsd�„ ZtdŽ„ Zud�„ Zvd�„ Zwd‘„ Zx	 �d	 	 	 	 	 	 	 �dd’„Zyd“„ Zzd”„ Z{�d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!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"dÁ„Z¨	 	 	 	 	 	 	 	 �d"dÂ„Z©	 	 	 	 	 	 	 	 �d"dÃ„Zª	 	 	 	 	 �d#dÄ„Z«dÅ„ Z¬e­dfdÆ„Z®	 	 	 	 	 	 �d$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.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Ï	 	 	 	 �d0dç„ZÐdè„ ZÑdé„ ZÒdê„ ZÓ	 	 �ddë„ZÔdì„ ZÕ�d1dí„ZÖdî„ Z×dï„ ZØdð„ ZÙ	 	 	 	 	 	 	 	 	 	 �d2dñ„ZÚdò„ ZÛ	 	 	 �d3dó„ZÜ	 	 	 	 	 	 	 	 �d4dô„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ë	 	 	 	 �d5d÷„Zì	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d6dø„Zí	 �d7dù„Zîdú„ Zïdû„ Zðdü„ Zñdý„ Zò	 �d	 	 	 	 	 	 	 �d8dþ„Zódÿ„ Zô�d „ Zõ�d�d„Zö�d„ Z÷�d„ Zø�d„ Zùy(9  ré  z~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_matchr4  Ú_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_clsC  s   € à× Ñ Õ"r  c                ó¾   — t        j                  dj                  | j                  «      «      }t        j                  d|› d�«      | _        | j                  | _        y )Nr   r*  r+  )ÚreÚescaper†   r-  Úcompiler.  r/  )rÂ  Úregs     r  r[  z SQLCompiler._init_bind_translateG  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>  rE  r?  F©rã  Ú_no_postcompile)Ú_populate_self)5Úcolumn_keysr­  r:  rQ  Úfor_executemanyÚlintingr9  r&   Úcolumn_dictr:  r�  r¤  rb  Ú
paramstyleÚ
startswithrE  r@  Ú_pyformat_templater?  ÚBIND_TEMPLATESrU  Úlabel_lengthÚmax_identifier_lengthr0   Úanon_mapÚtruncated_namesÚ_truncated_countersrž  r½  r1  r2  r0  r   r¶  r@   rB   Ú_inlinerT  r±  Úinsert_executemany_returningÚ_return_defaultsr>  Ú__dict__ÚupdateÚitemsr¢  ro  rq  Ú_process_numericÚ_process_positionalrF  rä  Ú#_process_parameters_for_postcompile)r  r±  r/  r­  rf  rg  rh  Ú_supporting_againstrÜ  ÚbÚcksmÚckbmÚnbÚkÚvr0  s                   r  r½  zSQLCompiler.__init__M  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)rL  rF  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)r7  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.

        )rˆ  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  )Úlistr4  r5  r>  s    r  ÚprefetchzSQLCompiler.prefetch6  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&   ÚOrderedDictrU  rV  rW  rX  )r  rU  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¤  rC  r�  r…  )r  Úresult_columnsÚordered_columnsÚentrys       r  Ú_nested_resultzSQLCompiler._nested_resultV  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   r1   r   )r•   Úappend)ÚmÚnormal_bindÚplaceholderÚ	positionss     €€r  Úfind_positionz6SQLCompiler._process_positional.<locals>.find_position{  sM   ø€ ØŸ'™' !›*ˆKÙØ× Ñ  Ô-Ø"Ð"ð × Ñ  §¡¨£Ô,Ø—w‘w˜q“zÐ!r  r   r   r1   r  ©rF  rH  )r¡  zre.Match[str]r  rþ   )r4  r¢  ro  rq  rE  r±  rj  r]  ÚsubÚ_positional_patternr¡  rP  rx  ÚlenÚgetrL  rF  rH  Ú_replace)
r  r¥  r�  r‚  Úreverse_escaper   rF  rH  r£  r¤  s
           @@r  rz  zSQLCompiler._process_positionaln  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  )rR  )r9  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¦  )rE  r¢  ro  rq  rL  rR  Ú	itertoolsÚchainr:  Úvaluesr9  rO  rN  r@  Únext_numeric_posr‘  r4  rP  r©  rx  rª  Ú_pyformat_patternr§  r¡  rF  rH  r«  )r  Únumr™   Ú	bind_nameÚbindÚphÚ
len_beforer   ÚposrF  r‚  rH  r´  s   `           @r  ry  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±  )r9  Ú	elem_typer  s     €r  r;  z9SQLCompiler._bind_processors.<locals>.<genexpr>.<genexpr>  s,   øè ø€ ð #ñ.$ 	ð &×<Ñ<¸T¿\¹\×Jñ.$ùs   ƒ%(N)	r:  r  Ú_is_tuple_typerÄ  r±  r=  r   r/   Útypes)r9  Ú	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

        Trc  )rä  r{  )r  rá  rã  r0  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)rF  rG  Údictr0  r2   r<  r&  rP  r­  ÚCompileErrorrQ  Úzipr:  rx  rª  r:  ÚrequiredÚcallableÚeffective_valuerÉ  )r  rá  râ  rã  Ú_group_numberÚ_checkrd  Úhas_escaped_namesÚorig_extractedÚ
ckbm_tupler  r$  r}  Ú	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é  rN  r:  r  rÆ  r   r/   rÇ  )
r  rì  Ú
inputsizesrN  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.

        Nr1  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)r9  ÚiÚtuple_elementÚjr$  r   Útuple_processorss        €€r  r;  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>N  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  )r9  r:  r$  r   Úsingle_processorss      €€r  r;  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>Y  s1   øè ø€ ð .á*3¡  QØ#Ð'8Ñ8ð !Ð"3°DÑ"9Ô:Ù*3ùó   ƒc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  r  ©r9  r   r$  s      r  r;  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>_  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>f  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   r1   ú~~r  rÖ   c              3  ó.   •K  — | ]  }‰›|›‰›�–— Œ y ­wr  r  )r9  ÚexpÚbe_leftÚbe_rights     €€r  r;  z]SQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding.<locals>.<genexpr>v  s    øè ø€ ð !á/˜ñ !(©©hÔ7Ù/ùs   ƒ)r•   Úsplitr†   )r¡  r:  ÚexprÚtokr  r  Úreplacement_expressionss       @@€r  Úprocess_expandingzJSQLCompiler._process_parameters_for_postcompile.<locals>.process_expandingm  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>Š  s   ø€ ˜) A§G¡G¨A£JÒ/r  r  )#rI  r¡  rb  rK  r4  rÊ  r   rE  r:  r¸  rP  rª  r9  rN  Úrender_literal_bindparamr…  rO  Ú$_literal_execute_expanding_parameterÚliteral_executerw  r  rÆ  rö  Úextendr   r]  r§  Ú_post_compile_patternr¹  r@  rº  r.  r/  r‘  rG  )r  r0  re  Úexpanded_parametersÚpre_expanded_stringÚnew_positiontupÚpre_expanded_positiontupr2  Ú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  r{  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_cursorrc   Ú_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ª  )Ú	lastrowidr0  Ú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  )r9  r+  r  r0  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  )r9  r+  r  Úautoinc_colÚautoinc_getterr0  r0  s      €€€€r  r;  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>û  sL   øè ø€ ð ñ (/™˜ ð  +Ñ-ð  .Ð9ñ +¨9°jÔAá!*ñ $ JÓ/ó0ñ (/ùó   ƒ&)r  )r0  r0  r8  r9  Ú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¶  r>   rœ   Úprimary_keyÚoperatorÚmethodcallerÚ_autoincrement_columnr  Ú_cached_result_processorr±  r9  Úresult_tupler:  )r  ÚresultÚparam_key_getterr/  rœ   r  r3  rª  r8  r9  r2  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                  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 )Nz'List[Tuple[Callable[[Any], Any], bool]]Trª  Fc                ó,   •‡ ‡—  ‰ˆˆ fd„‰D «       «      S )Nc              3  óH   •K  — | ]  \  }}|r |‰«      n |‰«      –— Œ y ­wr  r  )r9  r+  Úuse_rowr0  Úrows      €€r  r;  zWSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get.<locals>.<genexpr>0	  s-   øè ø€ ð á'.‘O�F˜Gñ  '‘�s”©F°:Ó,>Ó>Ù'.ùr�  r  )rL  r0  r;  r=  s   ``€€r  rª  zDSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get/	  s   ú€ Ùô á'.óó ð r  )r&   r#  r>  r%  r/  r   r¶  r>   r,  rœ   r7  rö  r   r?  r@  Ú
itemgetterrA  rD  r:  )r  rE  r/  rF  rœ   rŠ  Úidxr  Úretrª  r;  r=  s             @@r  Ú+_inserted_primary_key_from_returning_getterz7SQLCompiler._inserted_primary_key_from_returning_getter
	  s_  ù€ ô —‘×-Ñ-ˆà×!Ñ!Ð-Ð-Ð-Ø×&Ñ&×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   ÂD9Â3AD?
ÄEc                 ó   — y)zÅCalled when a SELECT statement has no froms, and no FROM clause is
        to be appended.

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

        r   r  r>  s    r  Údefault_fromzSQLCompiler.default_from7	  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Ú  Ú	translater9  Ú_with_valuer:  r:  r…  rO  rN  rQ  Ú_cloned_setr   )r  Úoverride_bindsrÒ  Úsqltextr�  ÚbpÚnew_bpr   rÝ  r  r~  Úcbs               r  Úvisit_override_bindsz SQLCompiler.visit_override_bindsA	  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_grouping�	  ó+   € ØÐ8�X×%Ñ%×8Ñ8¸ÑHÀÑHÑHÈ3ÑNÐNr  c                óH   — d |j                   j                  | fi |¤Žz   dz   S r_  r`  )r  ra  rÜ  s      r  Úvisit_select_statement_groupingz+SQLCompiler.visit_select_statement_grouping„	  rd  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   ÚKeyErrorr2   rÔ  Ú_label_resolve_dictrÐ  Ú_order_by_label_elementr   Úshares_lineager¸  )r  rÐ  rk  rÜ  r%  ÚkeÚ	with_colsÚ
only_fromsÚ	only_colsÚresolve_dictÚorder_by_elems              r  Úvisit_label_referencez!SQLCompiler.visit_label_reference‡	  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)Nrh  rŒ  r%  ri  )ÚextraÚexc_clsrÑ  rj  rk  )r�  r¸  Ú_text_clauser   rm  r   Ú_no_text_coercionrÐ  r2   rÔ  rn  )r  rÐ  rk  rÜ  r%  rq  rr  rs  rt  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)rk  Úwithin_label_clauserk  F)r¶  r   r   rC   Ú_truncated_identifierr  r  rÐ  rÚ  Ú	OPERATORSr!   Úas_r©  Úformat_label)r  r  Úadd_to_result_mapr€  rk  rj  Ú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.©r2   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 )Nr  r)  r   Úalias)r   rŽ  Ú
is_literalr¶  r   rC   r�  r:  Ú	_tq_labelr  Úescape_literal_columnr©  Úquoterœ   Únamed_with_columnÚschema_for_objectÚquote_schemar   rZ   )r  r¡   r…  Úinclude_tabler†  Ú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_collationX
  s   € Ø�}‰}×-Ñ-¨g×.?Ñ.?Ó@Ð@r  c                ó   — |j                   S r  ©r   )r  Ú
fromclauserÜ  s      r  Úvisit_fromclausezSQLCompiler.visit_fromclause[
  s   € Ø�‰Ðr  c                ó   — |j                   S r  rª  )r  r~  rÜ  s      r  Úvisit_indexzSQLCompiler.visit_index^
  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_typeclausea
  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_texth
  ó$   € Ø�=‰=×)Ò)Ø—<‘<  TÓ*ˆDØˆr  c                óV   — | j                   j                  r|j                  dd«      }|S rµ  r·  rº  s     r  r—  z!SQLCompiler.escape_literal_columnm
  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_bindparams
  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>…
  s   € �a—g‘g˜a”jr  )	r�  r8  r%   ÚNULLTYPEÚBIND_PARAMS_ESCr§  ÚBIND_PARAMSr¼  r»  )r  rÃ  r…  rÒ  rÄ  s   `` ` r  Úvisit_textclausezSQLCompiler.visit_textclauser
  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)rk  r…  ©Únesting_level)r�  Ú_default_stack_entryr~   r   Ú_independent_ctesÚ_dispatch_independent_ctesrª  rb  rC  rA  r&  Úcolumn_argsrD  r¸  Ú_add_to_result_maprÐ  rU  r©  Ú_render_cte_clauser…  )r  ÚtafÚcompound_indexrb  rÒ  Útoplevelr›  Ú	new_entryÚpopulate_result_mapr‡  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  ©r9  Úss     r  r;  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>Ï
  s   è ø€ ð 
áI�Ùô ÙIùó   ‚c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÙ  ©r9  r‡  rÒ  r  s     €€r  r;  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>Ñ
  s%   øè ø€ ÐIÁ¸1Ð*�a×*Ñ*¨4Ñ6°2Õ6Áùr–  ©r†   )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_rL   Ú
_singletonrI   rÚ  r‚  r†   )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@  r‚  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_dispatchr‚  rñ  rù  rm  r2   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ÚcondrE  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'  r1   r   )r²  rÚ  r]  Ú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                ó8  —  |j                   j                  | fi |¤Ž}|j                  �!d | j                  |j                  fi |¤Žz  }n\|j                  �!d | j                  |j                  fi |¤Žz  }n/|j
                  �!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GROUPS BETWEEN %sz OVER (r,  Ú	PARTITIONÚORDERz BY r'  )
rÐ  rÚ  r"  r#  ÚrowsÚgroupsr†   Úpartition_byÚorder_byr©  )r  ÚoverrÜ  r»  r"  Úwordr  s          r  Ú
visit_overzSQLCompiler.visit_overN  s[  € Ø.ˆt�|‰|×.Ñ.¨tÑ>°vÑ>ˆØ�;‰;Ð"Ø'Ð*C¨$×*CÑ*CØ—‘ñ+Ø%ñ+ñ ‰Fð �Y‰YÐ"Ø&Ð)B¨×)BÑ)BØ—	‘	ñ*Ø#ñ*ñ ‰Fð �[‰[Ð$Ø(Ð+D¨4×+DÑ+DØ—‘ñ,Ø%ñ,ñ ‰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   Ã/D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_withingroupo  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_funcfilteru  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Ü  r8  s       r  Úvisit_extractzSQLCompiler.visit_extract{  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_column‚  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   r.   r˜  r†   ÚpackagenamesÚfunction_argspecÚ_with_ordinality)r  r2  r…  rÜ  r
  r»  r   r
  s           r  r<  zSQLCompiler.visit_function‡  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  rL  rÒ  s      r  rK  zSQLCompiler.visit_sequence¸  s$   € Ü!Ø@Ø�l‰l×Ññ ó
ð 	
r  c                ó<   —  |j                   j                  | fi |¤ŽS r  )Úclause_exprrÚ  )r  r2  rÜ  s      r  rH  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))rb  rÕ  NrÙ  )r9  r÷  r‡  rb  rÜ  r  s      €€€r  r;  z4SQLCompiler.visit_compound_select.<locals>.<genexpr>ç  sC   øè ø€ ð ñ 2‘D�A�qð %�×$Ñ$ØðØ!'¸ñØ=Cõñ 2ùs   ƒ#&rœ  rb  T©rÍ  Úinclude_following_stackr  )r�  Ú_compile_state_factoryr%  r/  rÎ  rª  r   rÏ  rÐ  Úcompound_keywordsÚkeywordr†   rö  ÚselectsÚgroup_by_clauserÓ  Úorder_by_clauseÚ_has_row_limiting_clauseÚ_row_limit_clauserU  r©  rÓ  r…  )r  Úcsrb  rÕ  rÜ  rÖ  r%  Úcompound_stmtr›  Úneed_result_maprZ  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  r`  rÜ  s      r  r_  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  rB  )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«      ‚)Nr…  r†  zFUnary expression does not support operator and modifier simultaneouslyÚunaryr@  Úmodifierz,Unary expression has no operator or modifier)r@  ro  r2   rÔ  r  Ú _generate_generic_unary_operatorr‚  Ú _generate_generic_unary_modifier)r  rn  r…  r†  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¸  r‡   r   ÚCastr›   r  Ú_type_affinityr%   ÚNumeric©r  r    r@  rÒ  s       r  Úvisit_truediv_binaryz SQLCompiler.visit_truediv_binary6  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 )Nrt  z	FLOOR(%s))	r±  ru  r›   r  rw  r%   ÚIntegerr¸  r‡   ry  s       r  Úvisit_floordiv_binaryz!SQLCompiler.visit_floordiv_binaryQ  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_operatorb  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 = 0r  r�  s       r  Úvisit_is_false_unary_operatorz)SQLCompiler.visit_is_false_unary_operatork  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 )Nr„  )Úoverride_operator)Úvisit_binaryr!   Úmatch_opry  s       r  Úvisit_not_match_op_binaryz%SQLCompiler.visit_not_match_op_binaryt  s,   € Ø˜$×+Ñ+Ø¤i×&8Ñ&8ð ,ó 
ñ 
ð 	
r  c                ó>   — d | j                   |t        |   fi |¤Žz  S rý  )Ú_generate_generic_binaryr‚  ry  s       r  Úvisit_not_in_op_binaryz"SQLCompiler.visit_not_in_op_binaryy  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  ©r9  rÐ  s     r  r;  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>…  ó   è ø€ Ð:±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>Œ  r’  r“  zNULL) AND (1 != 1)r!   Ú	not_in_opr©  r†   Úin_opÚvisit_empty_set_expr)r  r  Ú	expand_oprÒ  s       r  Úvisit_empty_set_op_exprz#SQLCompiler.visit_empty_set_op_expr�  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.rP  ©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ó  )r9  rÉ  Ú
param_typer  s      €r  r;  z[SQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>.<genexpr>¿  s/   øè ø€ ð ñ2Ñ-˜E :ð ×1Ñ1°%¸×Dñ2ùr�  N)r†   rÕ  r  rÇ  )r9  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r1   ú)unexpected format for expanding parameterr  r   r  c              3  ób   •K  — | ]&  }‰›‰j                  |‰j                  «      ›‰›�–— Œ( y ­wr  ©rô  r  )r9  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¤  )r9  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Ö  r†   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©  )r9  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)r†   rö  )r9  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  )r9  r:  rÉ  r¶  s      €r  r;  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>,  s   øè ø€ ð /Ù<E©j¨c°5Ñ$ S×)¹Iùr6  )r  r°  r±  r  rå  rE  r?  r>  Ú_bind_typing_render_castsr´  rÆ  r™  rÇ  r˜  r§  r¶  r¨  r   rþ   r©  Ú	_is_arrayrö  r¦  r†   )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@  rƒ  rw  r¶  Úproductr)   r‡   r*   r›   r=  r¶  r   rE   r  r‚  rŒ  rm  r2   rÎ  )r  r    r‡  Úeager_groupingr¿  rÀ  rÒ  r¾  r	  r
  r  rÑ  s               r  rˆ  zSQLCompiler.visit_binary2  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_functionr�  s       r  Ú&visit_function_as_comparison_op_binaryz2SQLCompiler.visit_function_as_comparison_op_binaryj  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¸  r‡   r›   ry  s       r  Úvisit_mod_binaryzSQLCompiler.visit_mod_binarym  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  r�  s       r  Úvisit_custom_op_binaryz"SQLCompiler.visit_custom_op_binary{  sS   € Ø'×6Ñ6ˆÐÑØ,ˆt×,Ñ,ØØ�$×,Ñ,¨X×->Ñ->Ó?Ñ?À#ÑEñ
ð ñ
ð 	
r  c                ób   —  | j                   || j                  |j                  «      dz   fi |¤ŽS r  )rp  r—  r  r�  s       r  Úvisit_custom_op_unary_operatorz*SQLCompiler.visit_custom_op_unary_operatorƒ  s:   € Ø4ˆt×4Ñ4Ø�T×/Ñ/°×0AÑ0AÓBÀSÑHñ
ØLNñ
ð 	
r  c                ób   —  | j                   |d| j                  |j                  «      z   fi |¤ŽS r  )rq  r—  r  r�  s       r  Úvisit_custom_op_unary_modifierz*SQLCompiler.visit_custom_op_unary_modifierˆ  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@  r‡   rÚ  r›   )r  r    r  rÃ  rÒ  r  r»  s          r  rŒ  z$SQLCompiler._generate_generic_binary�  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  r`  ©r  rn  r  rÒ  s       r  rp  z,SQLCompiler._generate_generic_unary_operator¦  s$   € ØÐ:˜%Ÿ-™-×:Ñ:¸4ÑFÀ2ÑFÑFÐFr  c                óB   —  |j                   j                  | fi |¤Ž|z   S r  r`  rÒ  s       r  rq  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'  r`  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  r‡   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  r‡   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  r‡   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  r‡   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 )Nr^  z LIKE ú ESCAPE r   ©Ú	modifiersrª  r‡   rÚ  r›   rô  r%   rÖ  ©r  r    r@  rÒ  r^  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 )Nr^  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  r‡   r›   rÞ  ry  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  r‡   r›   rä  ry  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_binary4  sD   € Ø×$Ñ$×(Ñ(¨°eÓ<ˆ	Ø,ˆt×,Ñ,ØÙ)2Ñ%¸ñ
ð ñ
ð 	
r  c                óZ   — t        j                  d| j                  j                  z  «      ‚©Nz/%s dialect does not support regular expressions©r2   rÔ  r±  r   ry  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  ry  s       r  Ú visit_not_regexp_match_op_binaryz,SQLCompiler.visit_not_regexp_match_op_binaryD  r  r  c                óZ   — t        j                  d| j                  j                  z  «      ‚)Nz;%s dialect does not support regular expression replacementsr  ry  s       r  Úvisit_regexp_replace_op_binaryz*SQLCompiler.visit_regexp_replace_op_binaryL  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_expressionrk  Úliteral_bindsr  Úrender_postcompilez&^(.*)\(__\[POSTCOMPILE_(\S+?)\]\)(.*)$r¢  z(__[POSTCOMPILE_r1   r  r   z~~REPL~~r  z~~]))rk  r¬  rþ  Frk  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  r]  r  r•   r  r  r=  Ú_truncate_bindparamr9  r©   r	  ÚintersectionrW  r2   rÔ  Ú_is_crudr:  rQ  r   Ú
isoutparamÚhas_out_parametersrF  rN  rO  rÂ  )r  rÈ  rk  r  r  r  r  rÜ  Úimplr   Úwrappedr¡  rO  r  r   ÚexistingrÝ  r  r~  rZ  r\  s                        r  Úvisit_bindparamzSQLCompiler.visit_bindparamT  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_typerY  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   rK   Ú	_instanceÚ_cached_literal_processorr±  rý  r2   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   rC   r�  )r  rÈ  r¼  s      r  r!  zSQLCompiler._truncate_bindparamD  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$  r1   )	rq  Ú	apply_maprp  r©  rn  rr  rª  ÚmaxÚhex)r  Úident_classr   ÚanonnameÚcounterÚ	truncnames         r  r�  z!SQLCompiler._truncated_identifierQ  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  ©rp  ©r  r   s     r  Ú
_anonymizezSQLCompiler._anonymizef  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>ƒ  s   ø€ ˜d×8Ñ8¸¿¹À»ÒDr  z__[POSTCOMPILE_%s]r   )Úaddr   r.  r«  r§  rP  r�   rå  r±  Úrender_literal_castr´  r¢  ro  rp  r?  r>  r»  )r  r   r  r  Úescaped_fromr  Úaccumulate_bind_namesÚvisited_bindparamrÒ  Únew_namerO  Ú	type_impls   `           r  rÂ  zSQLCompiler.bindparam_stringi  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)Úcopyr…  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                óN
  ‡ — ‰ 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                  |= n[t!        |«      t!        |«      k(  s)|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 |¤Ž |�ss||	v�rn|j*                  rd‰ _        ‰ j.                  j1                  ||
«      }|j*                  s|j2                  j4                  r^|j2                  }|j7                  d«      D �����cg c]  \  }}}}}|s|xs |‘Œ }}}}}}|dd	j9                  ˆ fd
„|D «       «      z  z  }|j;                  dd«      du sJ ‚‰ j                  s |j2                  j<                  ‰ fd|i|¤ŽS  ‰ j>                  ||j@                  fi |¤Ž}  |j2                  j<                  ‰ fddi|¤Ž}!|d| ›d|!›d�z  }|jB                  r$|d ‰ j>                  ||jB                  fi |¤Žz   z  }||	|<   |rÅ|r|
|jD                  |jG                  «       <   |s|r‰ j.                  j1                  ||
«      S |rh‰ j.                  j1                  ||«      }‰ j.                  jI                  |
«      r‰ j.                  jK                  |
«      }
|‰ jM                  |
«      z  }|S ‰ j.                  j1                  ||
«      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)rE  N)r©  Úformat_label_namerp  )r9  Úidentr  s     €r  r;  z(SQLCompiler.visit_cte.<locals>.<genexpr>X  s:   øè ø€ ð "ñ *4 ð !ŸM™M×;Ñ;Ø %°·±ð <÷ ñ *4ùs   ƒ14Úsubqueryrb  rØ   z
(r'  r,  )'r—  rU  r   r¶  r   rC   r�  Ú_get_reference_cteÚnestingrW  rV  r2   rÔ  r©  r�  Ú	_restatesÚhashÚ_is_clone_ofÚcompareÚ
_cte_aliasÚ	visit_cteÚ	recursiverX  r©  Úformat_aliasrÐ  Úname_cte_columnsÚ_generate_columns_plus_namesr†   rª  rÚ  Ú_generate_prefixesÚ	_prefixesÚ	_suffixesr‚  r)   Ú_requires_quotesr˜  Úget_render_as_alias_suffix)"r  rW  rb  ÚashintÚ	fromhintsrZ  r¿  rR  rÜ  Ú	self_ctesÚcte_nameÚ
is_new_cteÚembedded_in_current_named_cteÚ_reference_cter`  Ú	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_namer‡  ÚrepeatedÚ
recur_colsÚprefixesr—   s"   `                                 r  rf  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ô
 ˜#“Y¤$ |Ó"4Ò4ð  ×,Ñ,Ð8Ø+×8Ñ8ÐDð  ŸK™K¨Ô5ð "'‘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Ó@�Ø—=’= C§K¡K×$@Ò$@Ø!$§¡�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   ÍT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_column”  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 ‰‰
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À  )rb  rp  Úiscrudrq  ÚlateralÚenclosing_aliasr&  r'  r‘  r”  T)rb  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  )r9  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�  )rˆ  rÐ  rÚ  r¶  r   r   rC   r�  r©  rh  r‚  r)   ro  Ú_supports_derived_columnsÚ_render_derivedr†   r‡  Úformat_from_hint_text)r  r”  rb  rp  r�  rq  r^  r�  r‘  r¿  rÜ  r—   Ú
alias_namerO  s   ``        `   r  rŠ  zSQLCompiler.visit_alias—  s/  ú€ ñ Ø"¨&Ñ0ð ×(Ò(Ð(Ð(Ø.3�Ð*Ñ+ñ
 Ø)°Ñ7Ø'¨6Ñ1à0;�Ð,Ñ-àÐ&¨?×+BÑ+BÀeÑ+KØ4�E—M‘M×4Ñ4Øð	àØØØ#ØØ %ñ	ð ñ	ˆEñ ™V¡wøÚ"'Ð)�ØˆLà(-ˆFÐ$Ñ%á‘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 )NTr^  ©rŠ  )r  r^  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  r‰  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 )Nrb  Tz TABLESAMPLE z REPEATABLE (%s))rŠ  Ú_get_methodrÚ  Úseed)r  Útablesamplerb  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  )r9  ÚchunkÚelemrÐ  rÒ  r  s      €€€r  r;  z-SQLCompiler._render_values.<locals>.<genexpr>  se   øè ø€ ð 	
ñ '�Û�ð ˆD�L‰LÜ—‘Ø26ðØ!×/Ñ/ñç‘*“,ñð õ	ð ðñ 'ùó   ƒAArž  )Ú
setdefaultr  r†   Ú_data)r  rÐ  rÒ  Útupless   ``` r  Ú_render_valueszSQLCompiler._render_values  sG   ú€ Ø
�‰�o w×'<Ñ'<Ô=Ø—‘õ 	
ð !Ÿšó	
ó 	
ˆð ˜˜Ð!Ð!r  c           
     óÊ  ‡ ‡— |j                   r‰ j                  |‰«        ‰ 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                  «       <   |�1|j                  |u r#|j                  rt        j                  d«      ‚|S |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)z5Can't use a LATERAL VALUES expression inside of a CTEFrœ  r&  r'  ú (rÖ   c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÙ  rî  s     €€r  r;  z+SQLCompiler.visit_values.<locals>.<genexpr>E  s+   øè ø€ ð "á%4 ð 1˜A×0Ñ0°Ñ<¸Õ<Ù%4ùr–  )rÏ  rÐ  r¬  Ú_unnamedr¶  r   r   rC   r�  rˆ  r‚  r)   rÐ  r2   rÔ  ro  r©  r˜  r†   Úcolumns)	r  rÐ  rb  r¿  rZ  rÒ  r‚  r   r�  s	   `    `   r  Úvisit_valueszSQLCompiler.visit_values  s\  ù€ ð ×$Ò$Ø×+Ñ+¨G°RÔ8àˆD×Ñ Ñ.¨2Ñ.ˆà×ÒØ‰DÜ˜Ÿ™¤h×&?Ñ&?Ô@Ø×-Ñ-¨h¸¿¹ÓE‰Dà—<‘<ˆDà×ÒØ ‰GàˆGáÙà Ð,‘DÐ2Lð ×!Ñ! '×"3Ñ"3Ó"5Ñ6ð Ð'¨L×,@Ñ,@ÀGÑ,KØ×&Ò&Ü×*Ñ*ØOóð ð$ ˆñ Ø&+��?Ñ#âÚØ×3Ñ3°D·M±M×4GÑ4GÈÓ4MÕNàŸ	™	ô "à%,§_¢_ó"õ ð
�ð ˆò !(ªÐ+�Øˆr  c                ó0   — d | j                   |fi |¤Ž› d�S r_  )r¬  r§  s      r  Úvisit_scalar_valueszSQLCompiler.visit_scalar_valuesO  s%   € ØÐ&�4×&Ñ& wÑ5°"Ñ5Ð6°aÐ8Ð8r  c                ó   — d|z   S )NrØ   r  )r  Úalias_name_texts     r  ro  z&SQLCompiler.get_render_as_alias_suffixR  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.)rC  rB  rÆ  r2   rÔ  r¤  r   rý   r  s        r  rÒ  zSQLCompiler._add_to_result_mapU  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  rU  r¡   rØ  Úcolumn_clause_argsrÒ  s         r  Ú_label_returning_columnz#SQLCompiler._label_returning_columnn  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¬«      }�nƒ|}�n|r%|€J d«       ‚t        |||‰j                  f¬«      }�nX|‰urd}nút        ‰t        j                  «      r"|xr ‰j                   xr ‰j                  du}n¾t        ‰t        j                   «      rd}n¡t        ‰t        j"                  «      r\‰j$                  t&        j(                  t&        j*                  fv xr | j                  j,                   xs ‰j/                  «       xs |}n+t        ‰t        j0                  «      s‰j2                  €d}nd}|rS|s|
rJ ‚‰j4                  }t        |t        j6                  «      st        j6                  |«      n|}t        |||f¬«      }n|}|j9                  |	||¬	«        |j:                  | fi |¤ŽS )
z.produce labeled columns present in a select().c                ó   •—  ‰| || f|«       y r  r  )rÿ   r   r  r  rÒ  s       €r  r…  z;SQLCompiler._label_select_column.<locals>.add_to_result_map©  s   ø€ Ù& w°°w°jÀ%ÕHr  c                ó$   •—  ‰| |‰f|z   |«       y r  r  )rÿ   r   r  r  rÒ  r¡   s       €€r  r…  z;SQLCompiler._label_select_column.<locals>.add_to_result_map±  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)rk  r…  rœ  )r  r  r±  Ú_has_column_expressionÚcolumn_expressionrÒ  r¶  r   rJ   r   r   rÐ  r–  rG   r•  rœ   Ú
TextClauseÚUnaryExpressionr@  r!   Úis_falseÚis_truerã  Ú_wraps_unnamed_columnÚNamedColumnÚ_non_anon_labelÚ_anon_name_labelrC   rw  rÚ  )r  r¨   r¡   rØ  rb  r»  r   r�  r‚  rk  Úcolumn_is_repeatedÚneed_column_expressionsrœ  r&  Úcol_exprr…  Úresult_exprÚrender_with_labelrÒ  s     `               @r  rº  z SQLCompiler._label_select_columnƒ  s±  ù€ ð  �{‰{×'Ñ'¨¯©Ó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×$<Ñ$<Ô=ðP Ÿ™Ü%×.Ñ.´	×0AÑ0AÐBðCò Eà $§¡× DÑ DÐDò
ð ×3Ñ3Ó5ò
ð ñ "ô" ˜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  rY  rœ   Úhintr�  Úhinttexts         r  r—  z!SQLCompiler.format_from_hint_textT  s*   € Ø×*Ñ*¨5°$Ó7ˆÙØ�s˜X‘~Ñ%ˆGØˆr  c                 ó   — y r  r  )r  Úbyfromss     r  Úget_select_hint_textz SQLCompiler.get_select_hint_textZ  ó   € Ør  c                 ó   — y r  r  ©r  rœ   r»  s      r  rÐ  zSQLCompiler.get_from_hint_text]  s   € ð r  c                 ó   — y r  r  rØ  s      r  Úget_crud_hint_textzSQLCompiler.get_crud_hint_textb  rÖ  r  c                ó$   — dj                  |«      S r  rï  )r  Ú
hint_textss     r  Úget_statement_hint_textz#SQLCompiler.get_statement_hint_texte  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Î  rX  Ú_get_display_fromsÚ
difference)r  Úselect_stmtrb  r�  rÒ  rÖ  r›  r%  r!  r   r‚  s              r  Ú_display_froms_for_selectz%SQLCompiler._display_froms_for_selecto  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 objectsFrk  r�  rb  rŒ  r(  r'  r…  )r€  rk  zSELECT r,  )r   r�  r‚  rÊ  rË  c              3  óB   •K  — | ]  }‰j                  ||«      –— Œ y ­wr  r/  )r9  ÚorU  s     €r  r;  z+SQLCompiler.visit_select.<locals>.<genexpr>9  s   øè ø€ Ð$FÁ#¸Q Y§]¡]°1°a×%8Á#ùs   ƒr¸  rÌ  )#rX  Ú_ambiguous_table_name_mapr/  r�  r%  ræ  rÎ  rª  Ú_setup_select_stackrS  rw  Ú_hintsÚ_setup_select_hintsrÏ  rÐ  rl  rk  Úget_select_precolumnsÚcolumns_plus_namesrº  rÓ  rÕ  r¤  rý   r=  Ú_compose_select_bodyÚ_statement_hintsr±  r   rÝ  rU  r©  rÓ  rm  r…  )&r  rä  rb  Úinsert_intorq  rÕ  Úselect_wraps_forr�  r¿  rÜ  r%  rÖ  Úis_embedded_selectÚnew_select_stmtÚcompile_state_wraps_forr›  rØ  rË  r‚  r»  r»  Ú	hint_textÚbyfromr   r�  r‚  r¡   rƒ  r‡  Úinner_columnsr:  rÛ  r  Údialect_nameÚhtÚper_dialectrÍ  rU  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)rp  )rì  rx  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©  r†  rï  r2   rÔ  râ  rã  r~   r*   r�   r�  r   )r  r¨   r%  r›  rb  r�  rÕ  r!  r   r)  Únumcolsr‚  Únew_correlate_fromsÚall_correlate_fromsr×  s                  r  rë  zSQLCompiler._setup_select_stackl  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)rb  rq  r¿  ©rb  r¿  r¿  z 
WHERE z	 
HAVING )r†   rh  rv  rz  r~   rw  r¿  Úrstriprì  rÚ  rR  Ú_where_criteriarû  r˜  Ú_group_by_clausesr\  Ú_having_criteriaÚ_order_by_clausesr]  r^  r_  Ú_for_update_argÚfor_update_clause)r  r»  r¨   r%  rù  r‚  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Ú  )r9  Ú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  rU  r…  rÒ  r  s   `  ` r  rk  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
 )rU  r&   r–  r‘  ÚkeysrW  r_  r`  rv   rg  Úget_cte_preambler†   r¸  rV  )r  rÍ  rW  rU  rW  rw  rs  rR  r`  Úis_rendered_levelrX  Ú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  rg  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_precolumnsD  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  r‚  r!   Úcomma_op)r  r¨   rÒ  Úgroup_bys       r  r\  zSQLCompiler.group_by_clauseT  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	  r‚  r!   r#  )r  r¨   rÒ  r*  s       r  r]  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_clausek  s   € Ør  c               óî   — |j                  dt        j                  |«      ¬«      D �����	cg c]"  \  }}}}}	 | j                  |||f||	||dœ|¤Ž‘Œ$ }
}}}}}	ddj	                  |
«      z   S c c}	}}}}w )NT)Úcols)r‚  rÊ  r   r�  ú
RETURNING rÖ   )rj  r   Ú_select_iterablesr¼  r†   )r  rU  Úreturning_colsrØ  rÒ  r   r�  r‚  r¡   rƒ  r±  s              r  Úreturning_clausezSQLCompiler.returning_clausen  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  rg  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 r1  z	WITH TIESÚONLY)re  Ú_fetch_clause_optionsr/  Ú_simple_int_clauseÚrender_literal_executer¸  )
r  r¨   rf  Úrequire_offsetÚ"use_literal_execute_for_simple_intrÒ  Úfetch_clause_optionsr»  Úoffset_clauseÚ
offset_strs
             r  rf  zSQLCompiler.fetch_clause˜  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                  «      }|	�|	j                  |ur_|s]|r[|j                  |v rM| j                  d||j                     «      }|| j                  | j                  j                  d |«      «      z   }|r||v r| j                  ||||   |«      }|S y)Nr)  r”  r   )Úfullnamer‚  r©  rš  r›  r˜  r   rÐ  r�  ro  rh  r—  )r  rœ   rb  r�  rp  rq  Ú
use_schemar¿  r�  r‘  rÜ  r   rO  Ú	anon_names                 r  Úvisit_tablezSQLCompiler.visit_tableÁ  s9  € ñ Ø',§~¡~ˆK×Ñ˜eÑ$á’VØ#Ÿ}™}×>Ñ>¸uÓEÐáÑ.à—M‘M×.Ñ.Ð/?Ó@Øñà—m‘m×)Ñ)¨%¯*©*Ó5ñ6ñ ð —m‘m×)Ñ)¨%¯*©*Ó5�ð (Ð/Ø*×2Ñ2¸%Ñ?á,Ù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¿  )rƒ  rw  r¶  rÂ  r)   r‡   r*   r›   r„   ÚisouterrÚ  Úonclause)r  r†   rb  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ì  rx  r±  r   rœ   r—  )r  rU  Ú
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_explicitr2   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:  rP  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  )r9  r$  r\  Ú	bind_keysr]  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/  )r9  r$  r_  r:  rP  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  )r9  r~  r:  Úlen_rç  Úgeneric_setinputsizess        €r  r;  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>e  s>   øè ø€ ð /á%>˜EÛ.C™N˜C  sð  ˜5  % Ð)¨4°Ô5à.Cð 6Ù%>ùr�  r  c              3  ó(   •K  — | ]	  }|‰‰ –— Œ y ­wr  r  )r9  r}  Úexpand_pos_lower_indexÚexpand_pos_upper_indexs     €€r  r;  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>z  s"   øè ø€ ð &á!&˜Að Ð0Ð1GÔHÙ!&ùs   ƒc              3  óZ   •K  — | ]"  \  }}‰j                  d t        |«      «      –— Œ$ y­w)Ú_IMV_VALUES_COUNTERN)r¹  rþ   )r9  r÷  r$  Úexecutemany_values_w_commas      €r  r;  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>�  s5   øè ø€ ð  ñ )9¡  1ð 7×>Ñ>Ø 5´s¸1³v÷ñ )9ùra  éþÿÿÿc              3  ó>   •K  — | ]  }‰j                   › |› �–— Œ y ­wr  )r@  )r9  r÷  r  s     €r  r;  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>ž  s)   øè ø€ ð &á!2˜Að  ×>Ñ>Ð?À¸sÔCÙ!2ùr¯  ÚEXECMANY_INDEX__ri  Ú__)3rL  rP  r@  rM  r©  rE  r±  Úsupports_default_metavalueÚsupports_multivalues_insertr¤  rN  rL  rö  r   rÕ  rT  Ú	functoolsÚpartialr©  r¹  rF  r¹  Úinsertmanyvalues_max_parametersr:  rH  Úminr‘  rb  rP  r~   rR  r†   r"  rã  rw  r4  r>  rE  r]  r^  r@  r§  ÚrangerJ  r=  r¶  r·  Úfrom_iterablerS  rþ   r   )Er  r/  r0  Úcompiled_parametersrd  Ú
batch_sizerK  r¦  ÚimvÚ_sentinel_from_paramsÚ	lenparamsÚuse_row_at_a_timeÚ
downgradedr\  Ú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_batchesrX  r]  rH  r  r:  r	  ÚstÚall_keysÚimv_values_counterÚformatted_values_clauseÚkeys_to_replaceÚbase_parametersÚall_names_we_will_expandr§  r4  rN  r   Úall_expand_positionsÚescapedrY  Úcompiled_batchr[  Únew_keyrc  rç  Únum_ins_paramsÚextra_params_leftÚextra_params_rightÚbatch_iteratorÚexpanded_values_stringrŒ  rx   r¤  rU  rV  Úreplaced_values_clausesr÷  Úfmvr\  r]  rP  rj  rf  rg  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 )$NrZ  FTrË  r   rN  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ò  rV  r“  z DEFAULT VALUESrG  )rK  rL  rN  rO  rQ  z VALUES c              3  óR   K  — | ]  }d dj                  d„ |D «       «      z  –— Œ! y­w)rþ  rÖ   c              3  ó*   K  — | ]  \  }}}}|–— Œ y ­wr  r  )r9  r$  rÉ  s      r  r;  z5SQLCompiler.visit_insert.<locals>.<genexpr>.<genexpr>Ñ  s   è ø€ Ð L¹^©>¨1¨a°¸¤¹^ùs   ‚Nrï  )r9  Úcrud_param_sets     r  r;  z+SQLCompiler.visit_insert.<locals>.<genexpr>Ï  s3   è ø€ ð ñ +N˜ð Ø—y‘yÑ L¹^Ó LÓLõNá*Mùs   ‚%'c              3  ó,   K  — | ]  \  }}d |› �–— Œ y­w©ÚpNr  )r9  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±  )r9  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'  )rE  rF  rH  rJ  rK  rL  rN  rO  rP  rQ  rR  )?rX  r/  r�  r1  r«  r%  r   r~   rb  r   Ú_get_crud_paramsr©  rE  rR  Úsingle_paramsr±  Úsupports_default_valuesro  Úsupports_empty_insertr2   rÔ  r   Ú_has_multi_parametersrp  r7  Ú
_returningÚ_sort_by_parameter_orderr©  rl  rk  Úformat_tablerœ   rì  rI  rÏ  rÐ  r†   Úuse_insertmanyvaluesÚuse_sentinel_columnsr,  rK  ra  rj  Ú_insert_sentinelr‘  r,  r;  r¨   r¸  rU  Úcte_follows_insertrÓ  rD  Údefault_metavalue_tokenr   Ú_post_values_clauserL  Úall_multi_paramsrl  Úis_default_metavalue_onlyrm  rö  r…  )$r  Úinsert_stmtrN  rZ  rÒ  r%  rÖ  Úcounted_bindparamÚcrud_params_structÚcrud_params_singler©  r¨  r»  rG  r$  r	  r®  Únamed_sentinel_paramsÚadd_sentinel_colsrQ  r+  r  Úparam_namesÚ_params_by_colÚ_add_sentinel_colÚ
param_namer,  Úselect_textrÍ  rÉ  r„  Úembed_sentinel_valueÚrender_bind_castsÚcolnamesÚcolnames_w_castÚpost_values_clauses$   `                                   r  Úvisit_insertzSQLCompiler.visit_insertÙ  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_clauseK  ó   € àr  c                 ó   — y)z3Provide a hook for MySQL to add LIMIT to the DELETENr  )r  Údelete_stmts     r  Údelete_limit_clausezSQLCompiler.delete_limit_clauseO  rÊ  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.

        Trb  r�  rÙ  )r  rÈ  Ú
from_tableÚextra_fromsrÒ  s        r  Úupdate_tables_clausez SQLCompiler.update_tables_clauseS  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 |¤Ž}t        rt        |t        «      sJ ‚|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|¤Ž}t1        j2                  | |||fi |¤Ž}|j4                  }|j6                  r| j9                  ||«      \  }}nd }|j:                  r| j=                  ||«       ||z  }|dz  }|dj?                  d	„ tA        d
|«      D «       «      z  }| jB                  s|jD                  r>| jF                  r2|d| jI                  || jB                  xs |jD                  |¬«      z   z  }|r, | jJ                  ||j$                  ||fd|i|¤Ž}|r|d|z   z  }|jL                  r) | jN                  |jL                  fd|i|¤Ž}|r|d|z   z  }| jQ                  |«      }|r|d|z   z  }| jB                  s|jD                  r>| jF                  s2|d| jI                  || jB                  xs |jD                  |¬«      z   z  }| jR                  r.|stU        | j
                  «      nd }| jW                  |¬«      |z   }|r|€J ‚|jY                  d¬«       | j
                  j[                  d«       |S c c}w )NrZ  FTrË  zUPDATE r¿  z SET rÖ   c              3  ó6   K  — | ]  \  }}}}|d z   |z   –— Œ y­w)Ú=Nr  )r9  r$  r	  rÉ  s       r  r;  z+SQLCompiler.visit_update.<locals>.<genexpr>Ä  s.   è ø€ ð 
ñ&Ñ!��4˜ ð �3‰J˜Õñ&ùs   ‚zList[Tuple[Any, str, str, Any]]r,  rž  ú WHERE rÌ  ÚUPDATE©r—  rŒ  ).rX  r   r¶  rA   r/  r�  r2  r«  r%  rh  rv  rz  r~   rw  r¿  Ú_extra_fromsr&  r*   rœ   r�   r   rl  rk  rÑ  r   r¦  r§  rì  rI  rÏ  rÐ  r†   r   r7  r«  r;  r,  rÕ  r  rû  rÉ  rU  r©  rÓ  r˜  r…  )r  rÈ  rZ  rÒ  r%  rÖ  r¿  r  rÐ  Úis_multitableÚ
main_fromsr  Úrender_extra_fromsr!  r»  rG  r¸  Úcrud_paramsrH  Úextra_from_textr  rg  rÍ  s                          r  Úvisit_updatezSQLCompiler.visit_updatek  sc  € ð ;˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆõ Ü˜m¬^Ô<Ð<Ð<Ø#×-Ñ-ˆàÐ#Ø!-ˆ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   Ä	OÄO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  rÌ  rÏ  rÐ  rÔ  rÒ  s         r  Údelete_extra_from_clausez$SQLCompiler.delete_extra_from_clauseÿ  s   € ô "ð%ó
ð 	
r  c                ó.   —  |j                   | fdddœ|¤ŽS )NT)rb  r�  rÙ  )r  rÌ  rÏ  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  }
| jE                  |«      }|r|
d|z   z  }
| j6                  s|j8                  r>| j:                  s2|
d| j=                  || j6                  xs |j8                  |¬	«      z   z  }
| jF                  r.|stI        | j                  «      nd }| jK                  |¬«      |
z   }
|r|€J ‚|jM                  d¬«       | j                  jO                  d«       |
S # t&        $ r@ | j%                  ||j                  |«      }|r| j)                  |j                  |¬«      }Y �ŒAw xY w)NrZ  FTrË  zDELETE úFROM )r¿  r,  rž  r¿  rÙ  rÌ  ÚDELETErÛ  rŒ  )(rX  r/  r�  r0  r«  r%  rh  rv  rz  r~   rw  r¿  rÜ  rœ   r�   r   rl  rk  rç  Ú	TypeErrorr¸  r   r¦  rì  rI  rÏ  rÐ  r7  r«  r;  r,  rå  r  rû  rÍ  rU  r©  rÓ  r˜  r…  )r  rÌ  rZ  rÒ  r%  rÖ  r¿  r  rÐ  r!  r»  rG  r$  rH  rá  r  rg  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™Ñ%�à×/Ñ/°Ó<ˆÙØ�C˜,Ñ&Ñ&ˆDð ×#Ò# {×'=Ò'=Ø×0Ò0Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDð �9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDáØÐ*Ð*Ð*Ø×Ñ xÐÔ0à�
‰
�‰�rÔàˆøôU ò 	Mð ×1Ñ1Ø˜[×.Ñ.°óˆJñ Ø—L‘L ×!2Ñ!2À�LÓL�úð	Mús   Ä+M ÍANÎN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±  rk   r/  rŸ  r­  r¬  rf  r3  rg  r&  rh  rt  r|  zOptional[SQLCompiler]rÜ  r   )r  rH  )r  r6  )r  zDict[Any, Any])r  zMutableMapping[CTE, str])r  zVMutableMapping[str, Union[_BindProcessorType[Any], Sequence[_BindProcessorType[Any]]]])r  r6   )NT)rá  rí  rã  r&  r  r.  )NNTNTF)rá  rí  râ  rî  rã  r&  rÙ  úOptional[int]rÚ  r&  rd  r&  r  rj   ©F)r0  rj   re  r&  r  r.  )r  zCallable[[Any], str]rê  )NFFNr  )NTr  N)r¡   úColumnClause[Any]r…  úOptional[_ResultMapAppender]rœ  r&  r†  r  r�  z Optional[_AmbiguousTableNameMap]rÜ  r   r  rþ   r  )NF)r	  rK   rÒ  r   r  rþ   )r	  rL   rÒ  r   r  rþ   )r	  rI   rÒ  r   r  rþ   )r2  úFunction[Any]r…  rú  rÜ  r   r  rþ   )r2  rû  rÜ  r   r  rþ   )FN©Nr  )NFNN)
r    úBinaryExpression[Any]r  rþ   rÃ  r&  rÒ  r   r  rþ   )r    rý  r@  r   rÒ  r   r  rþ   )FFFFF)rÉ  r   r  zsqltypes.TypeEngine[Any]r  rþ   )r@  rþ   r   rC   r  rþ   )r   rþ   r  rþ   )FFNNNN)r   rþ   r  r&  r  r&  rL  rH  r  zOptional[TypeEngine[Any]]rM  zOptional[Set[str]]rN  rJ  rÒ  r   r  rþ   )rW  rX   rb  r&  rp  r&  rq  zOptional[_FromHintsType]rZ  úOptional[CTE]r¿  zOptional[FromLinter]rR  zselectable._CTEOptsrÜ  r   r  rH  )FFFNFFNN)FNN)
rÿ   rþ   r   rþ   r  r  r  r  r  r  )NNNTFFT)rœ   rY   r»  rH  r  rH  )FFNNNFN)r¨   r*  r  zTuple[str, _FromHintsType])r¨   r*  rÒ  r   r  rþ   ©
rU  r@   r+  zSequence[_ColumnsClauseElement]rØ  r&  rÒ  r   r  rþ   )NFF)FFFNTNNN)rœ   rS   r  rM  )r/  rþ   r0  rf   rw  z%List[_MutableCoreSingleExecuteParams]rd  rW  rx  rI  rK  r&  r¦  r¥  r  z Iterator[_InsertManyValuesBatch]r|  )rÈ  r?   rZ  rþ  rÒ  r   r  rþ   )úr  r  r  r	  ÚEXTRACT_MAPr7  r&   rò  r-  r
  rï  ÚCOMPOUND_KEYWORDSrY  r0  r1  r2  r4  r5  r7  r8  r;  r<  r=  rA  rB  rC  rD  rE  rF  rG  rI  rK  rL  rM  Ú	frozensetrN  rO  rñ  rP  r%  Úpostfetch_lastrowidrQ  r4  rR  rS  rT  r]  r_  r  rº  Úpatternr¨  ró  r¿  r[  ru  r½  rB  r„  Úro_memoized_propertyrˆ  rŠ  r�  r’  Úmemoized_propertyr”  Úmemoized_instancemethodr—  Ú
contextlibÚcontextmanagerrœ  rz  ry  rÊ  rÌ  r×  rÏ  rä  rð  rá  r{  Úpreload_moduler'  r,  rG  rP  rR  r]  rc  rf  rw  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-  r0  r5  r:  r@  r<  rN  rK  rH  rc  r_  r  rr  rz  r}  r‚  r…  rŠ  r�  r™  r—  r°  r  rˆ  rÆ  rÈ  rÊ  rÌ  rÎ  rŒ  rp  rq  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�  rG  rÂ  rÐ  r$   Ú_CTEOptsrf  r‹  r�  rŠ  r›  r‰  r¢  r¬  r²  r´  ro  rÒ  r¼  rº  r—  rÕ  rÐ  rÚ  rÝ  Útypingr   rÎ  rå  ræ  rý  rí  rë  rð  rk  rÓ  r  rî  r\  r]  r  r,  rg  rf  r?  rE  rI  r,   Ú
CLIENTSIDEra  rk  ÚSENTINEL_DEFAULTÚNONErh  ri  rP  r�   rg  rN  rV  r›  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ó ð)ôVò>ô@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
òB
ò
ò
ò7ð ;?ñ,àð,ð 8ð,ð ð	,ð
 
ô,ò\8ò
ôCð 04ô?òB3ò-ð ACô$òLò6ò"BòBò
ò

ò4ò$
ð ;?ôH*òTM1ðd ØØØ ô6òp8òò
ò
ò

ð  %ñ	à%ðð ðð ð	ð
 ðð 
ôò2GòGð 
×ÑñIó ðIòJòAòEòBòFòAòEòBòFòAòEòBòFò

ò	
òAòEò
ò
ð
Ø+ð
Ø7:ð
ØBEð
à	ô
ð
Ø+ð
Ø7:ð
ØBEð
à	ô
ð
Ø+ð
Ø7:ð
ØBEð
à	ô
ð $ØØ"ØØ ôcòJ$ð $Ø!%ó	DðB%Øð%Ø!9ð%à	ô%òNðØðØ&6ðà	ôô*$ð #ØØ&*Ø48Ø48Ø15ñAàðAð ðAð ð	Að
 $ðAð 2ðAð  2ðAð /ðAð ðAð 
ôAòFCð ØØ.2Ø&*Ø,0Ø(;¨
×(;Ò(;¸EÓ(BðVàðVð ðVð ð	Vð
 ,ðVð $ðVð *ðVð &ðVð ðVð 
ôVòp3ò0ð ØØØØØØØôbòH0ò?ôò"ð EIô/òb9ò(ð
àð
ð ð
ð !ð	
ð
 ð
ð 
ô
ð4 EIô
ð8 ØØ Ø"Ø Ø %ØôOJòbòðØðØ'4ðà	ôò
ò$ð .Ó-à×ÓØ1˜t×1Ñ1Ø¡£Ð-°Á	ÃÐ/LÐMó 
Ðð
 ,1ôð: '+Ð Ó*ðð ØØØØØØôKðZ
!Ø!ð
!à	#ô
!ò2òh]ò~ð Ø %ô3òjô7ò 	ò
òð1àð1ð 8ð1ð
 "ð1ð ð1ð 
ô1ò@ð ØØ+0ô'ðX ØØØØØØ!%Øô3ôj
ò<
)ð" (: 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ò
ð" '+ñRàðRð $ðRð ð	Rð
 
ôRòh
ó 
õ
AóF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®   )r|  )Ú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_compilation¼  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¸  r‡   r›   ry  s       r  Úvisit_getitem_binaryz#StrSQLCompiler.visit_getitem_binaryÊ  s:   € àˆD�L‰L˜Ÿ™Ñ+¨Ó+ØˆD�L‰L˜Ÿ™Ñ,¨Ó,ð
ð 	
r  c                ó*   —  | j                   ||fi |¤ŽS r  ©r  ry  s       r  Úvisit_json_getitem_op_binaryz+StrSQLCompiler.visit_json_getitem_op_binaryÐ  ó   € Ø(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@r  c                ó*   —  | j                   ||fi |¤ŽS r  r  ry  s       r  Ú!visit_json_path_getitem_op_binaryz0StrSQLCompiler.visit_json_path_getitem_op_binaryÓ  r   r  c                ó@   — d| j                   j                  |«      › d�S )Nz<next sequence value: Ú>)r©  Úformat_sequencerQ  s      r  rK  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º  r†   )r  rU  r+  rØ  rÒ  r‡  r±  s          r  r,  zStrSQLCompiler.returning_clauseÛ  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 )NTrb  ré  rÖ   c              3  óH   •K  — | ]  } |j                   ‰fd ‰i‰¤Ž–— Œ y­w©rq  NrÙ  ©r9  r  rÔ  rÒ  r  s     €€€r  r;  z4StrSQLCompiler.update_from_clause.<locals>.<genexpr>í  s0   øè ø€ ð #
á �ð !ˆA× Ñ  ÑB°ÐB¸rÕBÙ ùr�  rï  rÓ  s   `   ``r  rÕ  z!StrSQLCompiler.update_from_clauseé  s3   ú€ ð ˆˆ8‰Ø˜Ÿ™õ #
á ó#
ó 
ñ 
ð 	
r  c                óP   ‡ ‡‡— d‰d<   ddj                  ˆˆˆ fd„|D «       «      z   S )NTrb  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Ù ùr�  rï  rä  s   `   ``r  rå  z'StrSQLCompiler.delete_extra_from_clauseò  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Œ  ry  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> r0  ry  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'  )r‡   rÚ  r›   ry  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"  rK  r,  rÕ  rå  r—  rÐ  r  r  r  r4  rô  rõ  s   @r  r  r  ¥  s¦   ø„ ñò& ð €T×ÑÐ0Ó1óCó 2ðCò
òAòAò
ð
1àð1ð 8ð1ð
 "ð1ð ð1ð 
ó1ò
ò
ò%òòIòMò
ö
r  r  c                  ó  — e Zd ZdZer	 	 	 d2	 	 	 	 	 	 	 	 	 d3d„Zej                  d4d„«       Zej                  d„ «       Z
	 	 	 d5	 	 	 	 	 	 	 d6d„Zd„ Zd„ Zd	„ Zd
„ Zd7d„Z	 d8d„Zd„ Zd„ Zd9d„Z	 d:d„Zd„ Z	 d7	 	 	 	 	 d;d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd8d„Z d„ Z!d„ Z"d„ Z#d„ Z$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?d*„Z/	 	 	 	 d@d+„Z0	 	 	 	 d@d,„Z1	 	 	 	 d@d-„Z2dAd.„Z3d/„ Z4d0„ Z5d1„ Z6y)BÚDDLCompilerTc                 ó   — y r  r  rº  s         r  r½  zDDLCompiler.__init__  s   € ð r  c                óf   — | j                   j                  | j                   d | j                  ¬«      S )NrX  )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#   rS   rS  r©  Úformat_table_seqr©  r©  r­  r×  r¼  r/  )r  ÚddlrÜ  r=  r©  Úpathrœ   Úschs           r  Ú	visit_ddlzDDLCompiler.visit_ddl4  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_schemaG  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©  rG  rÐ  Úcascade©r  ÚdroprÒ  r»  s       r  Úvisit_drop_schemazDDLCompiler.visit_drop_schemaM  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 rE  r&  Ú
F©Úfirst_pkr  Ú	Tz(in table 'z', column 'z'): r   )Ú _include_foreign_key_constraintsz
)%s

)rÐ  r©  rl  r†   rF  r­  Úcreate_table_suffixr±  r¸  r?  r2   rÔ  Údescriptionr   ÚargsÚcreate_table_constraintsÚinclude_foreign_key_constraintsÚpost_create_table)r  r¢   rÒ  rœ   r©  r»  rW  rð  rT  Úcreate_columnr¡   Ú	processedÚceÚconsts                 r  Úvisit_create_tablezDDLCompiler.visit_create_tableV  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 )NrS  r,  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr  )r¸  ©r9  r¿   r  s     €r  r;  z2DDLCompiler.visit_create_column.<locals>.<genexpr>‘  s   øè ø€ ð 
Ù7I¨ˆD�L‰L˜×$Ñ7Iùs   ƒ)rÐ  ÚsystemÚget_column_specificationr†   Úconstraints)r  r¢   rT  rÒ  r¡   r»  r`  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  )r9  r¤  s     r  r;  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>°  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_alterrB  r¸  rd  s     €r  r;  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>²  sI   øè ø€ ð á"-�JØ×:Ñ:¸4Ô@àŸ™×3Ò3Ü" :¨{¸EÔBð —‘˜Z×(Ù"-ùr¨  )r?  r   Úforeign_key_constraintsrã  r~   r  Ú_sorted_constraintsr†   )r  rœ   rV  rÒ  rg  Úall_fkcsÚ	omit_fkcsr‡  s   `       r  rZ  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 rJ  )rL  r©  r­  rÐ  rN  s       r  Úvisit_drop_tablezDDLCompiler.visit_drop_table¾  s6   € ØˆØ�>Š>Ø�LÑ ˆDØ�d—m‘m×0Ñ0°·±Ó>Ñ>Ð>r  c                óR   — d| j                   j                  |j                  «      z   S )Nz
DROP VIEW ©r©  r­  rÐ  ©r  rO  rÒ  s      r  Úvisit_drop_viewzDDLCompiler.visit_drop_viewÄ  s    € Ø §¡× :Ñ :¸4¿<¹<Ó HÑHÐHr  c                ó`   — |j                   €"t        j                  d|j                  z  «      ‚y )Nz,Index '%s' is not associated with any table.)rœ   r2   rÔ  r   )r  r~  s     r  Ú_verify_index_tablezDDLCompiler._verify_index_tableÇ  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 rE  ©Úinclude_schemarA  ©r=  r®  rÖ   c              3  óZ   •K  — | ]"  }‰j                   j                  |d d¬«      –— Œ$ y­w)FT©rœ  r  N)r×  r¸  )r9  r	  r  s     €r  r;  z1DDLCompiler.visit_create_index.<locals>.<genexpr>ä  s:   øè ø€ ð ñ .�Dð ×!Ñ!×)Ñ)Ø¨¸Tð *÷ ñ .ùra  r'  )rÐ  rz  r©  r©   r   r2   rÔ  rF  Ú_prepared_index_namer­  rœ   r†   Úexpressions)r  r¢   r~  Úinclude_table_schemarÒ  r~  r©  r»  s   `       r  Úvisit_create_indexzDDLCompiler.visit_create_indexÍ  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 rJ  Tr}  )rÐ  r   r2   rÔ  rL  r‚  )r  rO  rÒ  r~  r»  s        r  Úvisit_drop_indexzDDLCompiler.visit_drop_indexí  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  r~  r~  r   Úschema_nameÚ
index_names         r  r‚  z DDLCompiler._prepared_index_nameú  sy   € ð �;‰;Ð"Ø#Ÿ}™}×>Ñ>¸u¿{¹{ÓKÑà#ÐÙÑ.ØŸ-™-×4Ñ4Ð5EÓF‰KàˆKàŸ-™-×4Ñ4°UÓ;ˆ
áØ$ 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%   ÚStringr�  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 NULLrv  rw  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ô  r’  r%   r“  r�  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Ð  rw  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Í  r�  s      r  Úvisit_set_constraint_commentz(DDLCompiler.visit_set_constraint_comment.  s   € Ü×-Ñ-¨d´D¸³LÓAÐAr  c                ó@   — t        j                  | t        |«      «      ‚r  rÍ  rw  s      r  Úvisit_drop_constraint_commentz)DDLCompiler.visit_drop_constraint_comment1  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Úcycler†   )r  Úidentity_optionsr»  s      r  Úget_identity_optionsz DDLCompiler.get_identity_options4  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 rE  r,  )rF  r©  r%  rÐ  r«  )r  r¢   r  rÒ  r»  Úoptionss         r  Úvisit_create_sequencez!DDLCompiler.visit_create_sequenceH  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 rJ  )rL  r©  r%  rÐ  rN  s       r  Úvisit_drop_sequencezDDLCompiler.visit_drop_sequenceU  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 namerŽ  z DROP CONSTRAINT rJ  r   rK  )
rÐ  r   r©  Úformat_constraintr2   rÔ  r­  rœ   rL  rM  )r  rO  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  rf  z$DDLCompiler.get_column_specificationn  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  rW  zDDLCompiler.create_table_suffix‰  ó   € Ør  c                 ó   — yr½  r  r¾  s     r  r\  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)FTr�  ©r   r©  r²  r×  r¸  rY  Ú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_constraint¯  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   ©r9  r‡  r  s     €r  r;  z;DDLCompiler.visit_primary_key_constraint.<locals>.<genexpr>Æ  s3   øè ø€ ð #
ñ(ð ð �M‰M×Ñ §¡×'ñ(ùó   ƒ/2)	r©  r   r©  r²  r†   Ú_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   ©r9  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>à  rá  rÙ  r'  )r©  r   r²  r‘  r   r¡   rœ   r†   Ú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_constraintÑ  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_tableé  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Ï  r|  r&  rÖ   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  r×  rØ  s     €r  r;  z6DDLCompiler.visit_unique_constraint.<locals>.<genexpr>ú  s%   øè ø€ ÐF¹:°a�d—m‘m×)Ñ)¨!¯&©&×1¹:ùrÙ  r'  )r©  r   r©  r²  Ú!define_unique_constraint_distinctr†   rÑ  rÒ  s   `    r  Úvisit_unique_constraintz#DDLCompiler.visit_unique_constraintî  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ÿ  s   € ð r  c                óŠ   — d}|j                   �|| j                  |«      z  }|j                  �|| j                  |«      z  }|S r½  )ÚondeleteÚ"define_constraint_ondelete_cascadeÚonupdateÚ"define_constraint_onupdate_cascade©r  r¿   r»  s      r  rå  z&DDLCompiler.define_constraint_cascades  sP   € ð ˆØ×ÑÐ*Ø�D×;Ñ;¸JÓGÑGˆDà×ÑÐ*Ø�D×;Ñ;¸JÓGÑGˆDØˆr  c                ó\   — d| j                   j                  |j                  t        «      z  S )Nz ON DELETE %s)r©  Úvalidate_sql_phraserï  ÚFK_ON_DELETE©r  r¿   s     r  rð  z.DDLCompiler.define_constraint_ondelete_cascade  ó-   € ð  §¡×!BÑ!BØ×Ñ¤ó"
ñ 
ð 	
r  c                ó\   — d| j                   j                  |j                  t        «      z  S )Nz ON UPDATE %s)r©  rõ  rñ  ÚFK_ON_UPDATEr÷  s     r  rò  z.DDLCompiler.define_constraint_onupdate_cascade  rø  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)FTr�  z STOREDz VIRTUAL)r×  r¸  rY  Ú	persisted)r  Ú	generatedrÒ  r»  s       r  Úvisit_computed_columnz!DDLCompiler.visit_computed_column0  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±  rk   r/  r=   r¦  r¥  r»  r&  r¼  rç  rè  rë  rì  rø  r  )r~  rQ   r  r  )FT)r~  rQ   r~  r&  r  rþ   )r¡   zColumn[Any]r  rH  )r®   zUnion[Visitable, str]r  rþ   )r¿   rR   rÒ  r   r  rþ   )r¿   rT   rÒ  r   r  rþ   )r¿   rP   r  rþ   )r¿   rO   r  rþ   )7r  r  r  rð  r   r½  r&   r  r×  r  r:  rä  rC  rH  rP  ra  rh  rZ  rt  rx  rz  r…  r‡  r‚  r�  r”  r–  rš  rœ  rž  r   r«  r®  r°  r´  rf  rW  r\  r¶  rÄ  rÌ  rÊ  rÉ  rÜ  rç  rã  rì  rë  rå  rð  rò  rÑ  rä  r  r  r  r  r  r6  r6    s;  „ Ø€Fáð FIØ,/Ø03ð	àð	ð ,ð	ð #Cð		ð
 &*ð	ð .ó	ð 
×Ñò
ó ð
ð
 
×Ññ3ó ð3ð
 6:ØGKØ!ð	à2ðð Eðð ð	ð
 
3óòLò&Bòò2óhð  7;ó#
òJ?òIóð BFóò@Lð 49ðØðØ,0ðà	óò$
ò
ò
ò

ò
ò
Bò@òó(òBò
ò&ò6òóóJò;ò
ò
ðØ.ðØ69ðà	óò,ò0,ð
Ø*ðØ25ðà	óð"Ø*ðØ25ðà	óð
	Ø.ð	à	ó	ð
Ø.ð
à	ó
ð
Ø.ð
à	ó
óòòór  r6  c                  óÚ  — e Zd Zd1d„Zd2d„Z	 	 	 	 	 	 d3d„Zd4d„Zd5d„Zd6d„Zd7d„Z	d8d„Z
d9d	„Zd:d
„Zd;d„Zd<d„Zd=d„Zd>d„Zd?d„Z	 	 	 	 	 	 	 	 d@d„ZdAd„ZdBd„ZdCd„ZdDd„Zd?d„ZdEd„ZdFd„ZdGd„ZdHd„ZdId„ZdEd„Z	 	 	 	 	 	 dFd„ZdId„Zd=d„Z d;d„Z!d<d „Z"d9d!„Z#	 	 	 	 	 	 d8d"„Z$d7d#„Z%d4d$„Z&d1d%„Z'd2d&„Z(d5d'„Z)dCd(„Z*dJd)„Z+d?d*„Z,	 	 	 	 	 	 dKd+„Z-dLd,„Z.d-„ Z/	 	 	 	 	 	 dMd.„Z0	 	 	 	 	 	 dNd/„Z1y0)OÚGenericTypeCompilerc                 ó   — y)NÚFLOATr  rû  s      r  Úvisit_FLOATzGenericTypeCompiler.visit_FLOATE  ó   € Ør  c                 ó   — y)NÚDOUBLEr  rû  s      r  Úvisit_DOUBLEz GenericTypeCompiler.visit_DOUBLEH  ó   € Ør  c                 ó   — y)NzDOUBLE PRECISIONr  rû  s      r  Úvisit_DOUBLE_PRECISIONz*GenericTypeCompiler.visit_DOUBLE_PRECISIONK  s   € ð "r  c                 ó   — y)NÚREALr  rû  s      r  Ú
visit_REALzGenericTypeCompiler.visit_REALP  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_NUMERICS  ó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_INTEGERi  ó   € Ør  c                 ó   — y)NÚSMALLINTr  rû  s      r  Úvisit_SMALLINTz"GenericTypeCompiler.visit_SMALLINTl  ó   € Ør  c                 ó   — y)NÚBIGINTr  rû  s      r  Úvisit_BIGINTz GenericTypeCompiler.visit_BIGINTo  r  r  c                 ó   — y)NÚ	TIMESTAMPr  rû  s      r  Úvisit_TIMESTAMPz#GenericTypeCompiler.visit_TIMESTAMPr  s   € Ør  c                 ó   — y)NÚDATETIMEr  rû  s      r  Úvisit_DATETIMEz"GenericTypeCompiler.visit_DATETIMEu  r&  r  c                 ó   — y)NÚDATEr  rû  s      r  Ú
visit_DATEzGenericTypeCompiler.visit_DATEx  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  c                ó6   — |}|r	|d|› d�z  }|r	|d|› d�z  }|S )Nr&  r'  z
 COLLATE "r”  r  )r  r   Úlengthr¦  r»  s        r  Ú_render_string_typez'GenericTypeCompiler._render_string_type„  s9   € ð ˆÙØ�a˜�x˜q�MÑ!ˆDÙØ�j  ¨1Ð-Ñ-ˆDØˆr  c                óP   — | j                  d|j                  |j                  «      S )NÚCHAR©r>  r=  r¦  rû  s      r  Ú
visit_CHARzGenericTypeCompiler.visit_CHARŽ  ó   € Ø×'Ñ'¨°·±¸e¿o¹oÓNÐNr  c                óP   — | j                  d|j                  |j                  «      S )NÚNCHARrA  rû  s      r  Úvisit_NCHARzGenericTypeCompiler.visit_NCHAR‘  s   € Ø×'Ñ'¨°·±¸u¿¹ÓOÐOr  c                óP   — | j                  d|j                  |j                  «      S )NÚVARCHARrA  rû  s      r  Úvisit_VARCHARz!GenericTypeCompiler.visit_VARCHAR”  s$   € Ø×'Ñ'Ø�u—|‘| U§_¡_ó
ð 	
r  c                óP   — | j                  d|j                  |j                  «      S )NÚNVARCHARrA  rû  s      r  Úvisit_NVARCHARz"GenericTypeCompiler.visit_NVARCHAR™  s$   € Ø×'Ñ'Ø˜Ÿ™ e§o¡oó
ð 	
r  c                óP   — | j                  d|j                  |j                  «      S )NÚTEXTrA  rû  s      r  Ú
visit_TEXTzGenericTypeCompiler.visit_TEXTž  rC  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ÚBINARYú(%d)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Ú	VARBINARYrX  r   rY  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d ¬«      S  | j                  |fi |¤ŽS )Nr@  é    )r=  r¦  )Únative_uuidr±  Úsupports_native_uuidr>  rR  rû  s      r  Ú
visit_uuidzGenericTypeCompiler.visit_uuid°  sE   € Ø× Ò ¨¯©×(IÒ(IØ×+Ñ+¨F¸2ÈÐ+ÓNÐNà"�4—?‘? 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )rU  rû  s      r  Úvisit_large_binaryz&GenericTypeCompiler.visit_large_binary¶  ó   € ð ˆt�‰˜uÑ+¨Ñ+Ð+r  c                ó(   —  | j                   |fi |¤ŽS r  )r`  rû  s      r  Úvisit_booleanz!GenericTypeCompiler.visit_boolean»  ó   € Ø!ˆt×!Ñ! %Ñ.¨2Ñ.Ð.r  c                ó(   —  | j                   |fi |¤ŽS r  )r5  rû  s      r  Ú
visit_timezGenericTypeCompiler.visit_time¾  ó   € Øˆt�‰˜uÑ+¨Ñ+Ð+r  c                ó(   —  | j                   |fi |¤ŽS r  )r/  rû  s      r  Úvisit_datetimez"GenericTypeCompiler.visit_datetimeÁ  s   € Ø"ˆt×"Ñ" 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )r2  rû  s      r  Ú
visit_datezGenericTypeCompiler.visit_dateÄ  rn  r  c                ó(   —  | j                   |fi |¤ŽS r  )r)  rû  s      r  Úvisit_big_integerz%GenericTypeCompiler.visit_big_integerÇ  ó   € Ø ˆt× Ñ  Ñ-¨"Ñ-Ð-r  c                ó(   —  | j                   |fi |¤ŽS r  )r%  rû  s      r  Úvisit_small_integerz'GenericTypeCompiler.visit_small_integerÊ  s   € ð #ˆt×"Ñ" 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )r!  rû  s      r  Úvisit_integerz!GenericTypeCompiler.visit_integerÏ  rk  r  c                ó(   —  | j                   |fi |¤ŽS r  )r  rû  s      r  Ú
visit_realzGenericTypeCompiler.visit_realÒ  rn  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Ø  ru  r  c                ó(   —  | j                   |fi |¤ŽS r  )r  rû  s      r  Úvisit_numericz!GenericTypeCompiler.visit_numericÛ  rk  r  c                ó(   —  | j                   |fi |¤ŽS r  ©rI  rû  s      r  Úvisit_stringz GenericTypeCompiler.visit_stringÞ  rk  r  c                ó(   —  | j                   |fi |¤ŽS r  rƒ  rû  s      r  Úvisit_unicodez!GenericTypeCompiler.visit_unicodeá  rk  r  c                ó(   —  | j                   |fi |¤ŽS r  ©rO  rû  s      r  Ú
visit_textzGenericTypeCompiler.visit_textä  rn  r  c                ó(   —  | j                   |fi |¤ŽS r  rˆ  rû  s      r  Úvisit_unicode_textz&GenericTypeCompiler.visit_unicode_textç  rh  r  c                ó(   —  | j                   |fi |¤ŽS r  rƒ  rû  s      r  Ú
visit_enumzGenericTypeCompiler.visit_enumì  rk  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_nullï  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  N)r  zsqltypes.Float[Any]rÒ  r   r  rþ   )r  zsqltypes.Double[Any]rÒ  r   r  rþ   )r  zsqltypes.DOUBLE_PRECISION[Any]rÒ  r   r  rþ   )r  zsqltypes.REAL[Any]rÒ  r   r  rþ   )r  zsqltypes.Numeric[Any]rÒ  r   r  rþ   )r  zsqltypes.DECIMAL[Any]rÒ  r   r  rþ   )r  zsqltypes.IntegerrÒ  r   r  rþ   )r  zsqltypes.SmallIntegerrÒ  r   r  rþ   )r  zsqltypes.BigIntegerrÒ  r   r  rþ   )r  zsqltypes.TIMESTAMPrÒ  r   r  rþ   )r  zsqltypes.DateTimerÒ  r   r  rþ   )r  zsqltypes.DaterÒ  r   r  rþ   )r  zsqltypes.TimerÒ  r   r  rþ   )r  zsqltypes.CLOBrÒ  r   r  rþ   )r  zsqltypes.TextrÒ  r   r  rþ   )r   rþ   r=  r÷  r¦  rH  r  rþ   )r  zsqltypes.CHARrÒ  r   r  rþ   )r  zsqltypes.NCHARrÒ  r   r  rþ   )r  zsqltypes.StringrÒ  r   r  rþ   )r  zsqltypes.NVARCHARrÒ  r   r  rþ   )r  zsqltypes.Uuid[Any]rÒ  r   r  rþ   )r  zsqltypes.LargeBinaryrÒ  r   r  rþ   )r  zsqltypes.BINARYrÒ  r   r  rþ   )r  zsqltypes.VARBINARYrÒ  r   r  rþ   )r  zsqltypes.BooleanrÒ  r   r  rþ   )r  zsqltypes.UnicoderÒ  r   r  rþ   )r  zsqltypes.UnicodeTextrÒ  r   r  rþ   )r  zsqltypes.EnumrÒ  r   r  rþ   )r  zTypeDecorator[Any]rÒ  r   r  rþ   )r  zUserDefinedType[Any]rÒ  r   r  rþ   )2r  r  r  r
  r  r  r  r  r  r!  r%  r)  r,  r/  r2  r5  r8  r;  r>  rB  rF  rI  rL  rO  rR  rU  rZ  r]  r`  re  rg  rj  rm  rp  rr  rt  rw  ry  r{  r}  r  r�  r„  r†  r‰  r‹  r�  rÞ  r‘  r”  r  r  r  r  r  D  s¦  „ óóð"Ø3ð"Ø;>ð"à	ó"ó
ó	ó	óóóóóóóóóðØðØ!.ðØ;Hðà	óóOóPó
ó

ó
OóóóIóLóó0ð,Ø)ð,Ø14ð,à	ó,ó
/ó,ó0ó,ó.ð0Ø*ð0Ø25ð0à	ó0ó
/ó,ó-ó.ó/ó/ó/ó,ð,Ø)ð,Ø14ð,à	ó,ó
/ò
ðCØ'ðCØ/2ðCà	óCð
(Ø)ð(Ø14ð(à	ô(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.process  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        |«      ‚)Nri  )rk  r™  r˜  )r  r:  s     r  Ú__getattr__zStrSQLTypeCompiler.__getattr__
  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_unknown  sA   € Ø�?‰?×#Ñ# u§¡×'?Ñ'?×'EÑ'EÓ'GÒGØ—?‘?×+Ñ+Ð+ä˜“;Ðr  c                 ó   — yrÛ  r  rû  s      r  rÞ  zStrSQLTypeCompiler.visit_null  rß  r  c                ó`   — 	 |j                   } |di |¤ŽS # t        $ r t        |«      cY S w xY wrü  )r“  r˜  rž  )r  r  rÒ  r“  s       r  r”  z%StrSQLTypeCompiler.visit_user_defined  s=   € ð	&Ø ×-Ñ-ˆLñ  Ñ% "Ñ%Ð%øô ò 	Ü˜“;Òð	ús   ‚ –-¬-N)r  r  r  r¸  r›  r™  rÞ  r”  r  r  r  r–  r–    s   „ ò2ò&òòó&r  r–  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                  óh  — 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,d„Zd„ Z	 	 	 	 	 	 d-d„Zd.d„Zd.d„Zd„ Zd.d„Zd/d„Zd„ Zd0d1d„Zd0d2d„Zd„ Z	 d3	 	 	 	 	 d4d„Z	 d0	 	 	 	 	 d5d„Z	 d0	 	 	 	 	 d6d„Zd0d„Z ej@                  d«      	 d3	 	 	 	 	 d7d„«       Z!	 d3	 	 	 	 	 d8d „Z"	 d3	 	 	 	 	 d8d!„Z#	 	 	 	 	 	 	 	 d9d"„Z$d:d#„Z%	 	 d;	 	 	 	 	 	 	 d<d$„Z&d%„ Z'	 d0d&„Z(	 	 	 	 	 d=	 	 	 	 	 	 	 	 	 	 	 	 	 d>d'„Z)d3d(„Z*ejV                  d)„ «       Z,d?d*„Z-y)@r¨  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.
        r1   )rÏ   rÍ   N)
r±  r¨  r©  Úescape_quoteÚescape_to_quoteÚomit_schemaÚquote_case_sensitive_collationsrª  rj  r¸  )r  r±  r¨  r©  r­  r°  r¯  s          r  r½  zIdentifierPreparer.__init__F  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_mapr2   rÔ  r.   )rÛ  r   Úincludes_nones     €r  Úsymbol_getterz@IdentifierPreparer._with_schema_translate.<locals>.symbol_getterp  sw   ø€ Ø—:‘:ˆDØ×"Ò"¨Ð(8¹MØÐ#¨°©¸¸t¹Ü×*Ñ*ð8Ø:>ñ?óð ô #Ø# t¢¨wÑ7¸uôð ð —z‘zÐ!r  )rÃ  Ú__new__rv  rw  rš  r«  )r  r¦  Úprepr·  r¶  s       @r  r³  z)IdentifierPreparer._with_schema_translatej  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 )Nr1   )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•   r2   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«  r2   r<  r]  r§  )r  r/  r¦  r¹  r½  s   `   @r  r¹  z,IdentifierPreparer._render_schema_translates‚  s\   ù€ ð !ˆØ�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  r2   rÔ  r  )r  rÐ  r`  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_identifierÔ  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   )rC  Úreserved_wordsÚillegal_initial_charactersÚlegal_charactersr  rþ   )r  rÉ  Úlc_values      r  rn  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  rF  z1IdentifierPreparer._requires_quotes_illegal_charsë  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_schemað  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  rB  rª  rn  rÅ  )r  r]  rÎ  s      r  r˜  zIdentifierPreparer.quote  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_collationK  s    € Ø×/Ò/Ø—:‘:˜nÓ-Ð-à!Ð!r  c                ó¬   — | j                  |j                  «      }| j                  |«      }| j                  s|r|�| j	                  |«      dz   |z   }|S r‰  )r˜  r   rš  r¯  r›  )r  rL  r=  r   r   s        r  r%  z"IdentifierPreparer.format_sequenceQ  s[   € ð �z‰z˜(Ÿ-™-Ó(ˆà×1Ñ1°(Ó;Ðð × Ò ÙØ Ð,à×$Ñ$Ð%5Ó6¸Ñ<¸tÑCˆDØˆr  c                ó@   — | j                  |xs |j                  «      S r  ©r˜  r   )r  r  r   s      r  r„  zIdentifierPreparer.format_label`  s   € ð �z‰z˜$Ò, %§*¡*Ó-Ð-r  c                óf   — |€|€J ‚| j                  |j                  «      S | j                  |«      S r  rÔ  )r  r”  r   s      r  rh  zIdentifierPreparer.format_aliase  s7   € ð ˆ<ØÐ$Ð$Ð$Ø—:‘:˜eŸj™jÓ)Ð)à—:‘:˜dÓ#Ð#r  c                ój   — |xs |j                   }| j                  |«      r| j                  |«      }|S r  )r]  rn  rÅ  )r  Ú	savepointr   r]  s       r  rï  z#IdentifierPreparer.format_savepointn  s5   € ð Ò'˜	Ÿ™ˆØ× Ñ  Ô'Ø×)Ñ)¨%Ó0ˆEØˆr  zsqlalchemy.sql.namingc                ó"  — t         j                  j                  }|j                  t        u r|j                  ||j                  «      }|€y |j                  }|€J ‚|j                  dk(  r| j                  ||¬«      S | j                  ||¬«      S )Nr~  )Ú_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_constraintw  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_lengthro  Ú _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_lengthro  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   rc  r$  éüÿÿÿ)	r¶  r   rC   r©  r&   Úmd5_hexr±  Úvalidate_identifierr˜  )r  r   rã  rÙ  s       r  rá  z3IdentifierPreparer._truncate_and_render_maxlen_name­  ss   € ô �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                ó0   — | j                  |«      }|€J ‚|S r  )r²  )r  r~  r   s      r  rŠ  zIdentifierPreparer.format_index»  s#   € Ø×%Ñ% eÓ,ˆØÐÐÐØˆr  c                óä   — |€$t         rt        |t        «      sJ ‚|j                  }| j	                  |«      }| j                  |«      }| j                  s|r|r| j                  |«      dz   |z   }|S )z'Prepare a quoted table and schema name.r)  )r   r¶  rZ   r   r˜  rš  r¯  r›  )r  rœ   r=  r   rE  r   s         r  r­  zIdentifierPreparer.format_tableÀ  sr   € ð ˆ<ÝÜ! %¬Ô9Ð9Ð9Ø—:‘:ˆDà—‘˜DÓ!ˆà×1Ñ1°%Ó8Ðà×Ò¡JÑ3CØ×&Ñ&Ð'7Ó8¸3Ñ>ÀÑGˆFØˆr  c                ó$   — | j                  |«      S )zPrepare a quoted schema name.r´  rF  s     r  rG  z IdentifierPreparer.format_schemaÔ  s   € ð �z‰z˜$ÓÐr  c                ó~   — |�+t        |t        j                  «      r|j                  |«      }| j	                  |«      S )úPrepare a quoted column name.)r¶  r   rC   r=  r˜  )r  r   rp  s      r  r\  z$IdentifierPreparer.format_label_nameÙ  s;   € ð Ð¤JØ”(×+Ñ+ô%
ð —>‘> (Ó+ˆDà�z‰z˜$ÓÐr  c                óv  — |€|j                   }|€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   rC   r=  rB  r­  rœ   r˜  )r  r¡   r˜  r   Ú
table_namer=  rp  s          r  r™  z IdentifierPreparer.format_columnç  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.Fr  )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  )r]  r^  rê  s     r  r;  z4IdentifierPreparer._r_identifiers.<locals>.<genexpr>(  s$   è ø€ ð )
ñ�ô �I‰I�a�Lñùs   ‚!zM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+)ÚinitialÚfinalr‘  )r¨  r©  rÀ  r]  r_  )r  rô  rõ  Úescaped_finalÚrs        r  Ú_r_identifiersz!IdentifierPreparer._r_identifiers&  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÷  Úar}  r÷  s         r  Úunformat_identifiersz'IdentifierPreparer.unformat_identifiers8  sh   € ð ×Ñˆð *+¯©°;Ô)?Ô@Ñ)?¡  A�a’f˜1‘fÐ)?Ó@ó
á@�ð ×%Ñ% aÕ(Ø@ñ
ð 	
ùã@ùò
s
   ¡A·A)r”  Nr”  TF)r±  rk   r¨  rþ   r©  rH  r­  rþ   r°  r&  r¯  r&  )r/  rþ   r¦  rl   r  rþ   )rÉ  rþ   r  rþ   )rÉ  rþ   r  r&  r  )r#   rþ   rÎ  r   r  rþ   )r]  rþ   rÎ  r   r  rþ   )T)rL  zschema.Sequencer=  r&  r  rþ   )r  z
Label[Any]r   rH  r  rþ   )r”  zOptional[AliasedReturnsRows]r   rH  r  rþ   )r¿   zUnion[Constraint, Index]rÙ  r&  r  rH  )r   rþ   rÙ  r&  r  rþ   )r   rþ   rã  rI  rÙ  r&  r  rþ   )r~  rQ   r  rþ   )TN)rœ   rY   r=  r&  r   rH  r  rþ   )FNNFN)r¡   zColumnElement[Any]r˜  r&  r   rH  rð  rH  r=  r&  rp  zOptional[Mapping[str, Any]]r  rþ   )rû  rþ   r  zSequence[str]).r  r  r  r	  ÚRESERVED_WORDSrÇ  ÚLEGAL_CHARACTERSrÉ  ÚILLEGAL_INITIAL_CHARACTERSrÈ  r
  r@  Ú
attrgetterrš  r«  r½  r³  r¹  rÀ  rÂ  rõ  rÅ  rn  rF  r›  r˜  r¥  r%  r„  rh  rï  r&   r
  r²  rÜ  rÝ  rá  rŠ  r­  rG  r\  r™  r?  r  rø  rý  r  r  r  r¨  r¨  *  sÖ  … ÙJà#€Nà'Ðà!;ÐàÓàÓà&Ó&à2E°(×2EÑ2EÀhÓ2OÐÐ/ÓOðð -2Ð# TÓ1ð
 !Ø%)ØØ04Ø!ð"
àð"
ð ð"
ð #ð	"
ð
 ð"
ð *.ð"
ð ó"
òHð0)FØð)FØ4Jð)Fà	ó)FóV
óFòó$
ó
ò;ô
%"ôN2òh"ð =AðØ'ðØ59ðà	óð  8<ð.Øð.Ø'4ð.à	ó.ð JNð$Ø1ð$Ø9Fð$à	ó$óð €T×ÑÐ0Ó1àKOðØ2ðØDHðà	òó 2ðð4 15ð
Øð
Ø)-ð
à	ó
ð 15ð
Øð
Ø)-ð
à	ó
ð$Øð$Ø"ð$Ø48ð$à	ó$óð  Ø"ð	àðð ðð ð	ð
 
óò( ð ó ð"  Ø"Ø$(Ø Ø04ð,à"ð,ð ð,ð ð	,ð
 "ð,ð ð,ð .ð,ð 
ó,ó\Að" 
×Ññó ðô"
r  r¨  )ûr	  Ú
__future__r   r†  Úcollections.abcÚabcr¨  r  Úenumr   rq  r¶  r@  r]  Ú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&   r6  Ú_typingr'   r(   r)   r*   r+   r,   r-   r.   r/   Úvisitorsr0   r2   r3   Úutil.typingr4   r5   r6   r7   Ú
annotationr8   r9   r:   r;   r­  r<   r@  r=   Údmlr>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   Útype_apir^   r_   r`   ra   rb   Úengine.cursorrc   Úengine.interfacesrd   re   rf   rg   rh   ri   rj   rk   rl   rþ   Ú_FromHintsTyperþ  r_  ÚIrÿ  ÚLEGAL_CHARACTERS_PLUS_SPACEru  r�   r 	  rö  rú  rü  ÚUNICODErÈ  rÇ  rl  rm  r÷  Úor_rJ  Úmulr§  ÚmodÚnegÚltÚleÚneÚgtÚgeÚeqÚis_distinct_fromÚis_not_distinct_fromÚ	concat_opr‰  Únot_match_opr–  r•  r#  r•  rƒ  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_opr‚  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.  rD  rT  ra  ro  rt  r=  ru  rv  rw  rx  Ú
namedtuplerz  rž  ÚEnsureKWArgr÷  ÚBinaryElementRoleÚCompilerColumnElementr   r  ré  r  r6  r  r–  r¢  r(  r¨  )r  s   0r  Ú<module>r;	     s3  ðòõ" #ã Ý )Û Ý Û Û Û Û 	Ý Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý &Ý Ý Ý Ý Ý 2Ý Ý !Ý Ý %Ý Ý Ý Ý !Ý "Ý Ý #à	×ÓÝ+Ý,Ý"Ý Ý#Ý)ÝÝÝÝ#ÝÝ*Ý*Ý'Ý'Ý&Ý'Ý ÝÝÝÝ#ÝÝ"Ý,ÝÝ,ÝÝ(Ý1Ý.Ý/ÝÝ&Ý+Ý'Ý"Ý'Ý,Ý'Ý$Ý)Ý#Ý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I'ñ I'ôXF�4×#Ò#ô Fô0Ø	×Ò˜CÑ  (×"@Ò"@ôô2#
Ø	×Ò˜CÑ  (×"@Ò"@ô#
ôLHV
�(ô HV
ôVll
�[ô l
ô^m�(ô mô`z(˜,ô z(öz&Ð,ô &öB/˜xô /ö;˜hô ;÷U
ô U
ùòia <s   Ë=c&