Ë
    ðmxi?V ã                  óò  — 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                  �rJd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^l/mpZp dd_l/mqZq dd`lrmsZs ddalrmtZt ddblrmuZu ddclrmvZv dddl=mwZw d1delxmyZy d1dflzm{Z{ d1dglzm|Z| d1dhlzm}Z} d1dilzm~Z~ d1djlzmZ d1dklzm€Z€ d1dllzm�Z� d1dmlzm‚Z‚ d1dnlzmƒZƒ edoe„f   Z…h dp£Z† e�j                  dqe�j                  «      Z‰ e�j                  dre�j                  «      ZŠ e‹dds«      D � ch c]
  }  e„| «      ’Œ c} �j                  dtg«      Z� e�j                  due�j                  «      ZŽ e�j                  due�j                  «      Z� e�j                  dve�j                  «      Z� e�j                  dwe�j"                  «      Z’ e�j                  dxe�j"                  «      Z“dyZ”e”dzd{d|d}d~dœZ•i e,�j,                  d€“e,�j.                  d�“e,�j0                  d‚“e,�j2                  dƒ“e,�j4                  d„“e,�j6                  d…“e,�j8                  d†“e,�j:                  d‡“e,�j<                  dˆ“e,�j>                  d‰“e,�j@                  dŠ“e,�jB                  d‹“e,�jD                  dŒ“e,�jF                  d�“e,�jH                  dŽ“e,�jJ                  d�“e,�jL                  d�“i 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¦e,�jz                  d§e,�j|                  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)ÚCheckConstraint)ÚColumn)Ú
Constraint)ÚForeignKeyConstraint)ÚIdentityOptions)Ú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)ÚSchemaTranslateMapTyper[   >^   Ú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__© ó    úN/home/htdocs/ttos/venv/lib/python3.12/site-packages/sqlalchemy/sql/compiler.pyrÿ   rÿ   m  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   Ú	statementrf   Ú
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  ©r2  )Ú.0Úkeyr  s     €r  ú	<genexpr>z6ExpandedState.positional_parameters.<locals>.<genexpr>á  s   øè ø€ ÒF¨c�T—_‘_ SÕ)ÑFùó   ƒ)r6  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`.r:  rA  s    r  Úadditional_parametersz#ExpandedState.additional_parametersã  s   € ð �‰Ðr  N)r  r  )r  rf   )r  r	  r
  r  r  ÚpropertyrB  rD  r  r  r  r0  r0  ¬  si   … ñð" ƒNØ=à(Ó(ðð 6Ó5Ø+à(Ó(ðð 1Ó0ðð ò	Gó ð	Gð òó ñr  r0  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_exprz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_columnsr5  Úsentinel_param_keysÚimplicit_sentinelÚembed_values_counter)r  r	  r
  r  r  rM  rN  rP  rQ  rR  rS  rT  r  r  r  rG  rG  é  s·   … ñð Óðð
 Óðð 8Ó7ØMà#&Ó&ð
ð %*Ð˜TÓ)ðð ',Ð˜tÓ+ðð 9=ÐÐ5Ó<ðð !"Ð˜#Ó!ðð 48ÐÐ0Ó7ðð  $Ð�tÓ#ð	ð "'Ð˜$Ó&ð	r  rG  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_statementrg   Úreplaced_parametersú#Optional[_GenericSetInputSizesType]Úprocessed_setinputsizesz#Sequence[_DBAPISingleExecuteParams]ÚbatchzSequence[Tuple[Any, ...]]Úsentinel_valuesrK  Úcurrent_batch_sizeÚbatchnumÚtotal_batchesr(  Úrows_sortedÚis_downgradedNr  r  r  r  rV  rV  `  sD   … ñ
ð ÓØ/Ó/Ø@Ó@Ø.Ó.Ø.Ó.ØÓØƒMØÓØÓØÔr  rV  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  rc  rc  y  sE   „ ñð
 €MØ€MØ€HØ€Hà%¨Ñ0°8Ñ;ÐØ%Ð(9Ñ9ÐàÐØ Ñr  rc  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  rq  rq  ‹  s    „ Ø€IØ=à€Nðð €Lðr  rq  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  rv  rv  ›  s5   „ ñð €JØà!"Ððð €LØ2à-°Ñ<€Lðr  rv  c                  ó    — e Zd ZdZdd„Zdd„Zy)Ú
FromLinterzKrepresents current state for the "cartesian product" detection
    feature.Nc                óÄ  ‡	— | j                   }|syt        | j                  «      }t        |«      }|�|}|j                  |«       n|j	                  «       }t        j                  |g«      }|rg|re|j                  «       Š	|j                  ‰	«       |D �ch c]	  }‰	|v sŒ|’Œ }}|j                  ˆ	fd„|D «       «       |j                  |«       |r|rŒe|r||fS yc c}w )N©NNc              3  óH   •K  — | ]  }||j                  ‰«          –— Œ y ­wr  )Úindex)r;  ÚedgeÚnodes     €r  r=  z"FromLinter.lint.<locals>.<genexpr>×  s"   øè ø€ ÒN¸D˜T d§j¡j°Ó&6Ð"6Õ7ÑNùó   ƒ")Ú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„  )r;  Úfrom_r  s     €r  r=  z"FromLinter.warn.<locals>.<genexpr>í  s)   øè ø€ ò &Ø16�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  r|  r|  ·  s   „ ñó#ôJ#r  r|  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]r1  Ú r   Ústringrq  ÚstateFzOptional[CursorResultMetaData]Ú_cached_metadataz"Optional[List[ResultColumnsEntry]]Ú_result_columnsú Optional[SchemaTranslateMapType]Úschema_translate_maprj   Ú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_translaterq  rr  r¤  r1  Úsupports_executionÚcan_executer¬  r   Ú
isinstancer;   Ú_execution_optionsr©  Úprocessr£  Ú_render_schema_translatesrs  rt  r   r±  ©r  r³  r1  r¨  Úrender_schema_translateÚcompile_kwargss         r  Ú__init__zCompiled.__init__M  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   ÚObjectNotExecutableErrorr1  )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'.

        ©ÚNotImplementedErrorrA  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¤  rq  rs  r£  rA  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æ  rA  s    r  rã  zCompiled.params¿  s   € ð ×$Ñ$Ó&Ð&r  )
r³  rm   r1  r¡  r¨  r§  r½  r(  r¾  úMapping[str, Any])r  r  ©r  ÚSQLCompiler)rÝ  rd   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  r1  r  r£  Úis_sqlÚis_ddlr¥  r¦  r¨  r&   Ú
EMPTY_DICTr©  r¬  r'  r­  r¯  Úimmutabledictr¿  rÃ  ÚclassmethodrÁ  rÍ  rÕ  rE  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³  rm   )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_setrA  s    r  r  z_CompileLabel.proxy_setê  ó   € à�|‰|×%Ñ%Ð%r  c                ó.   — | j                   j                  S r  ©rÒ  r  rA  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¿  rE  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
  rA  s    r  r  z ilike_case_insensitive.proxy_set  r  r  c                ó.   — | j                   j                  S r  r  rA  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¿  rE  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_matchr6  Ú_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_clsE  s   € à× Ñ Õ"r  c                ó¾   — t        j                  dj                  | j                  «      «      }t        j                  d|› d�«      | _        | j                  | _        y )Nr¢  r,  r-  )ÚreÚescaperˆ   r/  Úcompiler0  r1  )rÄ  Úregs     r  r]  z SQLCompiler._init_bind_translateI  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@  rG  rA  F©rå  Ú_no_postcompile)Ú_populate_self)5Úcolumn_keysr¯  r<  rS  Úfor_executemanyÚlintingr;  r&   Úcolumn_dictr<  r‘  r¦  rd  Ú
paramstyleÚ
startswithrG  rB  Ú_pyformat_templaterA  ÚBIND_TEMPLATESrW  Úlabel_lengthÚmax_identifier_lengthr0   Úanon_mapÚtruncated_namesÚ_truncated_countersr   r¿  r3  r4  r2  r   r¸  r@   rB   Ú_inlinerV  r³  Úinsert_executemany_returningÚ_return_defaultsr@  Ú__dict__ÚupdateÚitemsr¤  rq  rs  Ú_process_numericÚ_process_positionalrH  ræ  Ú#_process_parameters_for_postcompile)r  r³  r1  r¯  rh  ri  rj  Ú_supporting_againstrÞ  ÚbÚcksmÚckbmÚnbÚkÚvr2  s                   r  r¿  zSQLCompiler.__init__O  sá  € ð@ 'ˆÔà"ˆŒáØ&/°¡lÖ3 �A—E‘E˜1‘HÐ3ˆDÐ3Ø$-¨a¡LÖ1˜q�A˜�s‘FÐ1ˆ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÷á˜˜1Øðñ	ð �q‘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)rN  rI  rA  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)r9  r1  r(   Ú_all_selected_columnsr'   )r  Úcs     r  Úeffective_returningzSQLCompiler.effective_returningô  sg   € ð ×"Ò"Ø×*Ñ*Ð*Ø�^‰^Ð'¬F°4·>±>Ô,Bð Ÿ™×=Ñ=öàÜ$ QÔ'ò òð ð ùòs   ÁA*c                ó   — | j                   S )zVbackwards compatibility; returns the
        effective_returning collection.

        )rŠ  rA  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  )Úlistr6  r7  rA  s    r  ÚprefetchzSQLCompiler.prefetch8  s#   € ä�D×(Ñ(Ó)¬D°×1EÑ1EÓ,FÑFÐFr  c                ó   — i S r  r  rA  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&   ÚOrderedDictrW  rX  rY  rZ  )r  rW  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¦  rE  r‘  r‡  )r  Úresult_columnsÚordered_columnsÚentrys       r  Ú_nested_resultzSQLCompiler._nested_resultX  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  ©rI  rJ  )r£  zre.Match[str]r  r   )r6  r¤  rq  rs  rG  r³  rl  r_  ÚsubÚ_positional_patternr£  rR  rz  ÚlenÚgetrN  rI  rJ  Ú_replace)
r  r§  rƒ  r„  Úreverse_escaper  rI  rJ  r¥  r¦  s
           @@r  r|  zSQLCompiler._process_positionalp  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¡t q¨!˜a ™dÐOˆNÑOÜ�t×.Ñ.Ó/´3°~Ó3FÒFÐFÐFà;Dö Ø37�×"Ñ" 4¨Õ.ò ˆDÕð  )ˆDÔà×!Ò!ØˆIä!#§¡Ø×(Ñ(ØØ×&Ñ&×9Ñ9ó"Ðð ×/Ñ/×BÑBö"ð ð �a‘DØ�a‘DÜ—F‘F˜4×3Ñ3°]ÀAÀaÁDÓIØ�a‘Dò	ð"Ðð "ð &*×%;Ñ%;×%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  )rT  )r;  r  r  s     €r  r=  z/SQLCompiler._process_numeric.<locals>.<genexpr>·  s'   øè ø€ ò àØ 4×#9Ñ#9Ñ9ô ñùó   ƒc                ó,   •— ‰| j                  d«         S ©Nr   ©r—   ©r£  Ú	param_poss    €r  ú<lambda>z.SQLCompiler._process_numeric.<locals>.<lambda>Þ  s   ø€ �i §¡¨£
Ñ+€ r  r   r   r  r¨  )rG  r¤  rq  rs  rN  rT  Ú	itertoolsÚchainr<  Úvaluesr;  rQ  rP  rB  Únext_numeric_posr“  r6  rR  r«  rz  r¬  Ú_pyformat_patternr©  r£  rI  rJ  r­  )r  Únumr›   Ú	bind_nameÚbindÚphÚ
len_beforer  ÚposrI  r„  rJ  r¶  s   `           @r  r{  zSQLCompiler._process_numeric«  sL  ù€ Ø×"Ò"Ð"Ð"Ø�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÷á�D˜#ð ×'Ñ'×+Ñ+¨D°$Ó7¸Ñ<óˆIô �y“> ZÒ/Ð/Ð/ð ×,Ñ,×0Ñ0Û+¨T¯[©[ó
ˆŒð ×!Ò!ð ×&Ñ&×9Ñ9Øñð ð ×/Ñ/×BÑBö"àð �1‘�q˜‘t˜T 1 Q¡4Ò(ð"Ðð "ð
 &*×%;Ñ%;×%DÑ%Dà#5à#5ð	 &Eó &ˆDÕ"ð "ùóùò$"s   Å'H/Ç3H5c                óf   ‡ — ˆ fd„‰ j                   D «       D ��ci c]
  \  }}|�||“Œ c}}S c c}}w )Nc           	   3  ó  •K  — | ]„  }‰j                   |   |j                  j                  s%|j                  j                  ‰j                  «      n5t        ˆfd „t        t        |j                  «      j                  D «       «      f–— Œ† y­w)c              3  óT   •K  — | ]  }|j                  ‰j                  «      –— Œ! y ­wr  )Ú_cached_bind_processorr³  )r;  Ú	elem_typer  s     €r  r=  z9SQLCompiler._bind_processors.<locals>.<genexpr>.<genexpr>  s(   øè ø€ ò #à )ð &×<Ñ<¸T¿\¹\×Jñ#ùs   ƒ%(N)	r<  r  Ú_is_tuple_typerÆ  r³  r@  r   r/   Útypes)r;  Ú	bindparamr  s     €r  r=  z/SQLCompiler._bind_processors.<locals>.<genexpr>þ  sx   øè ø€ ò ð ð —O‘O IÑ.ð  )Ÿ~™~×<Ò<ð "Ÿ™×=Ñ=¸d¿l¹lÔKä"ó #ä-1Ü )¨9¯>©>ó.ç#™eô	#ó ôñùs   ƒB
B)r<  )r  r<  Úvalues   `  r  Ú_bind_processorszSQLCompiler._bind_processorsô  sC   ø€ óð "&§¡ô÷
á��Uð  Ð ð# �‰Jó
ð 	
ùó 
s   š-c                ó2   — t        | j                  «      dkD  S r³  )r«  r‘  rA  s    r  Úis_subqueryzSQLCompiler.is_subquery  s   € Ü�4—:‘:‹ Ñ"Ð"r  c                ó   — | S r  r  rA  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

        Tre  )ræ  r}  )r  rã  rå  r2  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)rH  rI  Údictr2  r2   r?  r(  rR  r¯  ÚCompileErrorrS  Úzipr<  rz  r¬  r<  ÚrequiredÚcallableÚeffective_valuerË  )r  rã  rä  rå  Ú_group_numberÚ_checkrf  Úhas_escaped_namesÚorig_extractedÚ
ckbm_tupler�  r&  r  Ú	extractedr¿  Úresolved_extractedÚpdrÊ  r  Úescaped_nameÚvalue_params                        r  ræ  zSQLCompiler.construct_params/  sT  € ð ×#Ò#©OØ×4Ñ4Ð@Ð@Ð@ÙÜ˜D×=Ñ=×HÑHÓIÐIä×-Ñ-ð4óð ð )ÒJ¬T°$×2IÑ2IÓ-JÐáð �~‰~Ð%Ü×&Ñ&ðJóð ð
 "&§¡°Ñ!2�à×3Ñ3ˆJØÐ)Ð)Ð)Ø ‰GˆD�!ô %(¨Ð8LÓ$M÷"ð "á �A�yØ  ™Gò"ð ð �i‘ð"Øð"Ðó "ð "&ÐâØˆ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Ó#:ò 9‘�	˜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�|Ò$ð=9ð@ ˆ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ë  rP  r<  r  rÈ  r   r/   rÉ  )
r  rî  Ú
inputsizesrP  rÊ  ré  rë  r³  rì  rí  s
         @@@@r  Ú_get_set_input_sizes_lookupz'SQLCompiler._get_set_input_sizes_lookup¯  sÈ   û€ à—,‘,ˆà×7Ñ7ˆØ×7Ñ7ˆà—‘ˆ÷
	ð ˆ
à!%×!<Ñ!<ÐàŸ™ò 
	DˆIØÐ2Ñ2Øà�~‰~×,Ò,ô  $¤I¨y¯~©~Ó>×DÑDö)àñ   Õ$ò)�
˜9Ò%ñ
 )4°I·N±NÓ(C�
˜9Ò%ð
	Dð Ðùò)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è  rA  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.

        Nr3  z/Mapping[str, Sequence[_BindProcessorType[Any]]]©Úrender_literal_valuec              3  ó”   •K  — | ]?  \  }}t        |d «      D ]+  \  }}‰‰v r"‰‰   |d z
     �‰›d|›d|›�‰‰   |d z
     f–— Œ- ŒA y­w)r   Nr&  )Ú	enumerate)r;  ÚiÚtuple_elementÚjr&  r  Útuple_processorss        €€r  r=  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>P  s{   øè ø€ ò 	.ñ
 !1  =Ü(1°-ÀÓ(Cò	.ñ !%  1Ø#Ð'7Ñ7Ø 0°Ñ 6°q¸1±uÑ =Ð Iò /3²A±qÐ 9Ø 0°Ñ 6°q¸1±uÑ =ôð	.ðñ	.ùs   ƒAAr   c              3  ó:   •K  — | ]  \  }}‰‰v r	|‰‰   f–— Œ y ­wr  r  )r;  r<  r&  r  Úsingle_processorss      €€r  r=  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>[  s1   øè ø€ ò .á &  QØ#Ð'8Ñ8ð !Ð"3°DÑ"9Ô:ñ.ùó   ƒc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  r  ©r;  r  r&  s      r  r=  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>a  s   è ø€ ò 3Ù%, T¨1œDñ3ùó   ‚c              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  r  r  s      r  r=  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>h  s   è ø€ Ò.M¹¸¸a¬tÑ.Mù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  )r;  ÚexpÚbe_leftÚbe_rights     €€r  r=  z]SQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding.<locals>.<genexpr>x  s    øè ø€ ò !àñ !(©©hÔ7ñ!ùs   ƒ)r—   Úsplitrˆ   )r£  r<  ÚexprÚtokr  r	  Úreplacement_expressionss       @@€r  Úprocess_expandingzJSQLCompiler._process_parameters_for_postcompile.<locals>.process_expandingo  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  )#rK  r£  rd  rM  r6  rÌ  r   rG  r<  rº  rR  r¬  r;  rP  Úrender_literal_bindparamr‡  rQ  Ú$_literal_execute_expanding_parameterÚliteral_executery  r  rÈ  rø  Úextendr¢  r_  r©  Ú_post_compile_patternr»  rB  r¼  r0  r1  r“  rI  )r  r2  rg  Úexpanded_parametersÚpre_expanded_stringÚnew_positiontupÚpre_expanded_positiontupr4  Únew_processorsÚto_update_setsÚnumeric_positiontupÚnamesÚebnrã  Ú	parameterÚ	to_updaterº  Úleep_resÚreplacement_exprÚ
expand_keyr&  r  r1  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à×%Ñ%ˆØó I	-ˆ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Ù'4 z°1š
ó1Ð'¨Ó-ð !Ò,Ø×&Ñ& tÖ,ðSI	-ôV	ô —F‘FØ×&Ñ&Ð(9Ð;Nó
ˆ	ð Ð*Ø"Ð.Ð.Ð.ô !*Ø'¨×)>Ñ)>ó!÷á�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_cursorre   Ú_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¬  )Ú	lastrowidr2  Úparam_valueÚautoinc_keys      €r  Ú_autoinc_getterzPSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>._autoinc_getterÜ  s)   ø€ Ø",§.¡.°¸iÓ"H�KØ"Ð.ð
  +Ð*ð  )Ð(r  c                ój   •‡ ‡— ‰� ‰‰ «      Š ‰ € ‰ˆfd„‰D «       «      S  ‰ˆˆˆ ˆfd„‰D «       «      S )a  given cursor.lastrowid value and the parameters used for INSERT,
            return a "row" that represents the primary key, either by
            using the "lastrowid" or by extracting values from the parameters
            that were sent along with the INSERT.

            c              3  ó4   •K  — | ]  \  }} |‰«      –— Œ y ­wr  r  )r;  r-  r  r2  s      €r  r=  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>û  s   øè ø€ ÒL±[°V¸S™f Z×0ÑLùó   ƒc              3  óV   •K  — | ]   \  }}|‰u r‰�	 ‰‰‰«      n	‰n |‰«      –— Œ" y ­wr  r  )r;  r-  r  Úautoinc_colÚautoinc_getterr2  r2  s      €€€€r  r=  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>ý  sJ   øè ø€ ò ñ $˜ ð  +Ñ-ð  .Ð9ñ +¨9°jÔAá!*ñ $ JÓ/ó0ñùó   ƒ&)r  )r2  r2  r:  r;  ÚgettersÚlastrowid_processorÚrow_fns   ``€€€€€r  r¬  zDSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.getð  sH   ú€ ð #Ð.Ù/°	Ó:�	àÐ ÙÓLÀGÔLÓLÐLáö ð (/ôó ð r  )r&   r%  Úengine_resultr.  r'  r1  r   r¸  r>   rž   Úprimary_keyÚoperatorÚmethodcallerÚ_autoincrement_columnr  Ú_cached_result_processorr³  r;  Úresult_tupler<  )r  ÚresultÚparam_key_getterr1  rž   r  r5  r¬  r:  r;  r4  r=  r>  r?  s           @@@@@@r  Ú+_inserted_primary_key_from_lastrowid_getterz7SQLCompiler._inserted_primary_key_from_lastrowid_getter¸  sB  ý€ ô —‘×-Ñ-ˆà×=Ñ=Ðà×!Ñ!Ð-Ð-Ð-Ø×&Ñ&×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°# c§g£gÒ%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  )r;  r-  Úuse_rowr2  Úrows      €€r  r=  zWSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get.<locals>.<genexpr>2	  s-   øè ø€ ò á#�F˜Gñ  '‘�s”©F°:Ó,>Ó>ñùrƒ  r  )rN  r2  r=  r?  s   ``€€r  r¬  zDSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get1	  s   ú€ Ùô à'.ôó ð r  )r&   r%  r@  r'  r1  r   r¸  r>   r.  rž   r9  rø  r   rA  rB  Ú
itemgetterrC  rF  r<  )r  rG  r1  rH  rž   rŒ  Úidxr  Úretr¬  r=  r?  s             @@r  Ú+_inserted_primary_key_from_returning_getterz7SQLCompiler._inserted_primary_key_from_returning_getter	  sO  ù€ ô —‘×-Ñ-ˆà×!Ñ!Ð-Ð-Ð-Ø×&Ñ&×0Ñ0ˆ	åÜ˜i¬Ô0Ð0Ð0à×=Ñ=ÐØ—‘ˆà×+Ñ+ˆ	ØÐ$Ð$Ð$Ü(1°)Ó(<×=™H˜C ˆs�C‰xÐ=ˆÑ=äØ5ð !×,Ñ,öð ð ˜c‘zô ×(Ñ(¨¨S©Ó2°DÑ9ô !×-Ñ-Ø!Ñ#3°CÓ#8¸$óð ð	ñòó
ˆð" ×$Ñ$¸×9JÑ9JÖ%K°# c§g£gÒ%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  rA  s    r  Údefault_fromzSQLCompiler.default_from9	  s   € ð r  c                óæ  —  |j                   j                  | fi |¤Ž}|j                  D �]C  }|| j                  vrŒ| j                  |   }|j	                  |j                  |j
                     dd¬«      }| j                  |   }|x| j                  |<   | j                  |<   || j                  |<   | j                  j                  |d«       || j                  v r| xj                  |hz  c_        || j                  v r| xj                  |hz  c_	        | j                  }|sŒü|\  }	}
|j                  D ]4  }|j
                  |
v sŒ|
|j
                     }|	|   j                  |«       Œ6 �ŒF |S )a’  SQL compile the nested element of an _OverrideBinds with
        bindparams swapped out.

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

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

        TF)Úmaintain_keyrØ  N)rÒ  rÜ  Ú	translater;  Ú_with_valuer<  r<  r‡  rQ  rP  rS  Ú_cloned_setr¢  )r  Úoverride_bindsrÔ  Úsqltextrƒ  ÚbpÚnew_bpr  rß  r�  r€  Úcbs               r  Úvisit_override_bindsz SQLCompiler.visit_override_bindsC	  sj  € ð" <�.×(Ñ(×;Ñ;¸DÑGÀBÑGˆð  ×)Ñ)ó "	0ˆ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ØŸ.™.ò 0�BØ—v‘v ’~Ø! "§&¡&™\˜Ø˜R™Ÿ™¨Õ/ò0ð?"	0ð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 ra  rb  )r  rc  rÞ  s      r  Úvisit_select_statement_groupingz+SQLCompiler.visit_select_statement_grouping†	  rf  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Ò  rm  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)Nrj  rŽ  r'  rk  )ÚextraÚexc_clsrÓ  rl  rm  )r‘  rº  Ú_text_clauser   ro  r   Ú_no_text_coercionrÒ  r2   rÖ  rp  )r  rÒ  rm  rÞ  r'  rs  rt  ru  rv  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)rm  Úwithin_label_clauserm  F)r¸  r  r   rC   Ú_truncated_identifierr  r  rÒ  rÜ  Ú	OPERATORSr!   Úas_r«  Úformat_label)r  r  Úadd_to_result_mapr‚  rm  rl  Ú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   r\   )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_collationZ
  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_typeclausec
  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_textj
  ó$   € Ø�=‰=×)Ò)Ø—<‘<  TÓ*ˆDØˆr  c                óV   — | j                   j                  r|j                  dd«      }|S r·  r¹  r¼  s     r  r™  z!SQLCompiler.escape_literal_columno
  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_bindparamu
  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“j€ r  )	r‘  r:  r%   ÚNULLTYPEÚBIND_PARAMS_ESCr©  ÚBIND_PARAMSr¾  r½  )r  rÅ  r‡  rÔ  rÆ  s   `` ` r  Úvisit_textclausezSQLCompiler.visit_textclauset
  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)rm  r‡  ©Únesting_level)r‘  Ú_default_stack_entryr€   r¢  Ú_independent_ctesÚ_dispatch_independent_ctesr¬  rd  rE  rC  r(  Úcolumn_argsrF  rº  Ú_add_to_result_maprÒ  rW  r«  Ú_render_cte_clauser‡  )r  ÚtafÚcompound_indexrd  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  ©r;  Úss     r  r=  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>Ñ
  s   è ø€ ò 
àÙô ñ
ùó   ‚c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÛ  ©r;  r‰  rÔ  r  s     €€r  r=  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>Ó
  s$   øè ø€ ÒI¸1Ð*�a×*Ñ*¨4Ñ6°2Õ6ÑIù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   è ø€ ò "àÙô ñ"ù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¸qÐ.˜!×.Ñ.¨tÑ:°rÕ:ÑLù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.  )rB  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)rB  Ú_get_operator_dispatchr„  ró  rû  ro  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ÚcondrG  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_overP  sT  € Ø.ˆ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_withingroupq  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_funcfilterw  s@   € à.ˆJ�O‰O×.Ñ.¨tÑ>°vÓ>Ø3ˆJ× Ñ ×3Ñ3°DÑC¸FÓCð
ð 	
r  c                óª   — | j                   j                  |j                  |j                  «      }d|›d |j                  j                  | fi |¤Ž›d�S )NzEXTRACT(rÙ   r)  )Úextract_mapr¬  Úfieldr  rÜ  )r  ÚextractrÞ  r:  s       r  Úvisit_extractzSQLCompiler.visit_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  r4  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öð ð	  Ÿ=™=×GÑGÈÔLÜ% d¬H×,@Ñ,@ÔAð Ÿ™×+Ñ+¨CÔ0ð !ñ!òð �&ñ	óð Ð.˜×.Ñ.¨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  rN  rÔ  s      r  rM  zSQLCompiler.visit_sequenceº  s$   € Ü!Ø@Ø�l‰l×Ññ ó
ð 	
r  c                ó<   —  |j                   j                  | fi |¤ŽS r  )Úclause_exprrÜ  )r  r4  rÞ  s      r  rJ  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))rd  r×  NrÛ  )r;  rù  r‰  rd  rÞ  r  s      €€€r  r=  z4SQLCompiler.visit_compound_select.<locals>.<genexpr>é  sA   øè ø€ ò ñ �A�qð %�×$Ñ$ØðØ!'¸ñØ=Cõñùs   ƒ#&rž  rd  T©rÏ  Úinclude_following_stackr  )r‘  Ú_compile_state_factoryr'  r1  rÐ  r¬  r¢  rÑ  rÒ  Úcompound_keywordsÚkeywordrˆ   rø  ÚselectsÚgroup_by_clauserÕ  Úorder_by_clauseÚ_has_row_limiting_clauseÚ_row_limit_clauserW  r«  rÕ  r‡  )r  Úcsrd  r×  rÞ  rØ  r'  Úcompound_stmtr�  Úneed_result_mapr\  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  rb  rÞ  s      r  ra  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  rD  )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ÚunaryrB  Úmodifierz,Unary expression has no operator or modifier)rB  rq  r2   rÖ  r
  Ú _generate_generic_unary_operatorr„  Ú _generate_generic_unary_modifier)r  rp  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¢   rB  rÔ  s       r  Úvisit_truediv_binaryz SQLCompiler.visit_truediv_binary8  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 )Nrv  z	FLOOR(%s))	r³  rw  r�   r  ry  r%   ÚIntegerrº  r‰   r{  s       r  Úvisit_floordiv_binaryz!SQLCompiler.visit_floordiv_binaryS  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Ò  rB  rÔ  s       r  Úvisit_is_true_unary_operatorz(SQLCompiler.visit_is_true_unary_operatord  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_operatorm  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_opr{  s       r  Úvisit_not_match_op_binaryz%SQLCompiler.visit_not_match_op_binaryv  s,   € Ø˜$×+Ñ+Ø¤i×&8Ñ&8ð ,ó 
ñ 
ð 	
r  c                ó>   — d | j                   |t        |   fi |¤Žz  S rÿ  )Ú_generate_generic_binaryr„  r{  s       r  Úvisit_not_in_op_binaryz"SQLCompiler.visit_not_in_op_binary{  s3   € ð Ð5˜×5Ñ5Ø”I˜hÑ'ñ
Ø+-ñ
ñ 
ð 	
r  c                ó  — |t         j                  u r*t        |«      dkD  rddj                  d„ |D «       «      z  S y|t         j                  u r*t        |«      dkD  rddj                  d„ |D «       «      z  S y| j                  |«      S )	Nr   z(%s)) OR (1 = 1rØ   c              3  ó    K  — | ]  }d –— Œ y­w©rÞ  Nr  ©r;  rÒ  s     r  r=  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>‡  ó   è ø€ Ò:¨œfÑ:ùó   ‚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.rR  ©r  Úelement_typesrÔ  s      r  r™  z SQLCompiler.visit_empty_set_expr•  s$   € Ü!ØAØ�l‰l×Ññ ó
ð 	
r  c                óü  ‡ ‡‡	‡
— ‰j                   j                  ‰ j                  «      }|s†|j                  rO‰ j                  j                  rdnd‰ j                  ‰j                   j                  ‰j                  «      z   }d|fS ‰ j                  ‰j                   g‰j                  «      }d|fS |j                  sB|j                  r�t        |d   t        j                  «      rst        |d   t        t        f«      sZ|j                  rt        d«      ‚‰ j                  j                  rdnddj!                  ˆˆ fd„t#        |«      D «       «      z   }d|fS |rƒ‰ j$                  }|j'                  |«      }|r|j)                  d«      sJ d«       ‚|j)                  d«      j+                  d	«      }|d
   |d   cŠ	Š
dj!                  ˆ	ˆ
ˆˆ fd„|D «       «      }d|fS dj!                  ˆˆ fd„|D «       «      }d|fS )NúVALUES r¢  r   z?bind_expression() on TupleType not supported with literal_bindsrØ   c           	   3  óš   •K  — | ]B  \  }}d dj                  ˆfd„t        |‰j                  j                  «      D «       «      z  –— ŒD y­w)r   rØ   c              3  óH   •K  — | ]  \  }}‰j                  ||«      –— Œ y ­wr  rõ  )r;  rË  Ú
param_typer  s      €r  r=  z[SQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>.<genexpr>Á  s*   øè ø€ ò á-˜E :ð ×1Ñ1°%¸×Dñùrƒ  N)rˆ   r×  r  rÉ  )r;  rù  rú  r  r  s      €€r  r=  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>¾  sQ   øè ø€ ò ñ %�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  )r;  rË  r  r	  r  r  s     €€€€r  r=  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>Ô  s7   øè ø€ ò 3ð ñ	  Ø×1Ñ1°%¸¿¹ÔHÙ ô	ñ3ùs   ƒ,/c              3  óV   •K  — | ]   }‰j                  |‰j                  «      –— Œ" y ­wr  r¦  )r;  rË  r  r  s     €€r  r=  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>Þ  s*   øè ø€ ò 3àð ×-Ñ-¨e°Y·^±^×Dñ3ù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«  )r;  rû  rË  r¸  rù  r  rú  s      €€€€r  r=  zMSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>.<genexpr>   s@   øè ø€ ò ñ %˜A˜uñ -Ø% a¬#¨mÓ*<Ñ&<¸qÑ&@ÑAÀ!ÑD÷ñùs   ƒ*-N)rˆ   rø  )r;  rù  rú  r¸  r  s    @@€€r  r=  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>  sD   úè ø€ ò ñ %�A�}ð à—I‘Iö ô )2°-Ó(@ô	ó õñùs   …6;c              3  ó4   •K  — | ]  \  }} ‰|«      –— Œ y ­wr  r  )r;  r<  rË  r¸  s      €r  r=  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>.  s    øè ø€ ò /Ù.8¨c°5Ñ$ S×)ñ/ùr8  )r  r²  r³  r  rç  rG  rA  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å  sQ  ý€ Ø×$Ò$Ø×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�}Ü )¨-¸Ó ;òñ �A�uò  $¢Q©Ð*¨EÒ2ðØ2õˆIð %×4Ò4‘	¸"Ø—	‘	ô ô )2°&Ó(9ôó ñ&Ð"ð. Ð0Ð0Ð0ô !*¨&°!Ó 4÷á�A�uò !¡!Ð$ eÒ,óˆ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_comparisonrB  r…  ry  r¸  Úproductr)   r‰   r*   r�   r?  r¸  r   rE   r
  r„  rŽ  ro  r2   rÐ  )r  r¢   r‰  Úeager_groupingrÁ  rÂ  rÔ  rÀ  r  r  r  rÓ  s               r  rŠ  zSQLCompiler.visit_binary4  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_binaryl  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�   r{  s       r  Úvisit_mod_binaryzSQLCompiler.visit_mod_binaryo  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  )rr  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  )rs  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¬  rB  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  rb  ©r  rp  r  rÔ  s       r  rr  z,SQLCompiler._generate_generic_unary_operator¨  s$   € ØÐ:˜%Ÿ-™-×:Ñ:¸4ÑFÀ2ÑFÑFÐFr  c                óB   —  |j                   j                  | fi |¤Ž|z   S r  rb  rÔ  s       r  rs  z,SQLCompiler._generate_generic_unary_modifier«  s#   € Ø/ˆu�}‰}×/Ñ/°Ñ;¸Ñ;¸hÑFÐFr  c                óL   — t        j                  dt        j                  ¬«      S )Nz'%')r  )r   Úliteral_columnr%   Ú
STRINGTYPErA  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)  rb  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¢   rB  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¢   rB  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à  r{  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æ  r{  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¢   rB  rÔ  r¿   s        r  Úvisit_between_op_binaryz#SQLCompiler.visit_between_op_binary0  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_binary6  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  r{  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  r{  s       r  Ú visit_not_regexp_match_op_binaryz,SQLCompiler.visit_not_regexp_match_op_binaryF  r  r  c                óZ   — t        j                  d| j                  j                  z  «      ‚)Nz;%s dialect does not support regular expression replacementsr  r{  s       r  Úvisit_regexp_replace_op_binaryz*SQLCompiler.visit_regexp_replace_op_binaryN  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_expressionrm  Úliteral_bindsr  Úrender_postcompilez&^(.*)\(__\[POSTCOMPILE_(\S+?)\]\)(.*)$r¤  z(__[POSTCOMPILE_r1   r  r   z~~REPL~~r  z~~]))rm  r®  r   Frm  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_bindparamr;  r«   r  ÚintersectionrY  r2   rÖ  Ú_is_crudr<  rS  r¢  Ú
isoutparamÚhas_out_parametersrH  rP  rQ  rÄ  )r  rÊ  rm  r  r  r  r  rÞ  Úimplr"  Úwrappedr£  rQ  r  r  Úexistingrß  r�  r€  r\  r^  s                        r  Úvisit_bindparamzSQLCompiler.visit_bindparamV  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_typer[  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_bindparamF  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   )	rs  Ú	apply_maprr  r«  rp  rt  r¬  ÚmaxÚhex)r  Úident_classr  ÚanonnameÚcounterÚ	truncnames         r  rƒ  z!SQLCompiler._truncated_identifierS  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  ©rr  ©r  r  s     r  Ú
_anonymizezSQLCompiler._anonymizeh  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   )r1  r—   )r£  r  s    €r  r·  z.SQLCompiler.bindparam_string.<locals>.<lambda>…  s   ø€ ˜d×8Ñ8¸¿¹À»ÑD€ r  z__[POSTCOMPILE_%s]r  )Úaddr¢  r0  r­  r©  rR  rŸ   rç  r³  Úrender_literal_castr¶  r¤  rq  rr  rA  r@  r½  )r  r  r  r  Úescaped_fromr   Úaccumulate_bind_namesÚvisited_bindparamrÔ  Únew_namerQ  Ú	type_impls   `           r  rÄ  zSQLCompiler.bindparam_stringk  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®  sb   € Ø—7‘7“9ˆØ�‰�Z Ô&ÜØ×"Ñ" D×$?Ñ$?ó
ò 	C‰HˆC�ð #ˆC×"Ñ" 4ÑB°#ÐB¸ÓBñ	C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)rG  N)r«  Úformat_label_namerr  )r;  Úidentr  s     €r  r=  z(SQLCompiler.visit_cte.<locals>.<genexpr>Z  s8   øè ø€ ò "ð !&ð !ŸM™M×;Ñ;Ø %°·±ð <÷ ñ"ùs   ƒ14Úsubqueryrd  rÚ   z
(r)  r.  )'r™  rW  r  r¸  r   rC   rƒ  Ú_get_reference_cteÚnestingrY  rX  r2   rÖ  r«  r‘  Ú	_restatesÚhashÚ_is_clone_ofÚcompareÚ
_cte_aliasÚ	visit_cteÚ	recursiverZ  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  rY  rd  ÚashintÚ	fromhintsr\  rÁ  rT  rÞ  Ú	self_ctesÚcte_nameÚ
is_new_cteÚembedded_in_current_named_cteÚ_reference_cterb  Ú	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  rh  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÷"ò "ñØØ&Ø/ØØ$á'ð ,Ò9¨zÑ9ð"�Jô "ð  ˜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Â  )rd  rr  Úiscrudrs  ÚlateralÚenclosing_aliasr(  r)  r“  r–  T)rd  r’  r   rØ   c              3  óð   •K  — | ]m  }‰j                   j                  |j                  «      ›‰j                  r4d  ‰j                  j
                  j                  |j                  fi ‰¤Žz  nd›�–— Œo y­w)ú %sr¢  N)r«  rš  r  Ú_render_derived_w_typesr³  r³  rº  r  )r;  r  r–  rÞ  r  s     €€€r  r=  z*SQLCompiler.visit_alias.<locals>.<genexpr>à  s{   øè ø€ ò ð  ð !ŸM™M×/Ñ/°·±Ô9ð $)×#@Ò#@ð	 !&Ø"M $§,¡,×"EÑ"E×"MÑ"MØ$'§H¡Hñ#"Ø06ñ#"ò!"ð
 &(ð!(ô	ñùs   ƒA3A6r’  )rŠ  rÒ  rÜ  r¸  r  r   rC   rƒ  r«  rj  r„  r)   rq  Ú_supports_derived_columnsÚ_render_derivedrˆ   r‰  Úformat_from_hint_text)r  r–  rd  rr  r‘  rs  r`  r’  r“  rÁ  rÞ  r™   Ú
alias_namerQ  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 )Nrd  Tz TABLESAMPLE z REPEATABLE (%s))rŒ  Ú_get_methodrÜ  Úseed)r  Útablesamplerd  rÔ  r½  s        r  Úvisit_tablesamplezSQLCompiler.visit_tablesample  sƒ   € àˆD×Ñ˜[Ñ<°Ð<¸Ó<Ø8ˆK×#Ñ#Ó%×8Ñ8¸ÑDÀÒDð
ˆð
 ×ÑÐ'ØÐ&Ø3�× Ñ ×3Ñ3°DÑ?¸BÑ?ññ ˆDð ˆr  c                ó–   ‡ ‡‡— ‰j                  d‰j                  «       dj                  ˆˆˆ fd„‰j                  D «       «      }d|› �S )Nr  rØ   c           	   3  ó¨   •K  — | ]I  }|D ]B  } ‰j                   t        j                  |d ‰j                  iŽj	                  «       fi ‰¤Ž–— ŒD ŒK y­w)rÉ  N)rº  r   r   Ú_column_typesr  )r;  ÚchunkÚelemrÒ  rÔ  r  s      €€€r  r=  z-SQLCompiler._render_values.<locals>.<genexpr>  sk   øè ø€ ò 	
ð Øò	
ð ð ˆ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>G  s+   øè ø€ ò "à !ð 1˜A×0Ñ0°Ñ<¸Õ<ñ"ùr˜  )rÑ  rÒ  r®  Ú_unnamedr¸  r  r   rC   rƒ  rŠ  r„  r)   rÒ  r2   rÖ  rq  r«  rš  rˆ   Úcolumns)	r  rÒ  rd  rÁ  r\  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 ra  )r®  r©  s      r  Úvisit_scalar_valueszSQLCompiler.visit_scalar_valuesQ  s%   € ØÐ&�4×&Ñ& wÑ5°"Ñ5Ð6°aÐ8Ð8r  c                ó   — d|z   S )NrÚ   r  )r  Úalias_name_texts     r  rq  z&SQLCompiler.get_render_as_alias_suffixT  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.)rE  rD  rÈ  r2   rÖ  r¦  r¢  rÿ   r  s        r  rÔ  zSQLCompiler._add_to_result_mapW  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  rW  r£   rÚ  Úcolumn_clause_argsrÔ  s         r  Ú_label_returning_columnz#SQLCompiler._label_returning_columnp  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)rm  r‡  rž  )r  r!  r³  Ú_has_column_expressionÚcolumn_expressionrÔ  r¸  r   rJ   r  r  rÒ  r˜  rG   r—  rž   Ú
TextClauseÚUnaryExpressionrB  r!   Úis_falseÚis_truerå  Ú_wraps_unnamed_columnÚNamedColumnÚ_non_anon_labelÚ_anon_name_labelrC   ry  rÜ  )r  rª   r£   rÚ  rd  r½  r  rƒ  r„  rm  Ú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  r[  rž   Úhintr‘  Úhinttexts         r  r™  z!SQLCompiler.format_from_hint_textV  s*   € Ø×*Ñ*¨5°$Ó7ˆÙØ�s˜X‘~Ñ%ˆGØˆr  c                 ó   — y r  r  )r  Úbyfromss     r  Úget_select_hint_textz SQLCompiler.get_select_hint_text\  ó   € Ør  c                 ó   — y r  r  ©r  rž   r½  s      r  rÒ  zSQLCompiler.get_from_hint_text_  s   € ð r  c                 ó   — y r  r  rÚ  s      r  Úget_crud_hint_textzSQLCompiler.get_crud_hint_textd  rØ  r  c                ó$   — dj                  |«      S r  rñ  )r  Ú
hint_textss     r  Úget_statement_hint_textz#SQLCompiler.get_statement_hint_textg  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Ð  rZ  Ú_get_display_fromsÚ
difference)r  Úselect_stmtrd  r’  rÔ  rØ  r�  r'  r#  r"  r„  s              r  Ú_display_froms_for_selectz%SQLCompiler._display_froms_for_selectq  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 objectsFrm  rŸ  rd  rŽ  r*  r)  r‡  )r‚  rm  zSELECT r.  )r  rƒ  r„  rÌ  rÍ  c              3  óB   •K  — | ]  }‰j                  ||«      –— Œ y ­wr  r1  )r;  ÚorW  s     €r  r=  z+SQLCompiler.visit_select.<locals>.<genexpr>;  s   øè ø€ Ò$F¸Q Y§]¡]°1°a×%8Ñ$Fùs   ƒrº  rÎ  )#rZ  Ú_ambiguous_table_name_mapr1  r‘  r'  rè  rÐ  r¬  Ú_setup_select_stackrU  ry  Ú_hintsÚ_setup_select_hintsrÑ  rÒ  rn  rm  Úget_select_precolumnsÚcolumns_plus_namesr¼  rÕ  r×  r¦  rÿ   r@  Ú_compose_select_bodyÚ_statement_hintsr³  r  rß  rW  r«  rÕ  ro  r‡  )&r  ræ  rd  Úinsert_intors  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Ï  rW  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÷'ò ñØØØ'ØØð# ×)Ñ)ØØØ'ØØ&ØØ)Ø(;Ø'/Ø,Cð *õ öö
àð* ˆ}ò- ð
ˆð 
ñ4 Ð#3Ð#?ô Üð +×=Ñ=÷	ò 	ñØØ&Ø/Ø Ø$ò ö	ð$ 5×GÑG÷	ò 	ñØØ&Ø/Ø Ø$ò ö	óóˆIð: .2×-AÑ-A÷	$ñ $ñ *�C˜˜s Eô #Ø˜œuÓ$FÀ#Ô$FÓFÈõõ$ˆDÔ ð ×(Ñ(ØØØØØØØØó	
ˆð ×'Ò'ð +6×*FÑ*F÷á&�\ 2Ø C¨¯©×):Ñ):Ð#;Ñ;ò ðˆKñ ñ
 Ø˜˜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)rr  )rî  rz  r³  r  rÜ  r×  )r  rª   r—  r³  rÔ  rú  rù  s          r  rï  zSQLCompiler._setup_select_hintsb  s�   € ð /5¯m©m×.AÑ.AÓ.C÷
ð 
ñ +Ñ �˜ (Ø˜3 §¡× 1Ñ 1Ð2Ñ2ð �8Ø�u×/Ñ/°¸TÐ/ÓBÐCñDñ Dð
ˆò 
ð ×-Ñ-¨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�  rd  r’  r×  r#  r"  r+  Únumcolsr„  Únew_correlate_fromsÚall_correlate_fromsrÙ  s                  r  rí  zSQLCompiler._setup_select_stackn  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)rd  rs  rÁ  ©rd  rÁ  rÁ  z 
WHERE z	 
HAVING )rˆ   rj  rx  r|  r€   ry  rÁ  Úrstriprî  rÜ  rT  Ú_where_criteriarý  rš  Ú_group_by_clausesr^  Ú_having_criteriaÚ_order_by_clausesr_  r`  ra  Ú_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à�}Š}Ø˜Ÿ	™	ð "'ö	ð ð -˜×,Ñ,Ø ðà#'Ø&,Ø(3ñ	ð
 %óò	óñ ‘ð ˜Ÿ	™	ð "'öð ð -˜×,Ñ,Ø ðà#'Ø(3ñð %ó	òó
ñ 
‘ð �D×%Ñ%Ó'Ñ'ˆDà×!Ò!Ø1�×1Ñ1Ø×&Ñ&ñØ4?ðØCIñˆAñ Ø˜ a™Ñ'�áØÐ*Ð*Ð*Ø×ÑÔà×#Ò#ØÐ(�D×(Ñ(¨Ñ:°6Ñ:Ñ:ˆDà×"Ò"Ø1�×1Ñ1Ø×'Ñ'ñØ+1ñˆAñ Ø˜ qÑ(Ñ(�à×#Ò#ØÐ(�D×(Ñ(¨Ñ:°6Ñ:Ñ:ˆDà×*Ò*ØÐ*�D×*Ñ*¨6Ñ<°VÑ<Ñ<ˆDà×!Ñ!Ð-ØÐ*�D×*Ñ*¨6Ñ<°VÑ<Ñ<ˆDàˆùòq	ùòs   ÂH
Ã
H
c                óN   ‡ ‡— dj                  ˆˆ fd„|D «       «      }|r|dz  }|S )Nr.  c              3  ó„   •K  — | ]7  \  }}|d v s|‰j                   j                  k(  r |j                  ‰fi ‰¤Ž–— Œ9 y­w))Nrº  N)r³  r  rÜ  )r;  Úprefixrü  rÔ  r  s      €€r  r=  z1SQLCompiler._generate_prefixes.<locals>.<genexpr>  sH   øè ø€ ò 
á$�˜Ø˜{Ñ*¨l¸d¿l¹l×>OÑ>OÒ.Oð &ˆF×%Ñ% dÑ1¨bÕ1ñ
ùs   ƒ=A rñ  )r  rW  r‡  rÔ  r  s   `  ` r  rm  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
 )rW  r&   r˜  r“  ÚkeysrY  ra  rb  rx   ri  Úget_cte_preamblerˆ   rº  rX  )r  rÏ  rY  rW  rY  ry  ru  rT  rb  Úis_rendered_levelrZ  Ú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Ö<°˜cŸm›mÒ<Ó=ˆà×(Ñ(¨Ó8¸3Ñ>ˆØ�F—K‘K°·±³Ö >¨¢Ò >Ó?Ñ?ˆØ�EÑˆá˜]¨QÒ.Ü˜DŸI™I›KÓ(ò E�Ø04×0FÑ0FØ×*Ñ*Ó,ñ1Ñ-�	˜8 Xð —I‘I˜c�NØ×+Ñ+¨Y¸Ð,AÐBØ×*Ñ*¨3×+AÑ+AÓ+CÑDðEð ˆùò =ùò !?s   ÃF1Ä	F6
c                ó
   — |ryy)NzWITH RECURSIVEÚWITHr  )r  ri  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_precolumnsF  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_clauseV  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_clausea  sG   € ð 1�4×0Ñ0Ø×$Ñ$¤i´	×0BÑ0BÑ&Cñ
ØGIñ
ˆñ Ø (Ñ*Ð*àr  c                 ó   — y)Nz FOR UPDATEr  r#  s      r  r  zSQLCompiler.for_update_clausem  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Ø   )rl  r   Ú_select_iterablesr¾  rˆ   )r  rW  Úreturning_colsrÚ  rÔ  r  rƒ  r„  r£   r…  r³  s              r  Úreturning_clausezSQLCompiler.returning_clausep  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  ri  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 r3  z	WITH TIESÚONLY)rg  Ú_fetch_clause_optionsr1  Ú_simple_int_clauseÚrender_literal_executerº  )
r  rª   rh  Úrequire_offsetÚ"use_literal_execute_for_simple_intrÔ  Úfetch_clause_optionsr½  Úoffset_clauseÚ
offset_strs
             r  rh  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ƒ  rq  rj  r™  )r  rž   rd  r‘  rr  rs  Ú
use_schemarÁ  rŸ  r“  rÞ  r¢  rQ  Ú	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…  ry  r¸  rÄ  r)   r‰   r*   r�   r†   ÚisouterrÜ  Úonclause)r  rˆ   rd  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î  rz  r³  r  rž   r™  )r  rW  Ú
table_textrž   r³  rù  Údialect_hintss          r  Ú_setup_crud_hintszSQLCompiler._setup_crud_hints  sž   € ð 04¯{©{×/@Ñ/@Ó/B÷
ð 
á+Ñ �˜ )Ø˜3 §¡× 1Ñ 1Ð2Ñ2ð �9Ñð
ˆò 
ð
 �:‰:˜Ñ&Ø×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_tableB  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<  rR  r  s      €€r  Úapply_placeholderszISQLCompiler._deliver_insertmanyvalues_batches.<locals>.apply_placeholders  sl   ø€ Øò �CØ,×0Ñ0°°cÓ:�CØ )× 1Ñ 1Ø×)Ñ)¨V°S¨MÑ9Ø×)Ñ)Ø! c UÐ*<Ð#=Ð>ñ?ó!‘Iðð !Ð r  z, _IMV_VALUES_COUNTERr¢  rØ   c              3  ó:   •K  — | ]  \  }}}} ‰||«      –— Œ y ­wr  r  )r;  r&  r^  Ú	bind_keysr_  s       €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>  s(   øè ø€ ò 6á.�A�q˜) Yñ # 9¨i×8ñ6ùrÿ  c              3  óZ   •K  — | ]"  \  }}}}|D ]  }‰j                  ||«      –— Œ Œ$ y ­wr  r1  )r;  r&  ra  r<  rR  s       €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>!  sC   øè ø€ ò 4á&�A�q˜!˜YØ$ò4ð ð #×&Ñ& s¨C×0ð4Ø0ñ4ùó   ƒ(+z, _IMV_VALUES_COUNTER), z), r  z\d+r   c              3  óH   •K  — | ]  }‰D ]  \  }}}|› d |› �||f–— Œ Œ y­w)r&  Nr  )r;  r€  r<  Úlen_ré  Úgeneric_setinputsizess        €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>g  sF   øè ø€ ò /à!Ø.Cò/ñ +˜C  sð  ˜5  % Ð)¨4°Ô5ð/Ø5ñ/ùrƒ  r  c              3  ó(   •K  — | ]	  }|‰‰ –— Œ y ­wr  r  )r;  r  Úexpand_pos_lower_indexÚexpand_pos_upper_indexs     €€r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>|  s"   øè ø€ ò &àð Ð0Ð1GÔHñ&ùs   ƒc              3  óZ   •K  — | ]"  \  }}‰j                  d t        |«      «      –— Œ$ y­w)Ú_IMV_VALUES_COUNTERN)r»  r   )r;  rù  r&  Úexecutemany_values_w_commas      €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>ƒ  s3   øè ø€ ò  ñ !%  1ð 7×>Ñ>Ø 5´s¸1³v÷ñ ùrc  éþÿÿÿc              3  ó>   •K  — | ]  }‰j                   › |› �–— Œ y ­wr  )rB  )r;  rù  r  s     €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>   s)   øè ø€ ò &àð  ×>Ñ>Ð?À¸sÔCñ&ùr±  ÚEXECMANY_INDEX__rk  Ú__)3rN  rR  rB  rO  r«  rH  r³  Úsupports_default_metavalueÚsupports_multivalues_insertr¦  rP  rN  rø  r   r×  rV  Ú	functoolsÚpartialr«  r»  rI  r»  Úinsertmanyvalues_max_parametersr<  rJ  Úminr“  rd  rR  r€   rT  rˆ   r$  rå  ry  r6  r@  rG  r_  r`  rB  r©  ÚrangerL  r@  r¸  r¹  Úfrom_iterablerU  r   r¢  )Er  r1  r2  Úcompiled_parametersrf  Ú
batch_sizerM  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_batchesrZ  r_  rJ  r  r<  r  ÚstÚall_keysÚimv_values_counterÚformatted_values_clauseÚkeys_to_replaceÚbase_parametersÚall_names_we_will_expandr©  r6  rP  r  Úall_expand_positionsÚescapedr[  Úcompiled_batchr]  Únew_keyre  ré  Únum_ins_paramsÚextra_params_leftÚextra_params_rightÚbatch_iteratorÚexpanded_values_stringrŽ  rz   r¦  rW  rX  Úreplaced_values_clausesrù  Úfmvr^  r_  rR  rl  rh  ri  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ñ /¨~Ó>Ñ?ààØØØ+Øóó ðð. áÜ×#Ñ#Ø—‘×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ð $×.Ñ.¨Ó?öàð �Z ‘] 3Ñ'Ñ'ðˆOð ð *,Ñ&à&(Ð#Ü!›eˆOØ ˆOà×'Ò'àÐ.Ð/Ð/GÐHñ +ð 01Ð1GÐ0HÈÐ-LÐ*ä14³Ð$Ø×.Ñ.ò 9�Ø(×/Ñ/°°Q±Õ8ð9ñ (Ø"×.Ñ.�Ø"Ð.Ð.Ð.ô &/¨{Ó%;÷(á!˜˜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°s˜C˜5  1 #˜¨¨c©
Ñ2ÒNõð
ð &/×%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  }�nf|d|z  z  }�n\|	s\|rZ|dz  }|�rPti        d‰ j                  jj                  |	||j4                  |jl                  d u||rt        |«      nd|¬«	      ‰ _7        �nþ|j,                  r*|ddjI                  d„ |jp                  D «       «      ›�z  }�nÈ|�r–|�r!‰ j                  jP                  tR        jr                  z  rú|jt                  sîd}‰ j                  jP                  tR        jv                  z  }|xs dŠ&djI                  |	D ���cg c]  \  }}}}|‰&vr|‘Œ c}}}«      } djI                  ˆ&fd„ty        |	«      D «       «      }!|r%djI                  ˆ&ˆ fd„ty        |	«      D «       «      }"n#djI                  ˆ&fd„ty        |	«      D «       «      }"|	D �#cg c]  }#|#d   ‰&vr|#‘Œ }$}#|d|"› d| › d |!› d!�z  }n3d}|	}$djI                  |	D ��cg c]	  \  }}}}|‘Œ c}}«      } |d"| › d#�z  }ti        d| |$||j4                  |jl                  d u||rt        |«      nd|||¬$«      ‰ _7        n/djI                  |	D ��cg c]	  \  }}}}|‘Œ c}}«      } |d"| › d#�z  }|jl                  �' ‰ j`                  |jl                  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 c c}#w c c}}w c c}}w )%Nr\  FTrÍ  r   rP  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.zdRETURNING cannot be deterministically 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ô  rX  r•  z DEFAULT VALUES)rM  rN  rP  rQ  rS  z VALUES c              3  óR   K  — | ]  }d dj                  d„ |D «       «      z  –— Œ! y­w)r   rØ   c              3  ó*   K  — | ]  \  }}}}|–— Œ y ­wr  r  )r;  r&  rË  s      r  r=  z5SQLCompiler.visit_insert.<locals>.<genexpr>.<genexpr>Ñ  s   è ø€ Ò L©>¨1¨a°¸¤Ñ Lùs   ‚Nrñ  )r;  Úcrud_param_sets     r  r=  z+SQLCompiler.visit_insert.<locals>.<genexpr>Ï  s2   è ø€ ò ð 'ð Ø—y‘yÑ L¸^Ô LÓLõNñùs   ‚%'r  c              3  ó<   •K  — | ]  \  }}|d    ‰vrd|› �–— Œ y­w)r   ÚpNr  )r;  rù  ÚcpÚadd_sentinel_sets      €r  r=  z+SQLCompiler.visit_insert.<locals>.<genexpr>õ  s0   øè ø€ ò %á˜˜2Ø˜!‘uÐ$4Ñ4ð ˜�s”Gñ%ùr>  c              3  óÀ   •K  — | ]U  \  }\  }}}}|‰vrC‰j                  |j                  |j                  j                  ‰j                  «      d |› �«      n|–— ŒW y­w©r¥  N)r¶  r  rç  r³  )r;  rù  r  r&  r  r§  r  s        €€r  r=  z+SQLCompiler.visit_insert.<locals>.<genexpr>  sn   øè ø€ ò 0ñ 1˜AÑ0  Q¨¨að  #Ð*:Ñ:ð !×1Ñ1Ø #§¡Ø #§¡× @Ñ @ÀÇÁÓ NØ"# A 3 ôð "&ó&ñ0ùs   ƒAAc              3  óD   •K  — | ]  \  }\  }}}}|‰vrd |› �n|–— Œ y­wr©  r  )r;  rù  r  r&  r  r§  s        €r  r=  z+SQLCompiler.visit_insert.<locals>.<genexpr>  s9   øè ø€ ò 0á0˜AÑ0  Q¨¨að %(Ð/?Ñ$?˜1˜Q˜C™ÀTÓIñ0ùr˜  z SELECT z FROM (VALUES (z)) AS imp_sen(z#, sen_counter) ORDER BY sen_counterz	 VALUES (r)  )rH  rI  rJ  rL  rM  rN  rP  rQ  rR  rS  rT  )>rZ  r1  r‘  r3  r­  r'  r¢  r€   rd  r   Ú_get_crud_paramsr«  rG  rT  Úsingle_paramsr³  Úsupports_default_valuesrq  Úsupports_empty_insertr2   rÖ  r  Ú_has_multi_parametersrr  r9  Ú
_returningÚ_sort_by_parameter_orderr«  rn  rm  Úformat_tablerž   rî  rK  rÑ  rÒ  rˆ   Úuse_insertmanyvaluesÚuse_sentinel_columnsr.  rM  rc  rl  Ú_insert_sentinelr“  r.  r=  rª   rº  rW  Úcte_follows_insertrÕ  rG  Údefault_metavalue_tokenÚ_post_values_clauserN  Úall_multi_paramsrn  Úis_default_metavalue_onlyro  rø  r‡  )'r  Úinsert_stmtrP  r\  rÔ  r'  rØ  Úcounted_bindparamÚcrud_params_structÚcrud_params_singler«  r­  r½  rI  r&  r  r³  Únamed_sentinel_paramsÚadd_sentinel_colsrS  r-  r  Úparam_namesÚ_params_by_colÚ_add_sentinel_colÚ
param_namer.  Úselect_textrÏ  Úembed_sentinel_valueÚrender_bind_castsrË  r†  ÚcolnamesÚcolnames_w_castr©  rJ  Úpost_values_clauser§  s'   `                                     @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÷"ð "á.˜˜Q  ;ð ˜Ñ$ð"�ò "ð )+Ð%Ø):ò 
=Ð%Ø(°Ñ>Ø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Ø&Ø%à#×<Ñ<ð $×7Ñ7¸tÐCà%6á2CœÐ-Ô.Èà&7ô*�Ö&ð" ×0Ò0ÙØ—	‘	ñ ð +=×*MÑ*Môô ðñ ŠDò "â!à—L‘L×CÑCÜ2×IÑIòJð
 ,×EÒEð (,Ð$ð —L‘L×CÑCÜ2×JÑJñKð "ð
 $5Ò#:¸Ð à,0¯I©Ið 1C÷ð á,˜C  E¨1ØÐ&6Ñ6ò ôó-Ð)ð  Ÿ9™9ó %ä!*Ð+=Ó!>ô%ó �ñ %ð '+§i¡iô 0ô 5>Ø.ó5ô0ó '‘Oð '+§i¡ió 0ä4=Ø.ó5ô0ó '�Oð !3ö&àØ˜A‘wÐ&6Ñ6ò ð&Ð"ð &ð Ø˜Ð/ð 0 Ø 9Ð:ð ;"Ø"* ð ,+ð+ñ‘ð (-Ð$Ø%7Ð"Ø,0¯I©IØ1C×D™~˜q ! U¨A’UÓDó-Ð)ð ˜)Ð$=Ð#>¸aÐ@Ñ@�ä%6Ø %Ø#<Ø#5Ø.?Ø)4×)MÑ)Mà×3Ñ3¸4Ð?à!2á.?”CÐ)Ô*ÀQà$9Ø"3Ø%9ô&ˆDÕ"ð& )-¯	©	Ø-?×@™>˜1˜a ¨’Ó@ó)Ð%ð �iÐ 9Ð:¸!Ð<Ñ<ˆDà×*Ñ*Ð6Ø!- §¡Ø×/Ñ/ñ"Ø35ñ"Ðñ "Ø˜Ð0Ñ0Ñ0�á D×$BÒ$BØ�CÐ*Ñ*Ñ*ˆDà�9Š9˜TŸ\™\×<Ò<Ù3;œC §
¡
œOÀˆMà×'Ñ'Ø"/Ø,0ð (ó ð ñ	ð ð 	�
‰
�‰�rÔàˆùó] ?ùô0"ùôHùòV&ùó& Eùó2 As$   Ë<_Í_×_$Ù_+Ú_0
Ü_6
c                 ó   — y)z3Provide a hook for MySQL to add LIMIT to the UPDATENr  )r  Úupdate_stmts     r  Úupdate_limit_clausezSQLCompiler.update_limit_clauseb  ó   € àr  c                 ó   — y)z3Provide a hook for MySQL to add LIMIT to the DELETENr  )r  Údelete_stmts     r  Údelete_limit_clausezSQLCompiler.delete_limit_clausef  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.

        Trd  r‘  rÛ  )r  rÍ  Ú
from_tableÚextra_fromsrÔ  s        r  Úupdate_tables_clausez SQLCompiler.update_tables_clausej  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_clauset  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 )Nr\  FTrÍ  zUPDATE rÁ  z SET rØ   c              3  ó6   K  — | ]  \  }}}}|d z   |z   –— Œ y­w)ú=Nr  )r;  r&  r  rË  s       r  r=  z+SQLCompiler.visit_update.<locals>.<genexpr>Û  s)   è ø€ ò 
á!��4˜ ð �3‰J˜Õñ
ùs   ‚zList[Tuple[Any, str, str, Any]]r.  r   ú WHERE rÎ  ÚUPDATE©r™  rŽ  ).rZ  r   r¸  rA   r1  r‘  r4  r­  r'  rj  rx  r|  r€   ry  rÁ  Ú_extra_fromsr(  r*   rž   rŸ   r¢  rn  rm  rÖ  r   r«  r¬  rî  rK  rÑ  rÒ  rˆ   r   r9  r°  r=  r.  rÚ  r  rý  rÎ  rW  r«  rÕ  rš  r‡  )r  rÍ  r\  rÔ  r'  rØ  rÁ  r  rÕ  Úis_multitableÚ
main_fromsr  Úrender_extra_fromsr#  r½  rI  r½  Úcrud_paramsrJ  Úextra_from_textr  ri  rÏ  s                          r  Úvisit_updatezSQLCompiler.visit_update‚  sb  € ð ;˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆõ Ü˜m¬^Ô<Ð<Ð<Ø#×-Ñ-ˆàÐ#Ø!-ˆBˆ~ÑØ‰HàŸ:™:�~ˆHáØ ˆDŒMØ×)Ò)Ø)6�Ô&Ø×%Ò%Ø%2�Ô"à�<‰<Ô4Ò4Ü$ R¬«Ó/ˆKØŸ<™<¬,Ñ6ˆLÙØ#.�Õ àˆKØ ˆLà#×0Ñ0ˆÜ˜[Ó)ˆáäœ]¨;×+<Ñ+<Ó=Ó>ˆJà&ö"Ø¨!°:Ò*=’ð"Ðð "ð )×.Ñ.¨{Ó;‰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)rd  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)Nr\  FTrÍ  zDELETE úFROM )rÁ  r.  r   rÁ  rÞ  rÎ  ÚDELETErà  rŽ  )(rZ  r1  r‘  r2  r­  r'  rj  rx  r|  r€   ry  rÁ  rá  rž   rŸ   r¢  rn  rm  rì  Ú	TypeErrorrº  r   r«  rî  rK  rÑ  rÒ  r9  r°  r=  r.  rê  r  rý  rÒ  rW  r«  rÕ  rš  r‡  )r  rÑ  r\  rÔ  r'  rØ  rÁ  r  rÕ  r#  r½  rI  r&  rJ  ræ  r  ri  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³  rm   r1  r¡  r¯  r®  rh  r5  ri  r(  rj  rv  r~  zOptional[SQLCompiler]rÞ  r   )r  rJ  )r  r8  )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  r0  )NNTNTF)rã  rï  rä  rð  rå  r(  rÛ  úOptional[int]rÜ  r(  rf  r(  r  rl   ©F)r2  rl   rg  r(  r  r0  )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   )r4  úFunction[Any]r‡  rÿ  rÞ  r   r  r   )r4  r   rÞ  r   r  r   )FN©Nr  )NFNN)
r¢   úBinaryExpression[Any]r  r   rÅ  r(  rÔ  r   r  r   )r¢   r  rB  r   rÔ  r   r  r   )FFFFF)rË  r   r  zsqltypes.TypeEngine[Any]r  r   )rB  r   r  rC   r  r   )r  r   r  r   )FFNNNN)r  r   r  r(  r  r(  rN  rJ  r   zOptional[TypeEngine[Any]]rO  zOptional[Set[str]]rP  rL  rÔ  r   r  r   )rY  rZ   rd  r(  rr  r(  rs  zOptional[_FromHintsType]r\  úOptional[CTE]rÁ  zOptional[FromLinter]rT  zselectable._CTEOptsrÞ  r   r  rJ  )FFFNFFNN)FNN)
r  r   r  r   r  r  r  r  r  r  )NNNTFFT)rž   r[   r½  rJ  r  rJ  )FFNNNFN)rª   r,  r  zTuple[str, _FromHintsType])rª   r,  rÔ  r   r  r   ©
rW  r@   r-  zSequence[_ColumnsClauseElement]rÚ  r(  rÔ  r   r  r   )NFF)FFFNTNNN)rž   rU   r  rO  )r1  r   r2  rh   ry  z%List[_MutableCoreSingleExecuteParams]rf  rY  rz  rK  rM  r(  r¨  r§  r  z Iterator[_InsertManyValuesBatch]r~  )rÍ  r?   r\  r  rÔ  r   r  r   )úr  r	  r
  r  ÚEXTRACT_MAPr9  r&   rô  r/  r  rñ  ÚCOMPOUND_KEYWORDSr[  r2  r3  r4  r6  r7  r9  r:  r=  r>  r?  rC  rD  rE  rF  rG  rH  rI  rK  rM  rN  rO  Ú	frozensetrP  rQ  ró  rR  r'  Úpostfetch_lastrowidrS  r6  rT  rU  rV  r_  ra  r  r¼  Úpatternrª  rõ  rÁ  r]  rw  r¿  rE  r†  Úro_memoized_propertyrŠ  rŒ  r‘  r”  Úmemoized_propertyr–  Úmemoized_instancemethodr™  Ú
contextlibÚcontextmanagerrž  r|  r{  rÌ  rÎ  rÙ  rÑ  ræ  rò  rã  r}  Úpreload_moduler)  r.  rI  rR  rT  r_  re  rh  ry  r  rŒ  r�  r”  r¥  rª  r®  r°  rµ  r¾  r™  rË  rÛ  rà  ræ  ré  ró  rý  r  r  r  r  r  r  r%  r/  r2  r7  r<  rB  r>  rP  rM  rJ  re  ra  r
  rt  r|  r  r„  r‡  rŒ  r�  r›  r™  r²  r  rŠ  rÈ  rÊ  rÌ  rÎ  rÐ  rŽ  rr  rs  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ƒ  rI  rÄ  rÒ  r$   Ú_CTEOptsrh  r�  r�  rŒ  r�  r‹  r¤  r®  r´  r¶  rq  rÔ  r¾  r¼  r™  r×  rÒ  rÜ  rß  Útypingr   rÐ  rç  rè  rÿ  rï  rí  rò  rm  rÕ  r  rð  r^  r_  r  r.  ri  rh  rA  rG  rK  r,   Ú
CLIENTSIDErc  rm  ÚSENTINEL_DEFAULTÚNONErj  rk  rR  rŸ   ri  rP  rX  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ôEòNòò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�   r{  s       r  Úvisit_getitem_binaryz#StrSQLCompiler.visit_getitem_binaryá  s:   € àˆD�L‰L˜Ÿ™Ñ+¨Ó+ØˆD�L‰L˜Ÿ™Ñ,¨Ó,ð
ð 	
r  c                ó*   —  | j                   ||fi |¤ŽS r  ©r!  r{  s       r  Úvisit_json_getitem_op_binaryz+StrSQLCompiler.visit_json_getitem_op_binaryç  ó   € Ø(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@r  c                ó*   —  | j                   ||fi |¤ŽS r  r#  r{  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_sequencerS  s      r  rM  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  rW  r-  rÚ  rÔ  r‰  r³  s          r  r.  zStrSQLCompiler.returning_clauseò  sZ   € ô ×+Ñ+¨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 )NTrd  rî  rØ   c              3  óH   •K  — | ]  } |j                   ‰fd ‰i‰¤Ž–— Œ y­w©rs  NrÛ  ©r;  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 )NTrd  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Ž  r{  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> r5  r{  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�   r{  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'  rM  r.  rÚ  rê  r™  rÒ  r  r  r  r9  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                  óv  — e Zd ZdZer	 	 	 d7	 	 	 	 	 	 	 	 	 d8d„Zej                  d9d„«       Zej                  d„ «       Z
	 	 	 d:	 	 	 	 	 	 	 d;d„Zd„ Zd„ Zd	„ Zd
„ Zd<d„Z	 d=d„Zd„ Zd„ Zd>d„Z	 d?d„Zd„ Z	 d<	 	 	 	 	 d@d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdAd„Zd=d„Z d„ Z!d„ Z"d„ Z#d„ Z$d „ Z%dBd!„Z&dCd"„Z'd#„ Z(d$„ Z)d%„ Z*	 	 	 	 	 	 dDd&„Z+	 	 	 	 	 	 dEd'„Z,d(„ Z-	 	 	 	 	 	 dFd)„Z.	 	 	 	 	 	 dGd*„Z/	 	 	 	 	 	 dDd+„Z0	 	 	 	 	 	 dEd,„Z1	 	 	 	 	 	 dFd-„Z2dHd.„Z3	 	 	 	 	 	 dFd/„Z4	 	 	 	 dId0„Z5	 	 	 	 dId1„Z6	 	 	 	 dId2„Z7dJd3„Z8dId4„Z9d5„ Z:d6„ Z;y)KÚDDLCompilerTc                 ó   — y r  r  r¼  s         r  r¿  zDDLCompiler.__init__0  s   € ð r  c                óf   — | j                   j                  | j                   d | j                  ¬«      S )NrZ  )r³  r  r¨  rA  s    r  rÙ  zDDLCompiler.sql_compiler9  s/   € à�|‰|×.Ñ.Ø�L‰L˜$°T×5NÑ5Nð /ó 
ð 	
r  c                ó.   — | j                   j                  S r  )r³  r³  rA  s    r  Útype_compilerzDDLCompiler.type_compiler?  s   € à�|‰|×2Ñ2Ð2r  Nc                 ó   — y r  r  râ  s       r  ræ  zDDLCompiler.construct_paramsC  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#   rU   rU  r«  Úformat_table_seqr«  r«  r²  rÙ  r¾  r1  )r  ÚddlrÞ  rB  r«  Úpathrž   Úschs           r  Ú	visit_ddlzDDLCompiler.visit_ddlK  sÍ   € à—+‘+ˆÜ�c—j‘j¤&§,¡,Ô/Ø—l‘l“nˆGà—}‘}ˆHØ×,Ñ,¨S¯Z©ZÓ8ˆDÜ�4‹y˜AŠ~Ø! !™W b�s‘à! "™X t¨A¡w�s�à×Ñ˜w¨Ô.Ø×Ñ˜x¨Ô-Ø×Ñ˜z¨8×+@Ñ+@ÀÇÁÓ+LÔMà× Ñ ×2Ñ2°3·=±=À7Ñ3JÓKÐKr  c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )NzCREATE SCHEMA úIF NOT EXISTS )Úif_not_existsr«  Úformat_schemarÒ  )r  r¤   rÔ  r½  s       r  Úvisit_create_schemazDDLCompiler.visit_create_schema^  s9   € ØˆØ×ÒØÐ$Ñ$ˆDØ�d—m‘m×1Ñ1°&·.±.ÓAÑAÐAr  c                óž   — d}|j                   r|dz  }|| j                  j                  |j                  «      z  }|j                  r|dz  }|S )NzDROP SCHEMA ú
IF EXISTS ú CASCADE)Ú	if_existsr«  rL  rÒ  Úcascade©r  ÚdroprÔ  r½  s       r  Úvisit_drop_schemazDDLCompiler.visit_drop_schemad  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 rJ  r(  ú
F©Úfirst_pkr  ú	Tz(in table 'z', column 'z'): r   )Ú _include_foreign_key_constraintsz
)%s

)rÒ  r«  rn  rˆ   rK  r²  Úcreate_table_suffixr³  rº  rA  r2   rÖ  Údescriptionr  ÚargsÚcreate_table_constraintsÚinclude_foreign_key_constraintsÚpost_create_table)r  r¤   rÔ  rž   r«  r½  r\  rò  rY  Úcreate_columnr£   Ú	processedÚceÚconsts                 r  Úvisit_create_tablezDDLCompiler.visit_create_tablem  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 )NrX  r.  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr  )rº  ©r;  rÁ   r  s     €r  r=  z2DDLCompiler.visit_create_column.<locals>.<genexpr>¨  s   øè ø€ ò 
Ø)3ˆD�L‰L˜×$ñ
ùs   ƒ)rÒ  ÚsystemÚget_column_specificationrˆ   Úconstraints)r  r¤   rY  rÔ  r£   r½  re  s   `      r  Úvisit_create_columnzDDLCompiler.visit_create_column¡  sd   ø€ Ø—‘ˆà�=Š=Øà×,Ñ,¨V¸hÐ,ÓGˆØ—‘ó 
Ø7=×7IÑ7Iô
ó 
ˆñ Ø�C˜%‘KÑˆDàˆr  c                ól  ‡ — g }|j                   r|j                  |j                   «       |j                  }|�|j                  |«      }n
t	        «       }|j                  |j                  D �cg c]  }||j                   ur||vr|‘Œ c}«       dj                  d„ ˆ fd„|D «       D «       «      S c c}w )Nz, 
	c              3  ó$   K  — | ]  }|�|–— Œ
 y ­wr  r  )r;  r¥  s     r  r=  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>Ç  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_alterrD  rº  ri  s     €r  r=  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>É  sI   øè ø€ ò àØ×:Ñ:¸4Ô@àŸ™×3Ò3Ü" :¨{¸EÔBð —‘˜Z×(ñùrª  )rA  r¢  Úforeign_key_constraintsrå  r€   r  Ú_sorted_constraintsrˆ   )r  rž   r[  rÔ  rl  Úall_fkcsÚ	omit_fkcsr‰  s   `       r  r_  z$DDLCompiler.create_table_constraints°  sÀ   ø€ ð
 ˆØ×ÒØ×Ñ˜u×0Ñ0Ô1à×0Ñ0ˆØ+Ð7Ø ×+Ñ+Ð,LÓM‰Iä›ˆIà×Ñð ×2Ñ2öàØ˜E×-Ñ-Ñ-°!¸9Ñ2Dò òô	
ð �}‰}ñ 
óà"-ôô
ó 
ð 	
ùòs   Á.B1c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )Nz
DROP TABLE rO  )rQ  r«  r²  rÒ  rS  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  rT  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 rJ  ©Úinclude_schemarC  ©r?  r°  rØ   c              3  óZ   •K  — | ]"  }‰j                   j                  |d d¬«      –— Œ$ y­w)FT©rž  r  N)rÙ  rº  )r;  r  r  s     €r  r=  z1DDLCompiler.visit_create_index.<locals>.<genexpr>û  s8   øè ø€ ò ð ð ×!Ñ!×)Ñ)Ø¨¸Tð *÷ ñùrc  r)  )rÒ  r  r«  r«   r  r2   rÖ  rK  Ú_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 rO  Tr‚  )rÒ  r  r2   rÖ  rQ  r‡  )r  rT  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 NULLr{  r|  s      r  Úvisit_drop_table_commentz$DDLCompiler.visit_drop_table_comment1  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_comment6  sZ   � à�M‰M×'Ñ'Ø—‘¨$¸4ð (õ ð ×Ñ×2Ñ2Ø—‘×&Ñ&¬¯©Ó(9ôð	
ð 	
r  c                óV   — d| j                   j                  |j                  d¬«      z  S )NzCOMMENT ON COLUMN %s IS NULLT)r�  )r«  rž  rÒ  r|  s      r  Úvisit_drop_column_commentz%DDLCompiler.visit_drop_column_comment@  s/   € Ø-°·±×0KÑ0KØ�L‰L Dð 1Ló 1
ñ 
ð 	
r  c                ó@   — t        j                  | t        |«      «      ‚r  rÏ  r”  s      r  Úvisit_set_constraint_commentz(DDLCompiler.visit_set_constraint_commentE  s   € Ü×-Ñ-¨d´D¸³LÓAÐAr  c                ó@   — t        j                  | t        |«      «      ‚r  rÏ  r|  s      r  Úvisit_drop_constraint_commentz)DDLCompiler.visit_drop_constraint_commentH  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_optionsK  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 rJ  r.  )rK  r«  r*  rÒ  r°  )r  r¤   r  rÔ  r½  Úoptionss         r  Úvisit_create_sequencez!DDLCompiler.visit_create_sequence_  sn   € Ø!ˆØ×ÒØÐ$Ñ$ˆDØ�—‘×-Ñ-¨f¯n©nÓ=Ñ=ˆáØ�F‰NˆDØ×+Ñ+¨F¯N©NÓ;ˆÙØ�C˜'‘MÑ!ˆDØˆr  c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )NzDROP SEQUENCE rO  )rQ  r«  r*  rÒ  rS  s       r  Úvisit_drop_sequencezDDLCompiler.visit_drop_sequencel  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 rO  r¢  rP  )
rÒ  r  r«  Úformat_constraintr2   rÖ  r²  rž   rQ  rR  )r  rT  rÔ  rÁ   Úformatted_names        r  Úvisit_drop_constraintz!DDLCompiler.visit_drop_constraintr  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  rk  z$DDLCompiler.get_column_specification…  s÷   € à�M‰M×'Ñ'¨Ó/Øñà�l‰l×1Ñ1×9Ñ9Ø—‘¨Vð :ó ñð 	ð ×0Ñ0°Ó8ˆØÐØ�{ WÑ,Ñ,ˆGà�?‰?Ð&Ø�s˜TŸ\™\¨&¯/©/Ó:Ñ:Ñ:ˆGð �O‰OÐ'Ø—‘×6Ò6à�s˜TŸ\™\¨&¯/©/Ó:Ñ:Ñ:ˆGà�ŠØ—’ t§|¡|×'MÒ'Mà�{Ñ"ˆGØˆr  c                 ó   — y©Nr¢  r  ©r  rž   s     r  r\  zDDLCompiler.create_table_suffix   ó   € Ør  c                 ó   — yrÂ  r  rÃ  s     r  ra  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                ó€   —  | j                   |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S r  ©Údefine_constraint_preambleÚdefine_check_bodyÚdefine_constraint_deferrability©r  rÁ   rÔ  r½  s       r  rÏ  z"DDLCompiler.visit_check_constraintº  óP   € Ø.ˆt×.Ñ.¨zÑ@¸RÑ@ˆØÐ&�×&Ñ& zÑ8°RÑ8Ñ8ˆØ�×4Ñ4°ZÓ@Ñ@ˆØˆr  c                ó€   —  | j                   |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S r  rÓ  r×  s       r  rÎ  z)DDLCompiler.visit_column_check_constraintÀ  rØ  r  c                óž   — t        |«      dk(  ry | j                  |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S ©Nr   r¢  )r«  rÔ  Údefine_primary_key_bodyrÖ  r×  s       r  Úvisit_primary_key_constraintz(DDLCompiler.visit_primary_key_constraintÆ  sa   € ô ˆz‹?˜aÒØØ.ˆt×.Ñ.¨zÑ@¸RÑ@ˆØÐ,�×,Ñ,¨ZÑ>¸2Ñ>Ñ>ˆØ�×4Ñ4°ZÓ@Ñ@ˆØˆr  c                óÐ   —  | j                   |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|| j                  |«      z  }|| j	                  |«      z  }|S r  )rÔ  Údefine_foreign_key_bodyÚdefine_constraint_matchÚdefine_constraint_cascadesrÖ  r×  s       r  Úvisit_foreign_key_constraintz(DDLCompiler.visit_foreign_key_constraintÐ  s|   € ð /ˆt×.Ñ.¨zÑ@¸RÑ@ˆØÐ,�×,Ñ,¨ZÑ>¸2Ñ>Ñ>ˆØ�×,Ñ,¨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  Údefine_constraint_remote_tablez*DDLCompiler.define_constraint_remote_tableÚ  s   € ð ×$Ñ$ UÓ+Ð+r  c                óž   — t        |«      dk(  ry | j                  |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S rÛ  )r«  rÔ  Údefine_unique_bodyrÖ  r×  s       r  Úvisit_unique_constraintz#DDLCompiler.visit_unique_constraintß  sa   € ô ˆz‹?˜aÒØØ.ˆt×.Ñ.¨zÑ@¸RÑ@ˆØÐ'�×'Ñ'¨
Ñ9°bÑ9Ñ9ˆØ�×4Ñ4°ZÓ@Ñ@ˆØˆr  c                ól   — d}|j                   �%| j                  j                  |«      }|�|d|z  z  }|S )Nr¢  zCONSTRAINT %s )r  r«  r·  )r  rÁ   rÔ  r½  r¸  s        r  rÔ  z&DDLCompiler.define_constraint_preambleé  sB   € ð ˆØ�?‰?Ð&Ø!Ÿ]™]×<Ñ<¸ZÓHˆNØÐ)ØÐ(¨>Ñ9Ñ9�Øˆr  c                óš   ‡ — d}|dz  }|ddj                  ˆ fd„|j                  r|j                  n|j                  D «       «      z  z  }|S )Nr¢  zPRIMARY KEY r   rØ   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  ©r«  rš  r  ©r;  r‰  r  s     €r  r=  z6DDLCompiler.define_primary_key_body.<locals>.<genexpr>ø  s,   øè ø€ ò #
àð �M‰M×Ñ §¡×'ñ#
ùó   ƒ/2)rˆ   Ú_implicit_generatedÚcolumns_autoinc_firstr³  r×  s   `   r  rÜ  z#DDLCompiler.define_primary_key_bodyó  s`   ø€ ð ˆØ�ÑˆØ�˜Ÿ™ó #
ð ×1Ò1ð ×0Ò0à×'Ñ'ô#
ó 
ñ 
ñ 	
ˆð ˆr  c           	     ó:  ‡— | j                   Št        |j                  «      d   j                  j                  }ddj                  ˆfd„|j                  D «       «      ›d| j                  ||‰«      ›ddj                  ˆfd„|j                  D «       «      ›d�}|S )	Nr   zFOREIGN KEY(rØ   c              3  óh   •K  — | ])  }‰j                  |j                  j                  «      –— Œ+ y ­wr  )rš  Úparentr  ©r;  r  r«  s     €r  r=  z6DDLCompiler.define_foreign_key_body.<locals>.<genexpr>  ó'   øè ø€ ò Ø23�—‘˜qŸx™xŸ}™}×-ñùrí  z) REFERENCES r°  c              3  óh   •K  — | ])  }‰j                  |j                  j                  «      –— Œ+ y ­wr  )rš  r£   r  ró  s     €r  r=  z6DDLCompiler.define_foreign_key_body.<locals>.<genexpr>  rô  rí  r)  )r«  r“  r   r£   rž   rˆ   rä  )r  rÁ   rÔ  Úremote_tabler½  r«  s        @r  rß  z#DDLCompiler.define_foreign_key_body  s”   ø€ ð —=‘=ˆÜ˜J×/Ñ/Ó0°Ñ3×:Ñ:×@Ñ@‰à�I‰Ió Ø7A×7JÑ7Jôõ ð ×/Ñ/Ø˜L¨(õð �I‰Ió Ø7A×7JÑ7Jôõ ð

ˆð ˆr  c                ól   ‡ — d ‰ j                   |fi |¤Ž›ddj                  ˆ fd„|D «       «      ›d�}|S )Nr�  r(  rØ   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  rë  rì  s     €r  r=  z1DDLCompiler.define_unique_body.<locals>.<genexpr>  s$   øè ø€ ÒF°a�d—m‘m×)Ñ)¨!¯&©&×1ÑFùrí  r)  )Ú!define_unique_constraint_distinctrˆ   r×  s   `   r  ræ  zDDLCompiler.define_unique_body  s:   ø� ð 3ˆD×2Ñ2°:ÑDÀÓDØ�I‰IÓF¸:ÔFÕFð
ˆð ˆr  c                ó\   — d| j                   j                  |j                  dd¬«      z  }|S )Nz
CHECK (%s)FTr†  )rÙ  rº  r[  r×  s       r  rÕ  zDDLCompiler.define_check_body  s8   € Ø˜d×/Ñ/×7Ñ7Ø×Ñ¨eÀ4ð 8ó 
ñ 
ˆð ˆ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_cascade3  ó-   € ð  §¡×!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_deferrabilityA  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_matchN  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º  r[  Ú	persisted)r  Ú	generatedrÔ  r½  s       r  Úvisit_computed_columnz!DDLCompiler.visit_computed_columnT  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³  rm   r1  r=   r¨  r§  r½  r(  r¾  ré  rê  rí  rî  rý  r  )r€  rS   r  r  )FT)r€  rS   rƒ  r(  r  r   )r¯  rR   r  r   )r£   zColumn[Any]r  rJ  )r°   zUnion[Visitable, str]r  r   )rÁ   rT   rÔ  r   r  r   )rÁ   rQ   rÔ  r   r  r   )rÁ   rV   rÔ  r   r  r   )rÁ   rP   rÔ  r   r  r   )rÁ   rN   rÔ  r   r  r   )rÁ   rQ   r  r   )rÁ   rP   r  r   )<r  r	  r
  rò  r   r¿  r&   r
  rÙ  r  r?  ræ  rH  rM  rU  rf  rm  r_  ry  r}  r  rŠ  rŒ  r‡  r•  r™  r›  rŸ  r¡  r£  r¥  r°  r³  rµ  r¹  rk  r\  ra  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;  +  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ðà	óðØ.ðØ69ðà	óò,ð
Ø*ðØ25ðà	óðØ$ðØ,/ðà	óðØ.ðØ69ðà	óðØ.ðØ69ðà	óð$Ø*ðØ25ðà	óóðØ*ðØ25ðà	óð
	Ø.ð	à	ó	ð
Ø.ð
à	ó
ð
Ø.ð
à	ó
óóòór  r;  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_FLOATi  ó   € Ør  c                 ó   — y)NÚDOUBLEr  rý  s      r  Úvisit_DOUBLEz GenericTypeCompiler.visit_DOUBLEl  ó   € Ør  c                 ó   — y)NzDOUBLE PRECISIONr  rý  s      r  Úvisit_DOUBLE_PRECISIONz*GenericTypeCompiler.visit_DOUBLE_PRECISIONo  s   € ð "r  c                 ó   — y)NÚREALr  rý  s      r  Ú
visit_REALzGenericTypeCompiler.visit_REALt  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_NUMERICw  óM   € Ø�?‰?Ð"ØØ�[‰[Ð Ø+¨{¸E¿O¹OÐ.LÑLÐLà6Ø"Ÿ_™_ØŸ™ñ:ñ ð r  c                óŽ   — |j                   €y|j                  €dd|j                   iz  S d|j                   |j                  dœz  S )NÚDECIMALzDECIMAL(%(precision)s)r%  z!DECIMAL(%(precision)s, %(scale)s)r&  r&  rý  s      r  Úvisit_DECIMALz!GenericTypeCompiler.visit_DECIMAL‚  r)  r  c                 ó   — y)NÚINTEGERr  rý  s      r  Úvisit_INTEGERz!GenericTypeCompiler.visit_INTEGER�  ó   € Ør  c                 ó   — y)NÚSMALLINTr  rý  s      r  Úvisit_SMALLINTz"GenericTypeCompiler.visit_SMALLINT�  ó   € Ør  c                 ó   — y)NÚBIGINTr  rý  s      r  Úvisit_BIGINTz GenericTypeCompiler.visit_BIGINT“  r  r  c                 ó   — y)NÚ	TIMESTAMPr  rý  s      r  Úvisit_TIMESTAMPz#GenericTypeCompiler.visit_TIMESTAMP–  s   € Ør  c                 ó   — y)NÚDATETIMEr  rý  s      r  Úvisit_DATETIMEz"GenericTypeCompiler.visit_DATETIME™  r4  r  c                 ó   — y)NÚDATEr  rý  s      r  Ú
visit_DATEzGenericTypeCompiler.visit_DATEœ  rá  r  c                 ó   — y)NÚTIMEr  rý  s      r  Ú
visit_TIMEzGenericTypeCompiler.visit_TIMEŸ  rá  r  c                 ó   — y)NÚCLOBr  rý  s      r  Ú
visit_CLOBzGenericTypeCompiler.visit_CLOB¢  rá  r  c                 ó   — y)NÚNCLOBr  rý  s      r  Úvisit_NCLOBzGenericTypeCompiler.visit_NCLOB¥  r  r  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©rL  rK  r¨  rý  s      r  Ú
visit_CHARzGenericTypeCompiler.visit_CHAR²  ó   € Ø×'Ñ'¨°·±¸e¿o¹oÓNÐNr  c                óP   — | j                  d|j                  |j                  «      S )NÚNCHARrO  rý  s      r  Úvisit_NCHARzGenericTypeCompiler.visit_NCHARµ  s   € Ø×'Ñ'¨°·±¸u¿¹ÓOÐOr  c                óP   — | j                  d|j                  |j                  «      S )NÚVARCHARrO  rý  s      r  Úvisit_VARCHARz!GenericTypeCompiler.visit_VARCHAR¸  s$   € Ø×'Ñ'Ø�u—|‘| U§_¡_ó
ð 	
r  c                óP   — | j                  d|j                  |j                  «      S )NÚNVARCHARrO  rý  s      r  Úvisit_NVARCHARz"GenericTypeCompiler.visit_NVARCHAR½  s$   € Ø×'Ñ'Ø˜Ÿ™ e§o¡oó
ð 	
r  c                óP   — | j                  d|j                  |j                  «      S )NÚTEXTrO  rý  s      r  Ú
visit_TEXTzGenericTypeCompiler.visit_TEXTÂ  rQ  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¢  ©rK  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Ú	VARBINARYrf  r¢  rg  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Ñ  r0  r  c                ó”   — |j                   r| j                  j                  s| j                  ddd ¬«      S  | j                  |fi |¤ŽS )NrN  é    )rK  r¨  )Únative_uuidr³  Úsupports_native_uuidrL  r`  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  )rc  rý  s      r  Úvisit_large_binaryz&GenericTypeCompiler.visit_large_binaryÚ  ó   € ð ˆt�‰˜uÑ+¨Ñ+Ð+r  c                ó(   —  | j                   |fi |¤ŽS r  )rn  rý  s      r  Úvisit_booleanz!GenericTypeCompiler.visit_booleanß  ó   € Ø!ˆt×!Ñ! %Ñ.¨2Ñ.Ð.r  c                ó(   —  | j                   |fi |¤ŽS r  )rC  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  )r@  rý  s      r  Ú
visit_datezGenericTypeCompiler.visit_dateè  r|  r  c                ó(   —  | j                   |fi |¤ŽS r  )r7  rý  s      r  Úvisit_big_integerz%GenericTypeCompiler.visit_big_integerë  ó   € Ø ˆt× Ñ  Ñ-¨"Ñ-Ð-r  c                ó(   —  | j                   |fi |¤ŽS r  )r3  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ó  ry  r  c                ó(   —  | j                   |fi |¤ŽS r  )r"  rý  s      r  Ú
visit_realzGenericTypeCompiler.visit_realö  r|  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ü  rƒ  r  c                ó(   —  | j                   |fi |¤ŽS r  )r(  rý  s      r  Úvisit_numericz!GenericTypeCompiler.visit_numericÿ  ry  r  c                ó(   —  | j                   |fi |¤ŽS r  ©rW  rý  s      r  Úvisit_stringz GenericTypeCompiler.visit_string  ry  r  c                ó(   —  | j                   |fi |¤ŽS r  r‘  rý  s      r  Úvisit_unicodez!GenericTypeCompiler.visit_unicode  ry  r  c                ó(   —  | j                   |fi |¤ŽS r  ©r]  rý  s      r  Ú
visit_textzGenericTypeCompiler.visit_text  r|  r  c                ó(   —  | j                   |fi |¤ŽS r  r–  rý  s      r  Úvisit_unicode_textz&GenericTypeCompiler.visit_unicode_text  rv  r  c                ó(   —  | j                   |fi |¤ŽS r  r‘  rý  s      r  Ú
visit_enumzGenericTypeCompiler.visit_enum  ry  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   rK  rü  r¨  rJ  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/  r3  r7  r:  r=  r@  rC  rF  rI  rL  rP  rT  rW  rZ  r]  r`  rc  rh  rk  rn  rs  ru  rx  r{  r~  r€  r‚  r…  r‡  r‰  r‹  r�  r�  r’  r”  r—  r™  r›  rà  rŸ  r¢  r  r  r  r  r  h  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        |«      ‚)Nrk  )rm  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_unknown4  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__G  ó   � r  N)r²  r   r  r   r  r  r  r  r°  r°  F  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__K  r³  r  N)r  rþ  r  r   r  r  r  r  r*  r*  J  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¹  rl  rº  )r  r³  r·  r¸  r¼  r¿  r¾  s          r  r¿  zIdentifierPreparer.__init__j  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_getter”  sw   ø€ Ø—:‘:ˆDØ×"Ò"¨Ð(8¹MØÐ#¨°©¸¸t¹Ü×*Ñ*ð8Ø:>ñ?óð ô #Ø# t¢¨wÑ7¸uôð ð —z‘zÐ!r  )rÅ  Ú__new__rx  ry  rœ  rº  )r  r¨  ÚpreprÆ  rÅ  s       @r  rµ  z)IdentifierPreparer._with_schema_translateŽ  sX   ø€ Ø�~‰~×%Ñ% d§n¡nÓ5ˆØ�‰×Ñ˜TŸ]™]Ô+àÐ 4Ð4ˆô	"ð "/ˆÔØ/<ˆÔ,Øˆr  c                óž   ‡ ‡— |Šd ‰v r)‰ j                   st        j                  d«      ‚‰d    ‰d<   ˆˆ fd„}t        j                  d||«      S )Nzâschema translate map which previously did not have `None` present as a key now has `None` present; compiled statement may lack adequate placeholders.  Please use consistent keys in successive schema_translate_map dictionaries.rÂ  c                óð   •— | j                  d«      }|‰v r‰|   }n|dv rt        j                  d«      ‚|}|s-‰j                  j                  }|st        j
                  d«      ‚‰j                  |«      S )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  r1  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Ò  rb  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   )rE  Úreserved_wordsÚillegal_initial_charactersÚlegal_charactersr  r   )r  rË  Úlc_values      r  rp  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  rH  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!  rD  r¹  rp  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_collationo  s    € Ø×/Ò/Ø—:‘:˜nÓ-Ð-à!Ð!r  c                ó¬   — | j                  |j                  «      }| j                  |«      }| j                  s|r|�| j	                  |«      dz   |z   }|S rŽ  )rš  r  rœ  r¾  r�  )r  rN  r?  r  r¢  s        r  r*  z"IdentifierPreparer.format_sequenceu  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  rj  zIdentifierPreparer.format_alias‰  s7   € ð ˆ<ØÐ$Ð$Ð$Ø—:‘:˜eŸj™jÓ)Ð)à—:‘:˜dÓ#Ð#r  c                ój   — |xs |j                   }| j                  |«      r| j                  |«      }|S r  )r_  rp  rÔ  )r  Ú	savepointr  r_  s       r  rô  z#IdentifierPreparer.format_savepoint’  s5   € ð Ò'˜	Ÿ™ˆØ× Ñ  Ô'Ø×)Ñ)¨%Ó0ˆEØˆr  zsqlalchemy.sql.namingc                ó"  — t         j                  j                  }|j                  t        u r|j                  ||j                  «      }|€y |j                  }|€J ‚|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_constraint›  s£   € ô —‘×*Ñ*ˆà�?‰?œjÑ(Ø×4Ñ4Ø˜J×,Ñ,óˆDð ˆ|Øà—?‘?ˆDàÐÐÐØ×$Ñ$¨Ò/Ø×6Ñ6Ø ^ð 7ó ð ð ×;Ñ;Ø ^ð <ó ð r  c                ó„   — | j                   j                  xs | j                   j                  }| j                  |||«      S r  )r³  Úmax_index_name_lengthrq  Ú _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_lengthrq  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   re  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¸  r\   r  rš  rœ  r¾  r�  )r  rž   r?  r  rG  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Ã  rH  s     r  rL  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  rr  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?  rD  r²  rž   rš  )r  r£   r�  r  Ú
table_namer?  rr  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  rD  z#IdentifierPreparer.format_table_seq9  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>L  s    è ø€ ò )
àô �I‰I�a�Lñ)
ùs   ‚!zM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+)ÚinitialÚfinalr“  )r·  r¸  rÏ  r_  ra  )r  r	  r	  Úescaped_finalÚrs        r  Ú_r_identifiersz!IdentifierPreparer._r_identifiersJ  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_identifiers\  s]   € ð ×Ñˆð *+¯©°;Ó)?×@¡  A�a’f˜1‘fÓ@ö
àð ×%Ñ% aÕ(ò
ð 	
ùã@ùò
s
   ¡A·A)r–  Nr–  TF)r³  rm   r·  r   r¸  rJ  r¼  r   r¿  r(  r¾  r(  )r1  r   r¨  rn   r  r   )rË  r   r  r   )rË  r   r  r(  r  )r#   r   rÝ  r   r  r   )r_  r   rÝ  r   r  r   )T)rN  zschema.Sequencer?  r(  r  r   )r  z
Label[Any]r  rJ  r  r   )r–  zOptional[AliasedReturnsRows]r  rJ  r  r   )rÁ   zUnion[Constraint, Index]rè  r(  r  rJ  )r  r   rè  r(  r  r   )r  r   rò  rK  rè  r(  r  r   )r€  rS   r  r   )TN)rž   r[   r?  r(  r  rJ  r  r   )FNNFN)r£   zColumnElement[Any]r�  r(  r  rJ  rÿ  rJ  r?  r(  rr  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  rB  Ú
attrgetterrœ  rº  r¿  rµ  r»  rÏ  rÑ  r  rÔ  rp  rH  r�  rš  r§  r*  r†  rj  rô  r&   r  r·  rë  rì  rð  r�  r²  rL  r^  rž  rD  r  r	  r	  r  r  r  rª  rª  N  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   rs  r¸  rB  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&   r8  Ú_typingr'   r(   r)   r*   r+   r,   r-   r.   r/   Úvisitorsr0   r2   r3   Úutil.typingr4   r5   r6   r7   Ú
annotationr8   r9   r:   r;   r¯  r<   rE  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]   r^   r_   Útype_apir`   ra   rb   rc   rd   Úengine.cursorre   Úengine.interfacesrf   rg   rh   ri   rj   rk   rl   rm   rn   r   Ú_FromHintsTyper	  ra  ÚIr	  ÚLEGAL_CHARACTERS_PLUS_SPACErw  rŸ   r	  r  r  r
  ÚUNICODErÊ  rÉ  rn  ro  rù  Úor_rL  Ú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/  r0  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&  r0  rG  rV  rc  rq  rv  r@  rw  rx  ry  rz  Ú
namedtupler|  r   ÚEnsureKWArgrù  ÚBinaryElementRoleÚCompilerColumnElementr  r  rë  r  r;  r  r¤  r°  r*  rª  )r  s   0r  ú<module>rJ	     s5  ðòõ" #ã Ý )Û Ý Û Û Û Û 	Ý Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý &Ý Ý Ý Ý Ý 2Ý Ý !Ý Ý %Ý Ý Ý Ý !Ý "Ý Ý #à	×ÓÝ+Ý,Ý"Ý Ý#Ý)ÝÝÝÝ#ÝÝ*Ý*Ý'Ý'Ý&Ý'Ý ÝÝÝÝ#Ý'ÝÝ"Ý,Ý'ÝÝ,ÝÝ(Ý1Ý.Ý/ÝÝ&Ý+Ý'Ý"Ý'Ý,Ý'Ý$Ý)Ý#Ý4Ý<Ý:Ý<Ý=Ý3Ý=ÝCÝ+Ý:ð �l CÐ'Ñ(€ò_€ðB �2—:’:Ð.°·²Ó5Ð Ø(˜bŸjšjÐ):¸B¿DºDÓAÐ Ù.3°A°r«lÖ;¨™c !�fÒ;×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]V
�(ô ]V
ô@ml
�[ô l
ô^z�(ô zözz(˜,ô z(öz&Ð,ô &öB/˜xô /ö;˜hô ;÷U
ô U
ùòmb <s   Ì	c4