Coverage for sqlmodel/main.py: 94%

357 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-07-15 09:31 +0000

1import ipaddress 1abcdef

2import uuid 1abcdef

3import weakref 1abcdef

4from datetime import date, datetime, time, timedelta 1abcdef

5from decimal import Decimal 1abcdef

6from enum import Enum 1abcdef

7from pathlib import Path 1abcdef

8from typing import ( 1abcdef

9 TYPE_CHECKING, 

10 AbstractSet, 

11 Any, 

12 Callable, 

13 ClassVar, 

14 Dict, 

15 List, 

16 Mapping, 

17 Optional, 

18 Sequence, 

19 Set, 

20 Tuple, 

21 Type, 

22 TypeVar, 

23 Union, 

24 cast, 

25 overload, 

26) 

27 

28from pydantic import BaseModel, EmailStr 1abcdef

29from pydantic.fields import FieldInfo as PydanticFieldInfo 1abcdef

30from sqlalchemy import ( 1abcdef

31 Boolean, 

32 Column, 

33 Date, 

34 DateTime, 

35 Float, 

36 ForeignKey, 

37 Integer, 

38 Interval, 

39 Numeric, 

40 inspect, 

41) 

42from sqlalchemy import Enum as sa_Enum 1abcdef

43from sqlalchemy.orm import ( 1abcdef

44 Mapped, 

45 RelationshipProperty, 

46 declared_attr, 

47 registry, 

48 relationship, 

49) 

50from sqlalchemy.orm.attributes import set_attribute 1abcdef

51from sqlalchemy.orm.decl_api import DeclarativeMeta 1abcdef

52from sqlalchemy.orm.instrumentation import is_instrumented 1abcdef

53from sqlalchemy.sql.schema import MetaData 1abcdef

54from sqlalchemy.sql.sqltypes import LargeBinary, Time, Uuid 1abcdef

55from typing_extensions import Literal, TypeAlias, deprecated, get_origin 1abcdef

56 

57from ._compat import ( # type: ignore[attr-defined] 1abcdef

58 IS_PYDANTIC_V2, 

59 PYDANTIC_MINOR_VERSION, 

60 BaseConfig, 

61 ModelField, 

62 ModelMetaclass, 

63 Representation, 

64 SQLModelConfig, 

65 Undefined, 

66 UndefinedType, 

67 _calculate_keys, 

68 finish_init, 

69 get_annotations, 

70 get_config_value, 

71 get_field_metadata, 

72 get_model_fields, 

73 get_relationship_to, 

74 get_sa_type_from_field, 

75 init_pydantic_private_attrs, 

76 is_field_noneable, 

77 is_table_model_class, 

78 post_init_field_info, 

79 set_config_value, 

80 sqlmodel_init, 

81 sqlmodel_validate, 

82) 

83from .sql.sqltypes import AutoString 1abcdef

84 

85if TYPE_CHECKING: 1abcdef

86 from pydantic._internal._model_construction import ModelMetaclass as ModelMetaclass 

87 from pydantic._internal._repr import Representation as Representation 

88 from pydantic_core import PydanticUndefined as Undefined 

89 from pydantic_core import PydanticUndefinedType as UndefinedType 

90 

91_T = TypeVar("_T") 1abcdef

92NoArgAnyCallable = Callable[[], Any] 1abcdef

93IncEx: TypeAlias = Union[ 1abcdef

94 Set[int], 

95 Set[str], 

96 Mapping[int, Union["IncEx", bool]], 

97 Mapping[str, Union["IncEx", bool]], 

98] 

99OnDeleteType = Literal["CASCADE", "SET NULL", "RESTRICT"] 1abcdef

100 

101 

102def __dataclass_transform__( 1abcdef

103 *, 

104 eq_default: bool = True, 

105 order_default: bool = False, 

106 kw_only_default: bool = False, 

107 field_descriptors: Tuple[Union[type, Callable[..., Any]], ...] = (()), 

108) -> Callable[[_T], _T]: 

109 return lambda a: a 1abcdef

110 

111 

112class FieldInfo(PydanticFieldInfo): 1abcdef

113 def __init__(self, default: Any = Undefined, **kwargs: Any) -> None: 1abcdef

114 primary_key = kwargs.pop("primary_key", False) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

115 nullable = kwargs.pop("nullable", Undefined) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

116 foreign_key = kwargs.pop("foreign_key", Undefined) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

117 ondelete = kwargs.pop("ondelete", Undefined) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

118 unique = kwargs.pop("unique", False) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

119 index = kwargs.pop("index", Undefined) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

120 sa_type = kwargs.pop("sa_type", Undefined) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

121 sa_column = kwargs.pop("sa_column", Undefined) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

122 sa_column_args = kwargs.pop("sa_column_args", Undefined) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

123 sa_column_kwargs = kwargs.pop("sa_column_kwargs", Undefined) 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

124 if sa_column is not Undefined: 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

125 if sa_column_args is not Undefined: 2glnpHpBpNp5pYpenvpmmhlopIpCpOp6pZpfnwpnmilppJpDpPp7p0pgnxpomjlqpKpEpQp8p1phnyppmklrpLpFpRp9p2pinzpqmllspMpGpSp!p3pjnAprm

126 raise RuntimeError( 25p6p7p8p9p!p

127 "Passing sa_column_args is not supported when " 

128 "also passing a sa_column" 

129 ) 

130 if sa_column_kwargs is not Undefined: 2glnpHpBpNpYpenvpmmhlopIpCpOpZpfnwpnmilppJpDpPp0pgnxpomjlqpKpEpQp1phnyppmklrpLpFpRp2pinzpqmllspMpGpSp3pjnAprm

131 raise RuntimeError( 2YpZp0p1p2p3p

132 "Passing sa_column_kwargs is not supported when " 

133 "also passing a sa_column" 

134 ) 

135 if primary_key is not Undefined: 2glnpHpBpNpenvpmmhlopIpCpOpfnwpnmilppJpDpPpgnxpomjlqpKpEpQphnyppmklrpLpFpRpinzpqmllspMpGpSpjnAprm

136 raise RuntimeError( 2NpOpPpQpRpSp

137 "Passing primary_key is not supported when also passing a sa_column" 

138 ) 

139 if nullable is not Undefined: 2glnpHpBpenvpmmhlopIpCpfnwpnmilppJpDpgnxpomjlqpKpEphnyppmklrpLpFpinzpqmllspMpGpjnAprm

140 raise RuntimeError( 2HpIpJpKpLpMp

141 "Passing nullable is not supported when also passing a sa_column" 

142 ) 

143 if foreign_key is not Undefined: 2glnpBpenvpmmhlopCpfnwpnmilppDpgnxpomjlqpEphnyppmklrpFpinzpqmllspGpjnAprm

144 raise RuntimeError( 2glhliljlklll

145 "Passing foreign_key is not supported when also passing a sa_column" 

146 ) 

147 if ondelete is not Undefined: 2npBpenvpmmopCpfnwpnmppDpgnxpomqpEphnyppmrpFpinzpqmspGpjnAprm

148 raise RuntimeError( 2BpCpDpEpFpGp

149 "Passing ondelete is not supported when also passing a sa_column" 

150 ) 

151 if unique is not Undefined: 2npenvpmmopfnwpnmppgnxpomqphnyppmrpinzpqmspjnAprm

152 raise RuntimeError( 2vpwpxpypzpAp

153 "Passing unique is not supported when also passing a sa_column" 

154 ) 

155 if index is not Undefined: 2npenmmopfnnmppgnomqphnpmrpinqmspjnrm

156 raise RuntimeError( 2npopppqprpsp

157 "Passing index is not supported when also passing a sa_column" 

158 ) 

159 if sa_type is not Undefined: 2enmmfnnmgnomhnpminqmjnrm

160 raise RuntimeError( 2enfngnhninjn

161 "Passing sa_type is not supported when also passing a sa_column" 

162 ) 

163 if ondelete is not Undefined: 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

164 if foreign_key is Undefined: 2}mpd$b%c%b[ 'b~mqd{ | .b/b} ~ ' ( abbbanrdibjbkb~bacbclbmbnb) * + obpbqbbnsdxbybzbrcsctcAbBbCb, - . DbEbFbcntdMbNbObJcKcLcPbQbRb/ : ; SbTbUbdnud1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b

165 raise RuntimeError("ondelete can only be used with foreign_key") 2}m~manbncndn

166 super().__init__(default=default, **kwargs) 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

167 self.primary_key = primary_key 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

168 self.nullable = nullable 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

169 self.foreign_key = foreign_key 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

170 self.ondelete = ondelete 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

171 self.unique = unique 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

172 self.index = index 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

173 self.sa_type = sa_type 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

174 self.sa_column = sa_column 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

175 self.sa_column_args = sa_column_args 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

176 self.sa_column_kwargs = sa_column_kwargs 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

177 

178 

179class RelationshipInfo(Representation): 1abcdef

180 def __init__( 1abcdef

181 self, 

182 *, 

183 back_populates: Optional[str] = None, 

184 cascade_delete: Optional[bool] = False, 

185 passive_deletes: Optional[Union[bool, Literal["all"]]] = False, 

186 link_model: Optional[Any] = None, 

187 sa_relationship: Optional[RelationshipProperty] = None, # type: ignore 

188 sa_relationship_args: Optional[Sequence[Any]] = None, 

189 sa_relationship_kwargs: Optional[Mapping[str, Any]] = None, 

190 ) -> None: 

191 if sa_relationship is not None: 2a [m8mjdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb ]m9mkdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ^m!mldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd _m#mmdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce `m$mndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf {m%modudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

192 if sa_relationship_args is not None: 2[m8mjd]m9mkd^m!mld_m#mmd`m$mnd{m%mod

193 raise RuntimeError( 2[m]m^m_m`m{m

194 "Passing sa_relationship_args is not supported when " 

195 "also passing a sa_relationship" 

196 ) 

197 if sa_relationship_kwargs is not None: 28mjd9mkd!mld#mmd$mnd%mod

198 raise RuntimeError( 28m9m!m#m$m%m

199 "Passing sa_relationship_kwargs is not supported when " 

200 "also passing a sa_relationship" 

201 ) 

202 self.back_populates = back_populates 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

203 self.cascade_delete = cascade_delete 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

204 self.passive_deletes = passive_deletes 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

205 self.link_model = link_model 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

206 self.sa_relationship = sa_relationship 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

207 self.sa_relationship_args = sa_relationship_args 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

208 self.sa_relationship_kwargs = sa_relationship_kwargs 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

209 

210 

211# include sa_type, sa_column_args, sa_column_kwargs 

212@overload 1abcdef

213def Field( 1abcdef

214 default: Any = Undefined, 1abcdef

215 *, 

216 default_factory: Optional[NoArgAnyCallable] = None, 1abcdef

217 alias: Optional[str] = None, 1abcdef

218 title: Optional[str] = None, 1abcdef

219 description: Optional[str] = None, 1abcdef

220 exclude: Union[ 1abcdef

221 AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any 1abcdef

222 ] = None, 1abcdef

223 include: Union[ 1abcdef

224 AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any 1abcdef

225 ] = None, 1abcdef

226 const: Optional[bool] = None, 1abcdef

227 gt: Optional[float] = None, 1abcdef

228 ge: Optional[float] = None, 1abcdef

229 lt: Optional[float] = None, 1abcdef

230 le: Optional[float] = None, 1abcdef

231 multiple_of: Optional[float] = None, 1abcdef

232 max_digits: Optional[int] = None, 1abcdef

233 decimal_places: Optional[int] = None, 1abcdef

234 min_items: Optional[int] = None, 1abcdef

235 max_items: Optional[int] = None, 1abcdef

236 unique_items: Optional[bool] = None, 1abcdef

237 min_length: Optional[int] = None, 1abcdef

238 max_length: Optional[int] = None, 1abcdef

239 allow_mutation: bool = True, 1abcdef

240 regex: Optional[str] = None, 1abcdef

241 discriminator: Optional[str] = None, 1abcdef

242 repr: bool = True, 1abcdef

243 primary_key: Union[bool, UndefinedType] = Undefined, 1abcdef

244 foreign_key: Any = Undefined, 1abcdef

245 unique: Union[bool, UndefinedType] = Undefined, 1abcdef

246 nullable: Union[bool, UndefinedType] = Undefined, 1abcdef

247 index: Union[bool, UndefinedType] = Undefined, 1abcdef

248 sa_type: Union[Type[Any], UndefinedType] = Undefined, 1abcdef

249 sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined, 1abcdef

250 sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined, 1abcdef

251 schema_extra: Optional[Dict[str, Any]] = None, 1abcdef

252) -> Any: ... 1abcdef

253 

254 

255# When foreign_key is str, include ondelete 

256# include sa_type, sa_column_args, sa_column_kwargs 

257@overload 1abcdef

258def Field( 1abcdef

259 default: Any = Undefined, 1abcdef

260 *, 

261 default_factory: Optional[NoArgAnyCallable] = None, 1abcdef

262 alias: Optional[str] = None, 1abcdef

263 title: Optional[str] = None, 1abcdef

264 description: Optional[str] = None, 1abcdef

265 exclude: Union[ 1abcdef

266 AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any 1abcdef

267 ] = None, 1abcdef

268 include: Union[ 1abcdef

269 AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any 1abcdef

270 ] = None, 1abcdef

271 const: Optional[bool] = None, 1abcdef

272 gt: Optional[float] = None, 1abcdef

273 ge: Optional[float] = None, 1abcdef

274 lt: Optional[float] = None, 1abcdef

275 le: Optional[float] = None, 1abcdef

276 multiple_of: Optional[float] = None, 1abcdef

277 max_digits: Optional[int] = None, 1abcdef

278 decimal_places: Optional[int] = None, 1abcdef

279 min_items: Optional[int] = None, 1abcdef

280 max_items: Optional[int] = None, 1abcdef

281 unique_items: Optional[bool] = None, 1abcdef

282 min_length: Optional[int] = None, 1abcdef

283 max_length: Optional[int] = None, 1abcdef

284 allow_mutation: bool = True, 1abcdef

285 regex: Optional[str] = None, 1abcdef

286 discriminator: Optional[str] = None, 1abcdef

287 repr: bool = True, 1abcdef

288 primary_key: Union[bool, UndefinedType] = Undefined, 1abcdef

289 foreign_key: str, 1abcdef

290 ondelete: Union[OnDeleteType, UndefinedType] = Undefined, 1abcdef

291 unique: Union[bool, UndefinedType] = Undefined, 1abcdef

292 nullable: Union[bool, UndefinedType] = Undefined, 1abcdef

293 index: Union[bool, UndefinedType] = Undefined, 1abcdef

294 sa_type: Union[Type[Any], UndefinedType] = Undefined, 1abcdef

295 sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined, 1abcdef

296 sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined, 1abcdef

297 schema_extra: Optional[Dict[str, Any]] = None, 1abcdef

298) -> Any: ... 1abcdef

299 

300 

301# Include sa_column, don't include 

302# primary_key 

303# foreign_key 

304# ondelete 

305# unique 

306# nullable 

307# index 

308# sa_type 

309# sa_column_args 

310# sa_column_kwargs 

311@overload 1abcdef

312def Field( 1abcdef

313 default: Any = Undefined, 1abcdef

314 *, 

315 default_factory: Optional[NoArgAnyCallable] = None, 1abcdef

316 alias: Optional[str] = None, 1abcdef

317 title: Optional[str] = None, 1abcdef

318 description: Optional[str] = None, 1abcdef

319 exclude: Union[ 1abcdef

320 AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any 1abcdef

321 ] = None, 1abcdef

322 include: Union[ 1abcdef

323 AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any 1abcdef

324 ] = None, 1abcdef

325 const: Optional[bool] = None, 1abcdef

326 gt: Optional[float] = None, 1abcdef

327 ge: Optional[float] = None, 1abcdef

328 lt: Optional[float] = None, 1abcdef

329 le: Optional[float] = None, 1abcdef

330 multiple_of: Optional[float] = None, 1abcdef

331 max_digits: Optional[int] = None, 1abcdef

332 decimal_places: Optional[int] = None, 1abcdef

333 min_items: Optional[int] = None, 1abcdef

334 max_items: Optional[int] = None, 1abcdef

335 unique_items: Optional[bool] = None, 1abcdef

336 min_length: Optional[int] = None, 1abcdef

337 max_length: Optional[int] = None, 1abcdef

338 allow_mutation: bool = True, 1abcdef

339 regex: Optional[str] = None, 1abcdef

340 discriminator: Optional[str] = None, 1abcdef

341 repr: bool = True, 1abcdef

342 sa_column: Union[Column[Any], UndefinedType] = Undefined, 1abcdef

343 schema_extra: Optional[Dict[str, Any]] = None, 1abcdef

344) -> Any: ... 1abcdef

345 

346 

347def Field( 1abcdef

348 default: Any = Undefined, 

349 *, 

350 default_factory: Optional[NoArgAnyCallable] = None, 

351 alias: Optional[str] = None, 

352 title: Optional[str] = None, 

353 description: Optional[str] = None, 

354 exclude: Union[ 

355 AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any 

356 ] = None, 

357 include: Union[ 

358 AbstractSet[Union[int, str]], Mapping[Union[int, str], Any], Any 

359 ] = None, 

360 const: Optional[bool] = None, 

361 gt: Optional[float] = None, 

362 ge: Optional[float] = None, 

363 lt: Optional[float] = None, 

364 le: Optional[float] = None, 

365 multiple_of: Optional[float] = None, 

366 max_digits: Optional[int] = None, 

367 decimal_places: Optional[int] = None, 

368 min_items: Optional[int] = None, 

369 max_items: Optional[int] = None, 

370 unique_items: Optional[bool] = None, 

371 min_length: Optional[int] = None, 

372 max_length: Optional[int] = None, 

373 allow_mutation: bool = True, 

374 regex: Optional[str] = None, 

375 discriminator: Optional[str] = None, 

376 repr: bool = True, 

377 primary_key: Union[bool, UndefinedType] = Undefined, 

378 foreign_key: Any = Undefined, 

379 ondelete: Union[OnDeleteType, UndefinedType] = Undefined, 

380 unique: Union[bool, UndefinedType] = Undefined, 

381 nullable: Union[bool, UndefinedType] = Undefined, 

382 index: Union[bool, UndefinedType] = Undefined, 

383 sa_type: Union[Type[Any], UndefinedType] = Undefined, 

384 sa_column: Union[Column, UndefinedType] = Undefined, # type: ignore 

385 sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined, 

386 sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined, 

387 schema_extra: Optional[Dict[str, Any]] = None, 

388) -> Any: 

389 current_schema_extra = schema_extra or {} 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

390 field_info = FieldInfo( 2a efkele~jmlnlEl%lglnpHpBpNp5pYpenvpmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlopIpCpOp6pZpfnwpnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilppJpDpPp7p0pgnxpom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlqpKpEpQp8p1phnyppm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklrpLpFpRp9p2pinzpqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllspMpGpSp!p3pjnAprm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

391 default, 

392 default_factory=default_factory, 

393 alias=alias, 

394 title=title, 

395 description=description, 

396 exclude=exclude, 

397 include=include, 

398 const=const, 

399 gt=gt, 

400 ge=ge, 

401 lt=lt, 

402 le=le, 

403 multiple_of=multiple_of, 

404 max_digits=max_digits, 

405 decimal_places=decimal_places, 

406 min_items=min_items, 

407 max_items=max_items, 

408 unique_items=unique_items, 

409 min_length=min_length, 

410 max_length=max_length, 

411 allow_mutation=allow_mutation, 

412 regex=regex, 

413 discriminator=discriminator, 

414 repr=repr, 

415 primary_key=primary_key, 

416 foreign_key=foreign_key, 

417 ondelete=ondelete, 

418 unique=unique, 

419 nullable=nullable, 

420 index=index, 

421 sa_type=sa_type, 

422 sa_column=sa_column, 

423 sa_column_args=sa_column_args, 

424 sa_column_kwargs=sa_column_kwargs, 

425 **current_schema_extra, 

426 ) 

427 post_init_field_info(field_info) 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

428 return field_info 2a efkele~jmlnlEl%lglmm[m8mymakzmjdbkckdk=l^jyl'l}mpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnm]m9mCmlkDmkdmknkok[l_jzl)l~mqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilom^m!mGmwkHmldxkykzk_l`jAl+lanrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpm_m#mKmMkLmmdNkOkPk|l{jBl-lbnsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm`m$mOm2kPmnd3k4k5kam|jCl/lcntdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm{m%mSm+kTmod,k-k.kdm}jDl;ldnudUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

429 

430 

431@overload 1abcdef

432def Relationship( 1abcdef

433 *, 

434 back_populates: Optional[str] = None, 1abcdef

435 cascade_delete: Optional[bool] = False, 1abcdef

436 passive_deletes: Optional[Union[bool, Literal["all"]]] = False, 1abcdef

437 link_model: Optional[Any] = None, 1abcdef

438 sa_relationship_args: Optional[Sequence[Any]] = None, 1abcdef

439 sa_relationship_kwargs: Optional[Mapping[str, Any]] = None, 1abcdef

440) -> Any: ... 1abcdef

441 

442 

443@overload 1abcdef

444def Relationship( 1abcdef

445 *, 

446 back_populates: Optional[str] = None, 1abcdef

447 cascade_delete: Optional[bool] = False, 1abcdef

448 passive_deletes: Optional[Union[bool, Literal["all"]]] = False, 1abcdef

449 link_model: Optional[Any] = None, 1abcdef

450 sa_relationship: Optional[RelationshipProperty[Any]] = None, 1abcdef

451) -> Any: ... 1abcdef

452 

453 

454def Relationship( 1abcdef

455 *, 

456 back_populates: Optional[str] = None, 

457 cascade_delete: Optional[bool] = False, 

458 passive_deletes: Optional[Union[bool, Literal["all"]]] = False, 

459 link_model: Optional[Any] = None, 

460 sa_relationship: Optional[RelationshipProperty[Any]] = None, 

461 sa_relationship_args: Optional[Sequence[Any]] = None, 

462 sa_relationship_kwargs: Optional[Mapping[str, Any]] = None, 

463) -> Any: 

464 relationship_info = RelationshipInfo( 2a [m8mjdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb ]m9mkdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ^m!mldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd _m#mmdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce `m$mndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf {m%modudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

465 back_populates=back_populates, 

466 cascade_delete=cascade_delete, 

467 passive_deletes=passive_deletes, 

468 link_model=link_model, 

469 sa_relationship=sa_relationship, 

470 sa_relationship_args=sa_relationship_args, 

471 sa_relationship_kwargs=sa_relationship_kwargs, 

472 ) 

473 return relationship_info 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

474 

475 

476@__dataclass_transform__(kw_only_default=True, field_descriptors=(Field, FieldInfo)) 1abcdef

477class SQLModelMetaclass(ModelMetaclass, DeclarativeMeta): 1abcdef

478 __sqlmodel_relationships__: Dict[str, RelationshipInfo] 1abcdef

479 model_config: SQLModelConfig 1abcdef

480 model_fields: ClassVar[Dict[str, FieldInfo]] 1abcdef

481 __config__: Type[SQLModelConfig] 1abcdef

482 __fields__: Dict[str, ModelField] # type: ignore[assignment] 1abcdef

483 

484 # Replicate SQLAlchemy 

485 def __setattr__(cls, name: str, value: Any) -> None: 1abcdef

486 if is_table_model_class(cls): 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

487 DeclarativeMeta.__setattr__(cls, name, value) 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

488 else: 

489 super().__setattr__(name, value) 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

490 

491 def __delattr__(cls, name: str) -> None: 1abcdef

492 if is_table_model_class(cls): 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj1m

493 DeclarativeMeta.__delattr__(cls, name) 1abcdef

494 else: 

495 super().__delattr__(name) 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj1m

496 

497 # From Pydantic 

498 def __new__( 1abcdef

499 cls, 

500 name: str, 

501 bases: Tuple[Type[Any], ...], 

502 class_dict: Dict[str, Any], 

503 **kwargs: Any, 

504 ) -> Any: 

505 relationships: Dict[str, RelationshipInfo] = {} 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

506 dict_for_pydantic = {} 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

507 original_annotations = get_annotations(class_dict) 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

508 pydantic_annotations = {} 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

509 relationship_annotations = {} 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

510 for k, v in class_dict.items(): 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

511 if isinstance(v, RelationshipInfo): 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

512 relationships[k] = v 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

513 else: 

514 dict_for_pydantic[k] = v 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

515 for k, v in original_annotations.items(): 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

516 if k in relationships: 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

517 relationship_annotations[k] = v 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

518 else: 

519 pydantic_annotations[k] = v 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

520 dict_used = { 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

521 **dict_for_pydantic, 

522 "__weakref__": None, 

523 "__sqlmodel_relationships__": relationships, 

524 "__annotations__": pydantic_annotations, 

525 } 

526 # Duplicate logic from Pydantic to filter config kwargs because if they are 

527 # passed directly including the registry Pydantic will pass them over to the 

528 # superclass causing an error 

529 allowed_config_kwargs: Set[str] = { 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

530 key 

531 for key in dir(BaseConfig) 

532 if not ( 

533 key.startswith("__") and key.endswith("__") 

534 ) # skip dunder methods and attributes 

535 } 

536 config_kwargs = { 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

537 key: kwargs[key] for key in kwargs.keys() & allowed_config_kwargs 

538 } 

539 new_cls = super().__new__(cls, name, bases, dict_used, **config_kwargs) 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

540 new_cls.__annotations__ = { 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

541 **relationship_annotations, 

542 **pydantic_annotations, 

543 **new_cls.__annotations__, 

544 } 

545 

546 def get_config(name: str) -> Any: 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

547 config_class_value = get_config_value( 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

548 model=new_cls, parameter=name, default=Undefined 

549 ) 

550 if config_class_value is not Undefined: 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

551 return config_class_value 2nfofpfqfrfsftfufvfwfxfyfzfAfBf

552 kwarg_value = kwargs.get(name, Undefined) 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

553 if kwarg_value is not Undefined: 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

554 return kwarg_value 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

555 return Undefined 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk^jyl'lpdAmBmsmek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok_jzl)lqdEmFmtmpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk`jAl+lrdImJmumAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk{jBl-lsdMmNmvmQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5k|jCl/ltdQmRmwm6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.k}jDl;ludUmVmxm/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

556 

557 config_table = get_config("table") 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

558 if config_table is True: 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk=l^jyl'lpdAmBmsmek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok[l_jzl)lqdEmFmtmpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk_l`jAl+lrdImJmumAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk|l{jBl-lsdMmNmvmQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5kam|jCl/ltdQmRmwm6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.kdm}jDl;ludUmVmxm/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

559 # If it was passed by kwargs, ensure it's also set in config 

560 set_config_value(model=new_cls, parameter="table", value=config_table) 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

561 for k, v in get_model_fields(new_cls).items(): 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

562 col = get_column_from_field(v) 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

563 setattr(new_cls, k, col) 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

564 # Set a config flag to tell FastAPI that this should be read with a field 

565 # in orm_mode instead of preemptively converting it to a dict. 

566 # This could be done by reading new_cls.model_config['table'] in FastAPI, but 

567 # that's very specific about SQLModel, so let's have another config that 

568 # other future tools based on Pydantic can use. 

569 set_config_value( 2a efkele~jmlnlEl%lglmmakjdbkckdk^jyl'lpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok_jzl)lqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk`jAl+lrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk{jBl-lsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5k|jCl/ltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.k}jDl;lud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

570 model=new_cls, parameter="read_from_attributes", value=True 

571 ) 

572 # For compatibility with older versions 

573 # TODO: remove this in the future 

574 set_config_value(model=new_cls, parameter="read_with_orm_mode", value=True) 2a efkele~jmlnlEl%lglmmakjdbkckdk^jyl'lpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok_jzl)lqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk`jAl+lrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk{jBl-lsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5k|jCl/ltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.k}jDl;lud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

575 

576 config_registry = get_config("registry") 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk^jyl'lpdAmBmsmek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok_jzl)lqdEmFmtmpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk`jAl+lrdImJmumAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk{jBl-lsdMmNmvmQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5k|jCl/ltdQmRmwm6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.k}jDl;ludUmVmxm/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

577 if config_registry is not Undefined: 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk^jyl'lpdAmBmsmek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok_jzl)lqdEmFmtmpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk`jAl+lrdImJmumAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk{jBl-lsdMmNmvmQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5k|jCl/ltdQmRmwm6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.k}jDl;ludUmVmxm/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

578 config_registry = cast(registry, config_registry) 1abcdef

579 # If it was passed by kwargs, ensure it's also set in config 

580 set_config_value(model=new_cls, parameter="registry", value=config_table) 1abcdef

581 setattr(new_cls, "_sa_registry", config_registry) # noqa: B010 1abcdef

582 setattr(new_cls, "metadata", config_registry.metadata) # noqa: B010 1abcdef

583 setattr(new_cls, "__abstract__", True) # noqa: B010 1abcdef

584 return new_cls 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk^jyl'lpdAmBmsmek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok_jzl)lqdEmFmtmpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk`jAl+lrdImJmumAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk{jBl-lsdMmNmvmQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5k|jCl/ltdQmRmwm6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.k}jDl;ludUmVmxm/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

585 

586 # Override SQLAlchemy, allow both SQLAlchemy and plain Pydantic models 

587 def __init__( 1abcdef

588 cls, classname: str, bases: Tuple[type, ...], dict_: Dict[str, Any], **kw: Any 

589 ) -> None: 

590 # Only one of the base classes (or the current one) should be a table model 

591 # this allows FastAPI cloning a SQLModel for the response_model without 

592 # trying to create a new SQLAlchemy, for a new table, with the same name, that 

593 # triggers an error 

594 base_is_table = any(is_table_model_class(base) for base in bases) 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk^jyl'lpdAmBmsmek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok_jzl)lqdEmFmtmpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk`jAl+lrdImJmumAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk{jBl-lsdMmNmvmQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5k|jCl/ltdQmRmwm6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.k}jDl;ludUmVmxm/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

595 if is_table_model_class(cls) and not base_is_table: 2a efkele~jmlnlEl%lglmmymakzmjdbkckdk^jyl'lpdAmBmsmek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmb me]d^dkkolplFl(lhlnmCmlkDmkdmknkok_jzl)lqdEmFmtmpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmc vewe_d`d{d|dvkqlrlHl*lilomGmwkHmldxkykzk`jAl+lrdImJmumAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmd NeOe}d~daebeLksltlKl,ljlpmKmMkLmmdNkOkPk{jBl-lsdMmNmvmQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZme 5e6ecedeeefe1kulvlNl.lklqmOm2kPmnd3k4k5k|jCl/ltdQmRmwm6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mf :e;egeheieje*kwlxlQl:lllrmSm+kTmod,k-k.k}jDl;ludUmVmxm/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

596 for rel_name, rel_info in cls.__sqlmodel_relationships__.items(): 2a efkele~jmlnlEl%lglmmakjdbkckdk^jyl'lpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok_jzl)lqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk`jAl+lrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk{jBl-lsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5k|jCl/ltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.k}jDl;lud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

597 if rel_info.sa_relationship: 2a jdpd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

598 # There's a SQLAlchemy relationship declared, that takes precedence 

599 # over anything else, use that and continue with the next attribute 

600 setattr(cls, rel_name, rel_info.sa_relationship) # Fix #315 2jdkdldmdndod

601 continue 2jdkdldmdndod

602 raw_ann = cls.__annotations__[rel_name] 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

603 origin = get_origin(raw_ann) 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

604 if origin is Mapped: 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

605 ann = raw_ann.__args__[0] 

606 else: 

607 ann = raw_ann 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

608 # Plain forward references, for models not yet defined, are not 

609 # handled well by SQLAlchemy without Mapped, so, wrap the 

610 # annotations in Mapped here 

611 cls.__annotations__[rel_name] = Mapped[ann] # type: ignore[valid-type] 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

612 relationship_to = get_relationship_to( 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

613 name=rel_name, rel_info=rel_info, annotation=ann 

614 ) 

615 rel_kwargs: Dict[str, Any] = {} 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

616 if rel_info.back_populates: 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

617 rel_kwargs["back_populates"] = rel_info.back_populates 2a pd!cI J % Y !b#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ _ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbebfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtbubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIbJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXbYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

618 if rel_info.cascade_delete: 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

619 rel_kwargs["cascade"] = "all, delete-orphan" 2$b{ | ibjbkbxbybzbMbNbOb1b2b3b

620 if rel_info.passive_deletes: 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

621 rel_kwargs["passive_deletes"] = rel_info.passive_deletes 2pd%b[ 'bqd} ~ ' ( abbbrdlbmbnb) * + obpbqbsdAbBbCb, - . DbEbFbtdPbQbRb/ : ; SbTbUbud4b5b6b= ? @ 7b8b9b

622 if rel_info.link_model: 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

623 ins = inspect(rel_info.link_model) 1%YZ0KL123MNO456PQR789STU!#$VWX

624 local_table = getattr(ins, "local_table") # noqa: B009 1%YZ0KL123MNO456PQR789STU!#$VWX

625 if local_table is None: 1%YZ0KL123MNO456PQR789STU!#$VWX

626 raise RuntimeError( 

627 "Couldn't find the secondary table for " 

628 f"model {rel_info.link_model}" 

629 ) 

630 rel_kwargs["secondary"] = local_table 1%YZ0KL123MNO456PQR789STU!#$VWX

631 rel_args: List[Any] = [] 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

632 if rel_info.sa_relationship_args: 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

633 rel_args.extend(rel_info.sa_relationship_args) 

634 if rel_info.sa_relationship_kwargs: 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

635 rel_kwargs.update(rel_info.sa_relationship_kwargs) 

636 rel_value = relationship(relationship_to, *rel_args, **rel_kwargs) 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

637 setattr(cls, rel_name, rel_value) # Fix #315 2a pd!cI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb qd(b)bg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc rd@b[b]bk l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd sdicjckcq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce tdAcBcCcw x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf udScTcUcC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

638 # SQLAlchemy no longer uses dict_ 

639 # Ref: https://github.com/sqlalchemy/sqlalchemy/commit/428ea01f00a9cc7f85e435018565eb6da7af1b77 

640 # Tag: 1.4.36 

641 DeclarativeMeta.__init__(cls, classname, bases, dict_, **kw) 2a efkele~jmlnlEl%lglmmakjdbkckdk^jyl'lpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok_jzl)lqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk`jAl+lrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk{jBl-lsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5k|jCl/ltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.k}jDl;lud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

642 else: 

643 ModelMetaclass.__init__(cls, classname, bases, dict_, **kw) 2a mlnlymzmAmBmsm=dCfDfEfFfI nf?dJ @d[d2mWmb olplCmDmEmFmtmGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydi j zdAdBdCd3mXmc qlrlGmHmImJmumIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdIdn o p JdKdLdMdNdOd4mYmd sltlKmLmMmNmvmLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUdt u v VdWdXdYdZd0d5mZme ulvlOmPmQmRmwmOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6dz A B 7d8d9d!d#d$d6m0mf wlxlSmTmUmVmxmRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dF G H ,d-d.d/d:d;d7m1m

644 

645 

646def get_sqlalchemy_type(field: Any) -> Any: 1abcdef

647 if IS_PYDANTIC_V2: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

648 field_info = field 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

649 else: 

650 field_info = field.field_info 2a efkelemlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebesltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejewlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

651 sa_type = getattr(field_info, "sa_type", Undefined) # noqa: B009 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

652 if sa_type is not Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

653 return sa_type 

654 

655 type_ = get_sa_type_from_field(field) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

656 metadata = get_field_metadata(field) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

657 

658 # Check enums first as an enum can also be a str, needed by Pydantic/FastAPI 

659 if issubclass(type_, Enum): 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

660 return sa_Enum(type_) 2a mlnlb olplc qlrld sltle ulvlf wlxl

661 if issubclass( 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

662 type_, 

663 ( 

664 str, 

665 ipaddress.IPv4Address, 

666 ipaddress.IPv4Network, 

667 ipaddress.IPv6Address, 

668 ipaddress.IPv6Network, 

669 Path, 

670 EmailStr, 

671 ), 

672 ): 

673 max_length = getattr(metadata, "max_length", None) 2a efkeleElglakjdbkckdk^jylpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dFlhllkkdmknkok_jzlqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dHlilwkldxkykzk`jAlrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeKljlMkmdNkOkPk{jBlsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeNlkl2knd3k4k5k|jCltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejeQlll+kod,k-k.k}jDlud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

674 if max_length: 2a efkeleElglakjdbkckdk^jylpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dFlhllkkdmknkok_jzlqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dHlilwkldxkykzk`jAlrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeKljlMkmdNkOkPk{jBlsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeNlkl2knd3k4k5k|jCltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejeQlll+kod,k-k.k}jDlud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

675 return AutoString(length=max_length) 

676 return AutoString 2a efkeleElglakjdbkckdk^jylpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dFlhllkkdmknkok_jzlqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dHlilwkldxkykzk`jAlrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeKljlMkmdNkOkPk{jBlsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeNlkl2knd3k4k5k|jCltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejeQlll+kod,k-k.k}jDlud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

677 if issubclass(type_, float): 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

678 return Float 

679 if issubclass(type_, bool): 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

680 return Boolean 2!b] ^ cbdbebrbsbtbGbHbIbVbWbXb

681 if issubclass(type_, int): 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

682 return Integer 2a efkeleEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejeQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

683 if issubclass(type_, datetime): 2a efkele~jmlnl=l?l@lb me]d^dkkolpl[l]l^lc vewe_d`d{d|dvkqlrl_l`l{ld NeOe}d~daebeLksltl|l}l~le 5e6ecedeeefe1kulvlambmcmf :e;egeheieje*kwlxldmemfm

684 return DateTime 

685 if issubclass(type_, date): 2a efkele~jmlnl=l?l@lb me]d^dkkolpl[l]l^lc vewe_d`d{d|dvkqlrl_l`l{ld NeOe}d~daebeLksltl|l}l~le 5e6ecedeeefe1kulvlambmcmf :e;egeheieje*kwlxldmemfm

686 return Date 

687 if issubclass(type_, timedelta): 2a efkele~jmlnl=l?l@lb me]d^dkkolpl[l]l^lc vewe_d`d{d|dvkqlrl_l`l{ld NeOe}d~daebeLksltl|l}l~le 5e6ecedeeefe1kulvlambmcmf :e;egeheieje*kwlxldmemfm

688 return Interval 

689 if issubclass(type_, time): 2a efkele~jmlnl=l?l@lb me]d^dkkolpl[l]l^lc vewe_d`d{d|dvkqlrl_l`l{ld NeOe}d~daebeLksltl|l}l~le 5e6ecedeeefe1kulvlambmcmf :e;egeheieje*kwlxldmemfm

690 return Time 

691 if issubclass(type_, bytes): 2a efkele~jmlnl=l?l@lb me]d^dkkolpl[l]l^lc vewe_d`d{d|dvkqlrl_l`l{ld NeOe}d~daebeLksltl|l}l~le 5e6ecedeeefe1kulvlambmcmf :e;egeheieje*kwlxldmemfm

692 return LargeBinary 

693 if issubclass(type_, Decimal): 2a efkele~jmlnl=l?l@lb me]d^dkkolpl[l]l^lc vewe_d`d{d|dvkqlrl_l`l{ld NeOe}d~daebeLksltl|l}l~le 5e6ecedeeefe1kulvlambmcmf :e;egeheieje*kwlxldmemfm

694 return Numeric( 2efmeveweNeOe5e6e:e;e

695 precision=getattr(metadata, "max_digits", None), 

696 scale=getattr(metadata, "decimal_places", None), 

697 ) 

698 if issubclass(type_, uuid.UUID): 2a kele~jmlnl=l?l@lb ]d^dkkolpl[l]l^lc _d`d{d|dvkqlrl_l`l{ld }d~daebeLksltl|l}l~le cedeeefe1kulvlambmcmf geheieje*kwlxldmemfm

699 return Uuid 2a kele~jmlnlb ]d^dkkolplc _d`d{d|dvkqlrld }d~daebeLksltle cedeeefe1kulvlf geheieje*kwlxl

700 raise ValueError(f"{type_} has no matching SQLAlchemy type") 2=l?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfm

701 

702 

703def get_column_from_field(field: Any) -> Column: # type: ignore 1abcdef

704 if IS_PYDANTIC_V2: 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

705 field_info = field 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

706 else: 

707 field_info = field.field_info 2a efkelemlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebesltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejewlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

708 sa_column = getattr(field_info, "sa_column", Undefined) 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

709 if isinstance(sa_column, Column): 2a efkele~jmlnlEl%lglmmakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhlnmlkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lllrm+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

710 return sa_column 2mmnmompmqmrm

711 sa_type = get_sqlalchemy_type(field) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

712 primary_key = getattr(field_info, "primary_key", Undefined) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

713 if primary_key is Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

714 primary_key = False 2a efkelemlnlEl%lglakjdbkckdk^jylpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dolplFl(lhllkkdmknkok_jzlqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dqlrlHl*lilwkldxkykzk`jAlrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebesltlKl,ljlMkmdNkOkPk{jBlsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeulvlNl.lkl2knd3k4k5k|jCltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejewlxlQl:lll+kod,k-k.k}jDlud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

715 index = getattr(field_info, "index", Undefined) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

716 if index is Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

717 index = False 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

718 nullable = not primary_key and is_field_noneable(field) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

719 # Override derived nullability if the nullable property is set explicitly 

720 # on the field 

721 field_nullable = getattr(field_info, "nullable", Undefined) # noqa: B009 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

722 if field_nullable is not Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

723 assert not isinstance(field_nullable, UndefinedType) 2^jyl'l_jzl)l`jAl+l{jBl-l|jCl/l}jDl;l

724 nullable = field_nullable 2^jyl'l_jzl)l`jAl+l{jBl-l|jCl/l}jDl;l

725 args = [] 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

726 foreign_key = getattr(field_info, "foreign_key", Undefined) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

727 if foreign_key is Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

728 foreign_key = None 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

729 unique = getattr(field_info, "unique", Undefined) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

730 if unique is Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

731 unique = False 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

732 if foreign_key: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

733 if field_info.ondelete == "SET NULL" and not nullable: 2a jdpd!c{kffgfhfifjfkflfmfI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kdqd(b)b|kneoepeqereseteueg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ldrd@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMek l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdsdicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4eq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndtdAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ew x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odudScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

734 raise RuntimeError('ondelete="SET NULL" requires nullable=True') 2pdqdrdsdtdud

735 assert isinstance(foreign_key, str) 2a jd!c{kffgfhfifjfkflfmfI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kd(b)b|kneoepeqereseteueg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ld@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMek l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4eq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ew x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

736 ondelete = getattr(field_info, "ondelete", Undefined) 2a jd!c{kffgfhfifjfkflfmfI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kd(b)b|kneoepeqereseteueg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ld@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMek l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4eq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ew x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

737 if ondelete is Undefined: 2a jd!c{kffgfhfifjfkflfmfI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kd(b)b|kneoepeqereseteueg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ld@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMek l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4eq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ew x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

738 ondelete = None 2a jd!c{kffgfhfifjfkflfmfI J % Y !b^c#b_c#c$c'c(cb kd(b)b|kneoepeqereseteueg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b:b;b=b?bc ld@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMek l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bccdcecfcgchcd mdicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4eq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcucvcwcxcyczce ndAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ew x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMcNcOcPcQcRcf odScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c4c5c6c7c8c9c

739 assert isinstance(ondelete, (str, type(None))) # for typing 2a jd!c{kffgfhfifjfkflfmfI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kd(b)b|kneoepeqereseteueg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ld@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMek l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4eq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ew x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

740 args.append(ForeignKey(foreign_key, ondelete=ondelete)) 2a jd!c{kffgfhfifjfkflfmfI J % Y !b^c#b_c#c$c$b%c%b[ 'b'c(cb kd(b)b|kneoepeqereseteueg h i j Z 0 K L ] ^ )c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bc ld@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMek l m n o p 1 2 3 M N O cbdbeb+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchcd mdicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4eq r s t u v 4 5 6 P Q R rbsbtb.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczce ndAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ew x y z A B 7 8 9 S T U GbHbIb;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcf odScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfC D E F G H ! # $ V W X VbWbXb@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9c

741 kwargs = { 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

742 "primary_key": primary_key, 

743 "nullable": nullable, 

744 "index": index, 

745 "unique": unique, 

746 } 

747 sa_default = Undefined 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

748 if field_info.default_factory: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

749 sa_default = field_info.default_factory 2kele~j]d^dkk_d`d{d|dvk}d~daebeLkcedeeefe1kgeheieje*k

750 elif field_info.default is not Undefined: 2a efkelemlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebesltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejewlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

751 sa_default = field_info.default 2a efkeleEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefeNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheiejeQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

752 if sa_default is not Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

753 kwargs["default"] = sa_default 2a efkele~jEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLkKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

754 sa_column_args = getattr(field_info, "sa_column_args", Undefined) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

755 if sa_column_args is not Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

756 args.extend(list(cast(Sequence[Any], sa_column_args))) 2ElFlHlKlNlQl

757 sa_column_kwargs = getattr(field_info, "sa_column_kwargs", Undefined) 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

758 if sa_column_kwargs is not Undefined: 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

759 kwargs.update(cast(Dict[Any, Any], sa_column_kwargs)) 2%l(l*l,l.l:l

760 return Column(sa_type, *args, **kwargs) # type: ignore 2a efkele~jmlnlEl%lglakjdbkckdk=l^jyl'lpdek?l@lgm!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb me]d^dkkolplFl(lhllkkdmknkok[l_jzl)lqdpk]l^lhm(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc vewe_d`d{d|dvkqlrlHl*lilwkldxkykzk_l`jAl+lrdAk`l{lim@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd NeOe}d~daebeLksltlKl,ljlMkmdNkOkPk|l{jBl-lsdQk}l~ljmicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 5e6ecedeeefe1kulvlNl.lkl2knd3k4k5kam|jCl/ltd6kbmcmkmAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if :e;egeheieje*kwlxlQl:lll+kod,k-k.kdm}jDl;lud/kemfmlmScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

761 

762 

763class_registry = weakref.WeakValueDictionary() # type: ignore 1abcdef

764 

765default_registry = registry() 1abcdef

766 

767_TSQLModel = TypeVar("_TSQLModel", bound="SQLModel") 1abcdef

768 

769 

770class SQLModel(BaseModel, metaclass=SQLModelMetaclass, registry=default_registry): 1abcdef

771 # SQLAlchemy needs to set weakref(s), Pydantic will set the other slots values 

772 __slots__ = ("__weakref__",) 1abcdef

773 __tablename__: ClassVar[Union[str, Callable[..., str]]] 1abcdef

774 __sqlmodel_relationships__: ClassVar[Dict[str, RelationshipProperty[Any]]] 1abcdef

775 __name__: ClassVar[str] 1abcdef

776 metadata: ClassVar[MetaData] 1abcdef

777 __allow_unmapped__ = True # https://docs.sqlalchemy.org/en/20/changelog/migration_20.html#migration-20-step-six 1abcdef

778 

779 if IS_PYDANTIC_V2: 1abcdef

780 model_config = SQLModelConfig(from_attributes=True) 1abcdef

781 else: 

782 

783 class Config: 1abcdef

784 orm_mode = True 1abcdef

785 

786 def __new__(cls, *args: Any, **kwargs: Any) -> Any: 1abcdef

787 new_object = super().__new__(cls) 2bqkncqdq#plnmn|mnnonpnqnrnsnefkele~j4p?p@pymakzmjdbkckdk^jAmBmsmektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmeqznfqgq$pAnBn'mCnDnEnFnGnHnhqIniqjq%pJnKn(mLnMnNnOnPnQnme]d^dkkTp[p]pCmlkDmkdmknkok_jEmFmtmpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmkqZnlqmq'p0n1n)m2n3n4n5n6n7nnq8noqpq(p9n!n*m#n$n%n'n(n)nqq*nrqsq)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvkUp^p_pGmwkHmldxkykzk`jImJmumAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmtq|nuqvq*p}n~n,maobocodoeofowqgoxqyq+phoio-mjokolomonooozqpoAqBq,pqoro.msotouovowoxoNeOe}d~daebeLkVp`p{pKmMkLmmdNkOkPk{jMmNmvmQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZmCqGoDqEq-pHoIo/mJoKoLoMoNoOoFqPoGqHq.pQoRo:mSoToUoVoWoXoIqYoJqKq/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1kWp|p}pOm2kPmnd3k4k5k|jQmRmwm6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mLq(oMqNq:p)o*o=m+o,o-o.o/o:oOq;oPqQq;p=o?o?m@o[o]o^o_o`oRq{oSqTq=p|o}o@m~oapbpcpdpep:e;egeheieje*kXp~paqSm+kTmod,k-k.k}jUmVmxm/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

788 # SQLAlchemy doesn't call __init__ on the base class when querying from DB 

789 # Ref: https://docs.sqlalchemy.org/en/14/orm/constructors.html 

790 # Set __fields_set__ here, that would have been set when calling __init__ 

791 # in the Pydantic model so that when SQLAlchemy sets attributes that are 

792 # added (e.g. when querying from DB) to the __fields_set__, this already exists 

793 init_pydantic_private_attrs(new_object) 2bqkncqdq#plnmn|mnnonpnqnrnsnefkele~j4p?p@pymakzmjdbkckdk^jAmBmsmektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmeqznfqgq$pAnBn'mCnDnEnFnGnHnhqIniqjq%pJnKn(mLnMnNnOnPnQnme]d^dkkTp[p]pCmlkDmkdmknkok_jEmFmtmpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmkqZnlqmq'p0n1n)m2n3n4n5n6n7nnq8noqpq(p9n!n*m#n$n%n'n(n)nqq*nrqsq)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvkUp^p_pGmwkHmldxkykzk`jImJmumAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmtq|nuqvq*p}n~n,maobocodoeofowqgoxqyq+phoio-mjokolomonooozqpoAqBq,pqoro.msotouovowoxoNeOe}d~daebeLkVp`p{pKmMkLmmdNkOkPk{jMmNmvmQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZmCqGoDqEq-pHoIo/mJoKoLoMoNoOoFqPoGqHq.pQoRo:mSoToUoVoWoXoIqYoJqKq/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1kWp|p}pOm2kPmnd3k4k5k|jQmRmwm6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mLq(oMqNq:p)o*o=m+o,o-o.o/o:oOq;oPqQq;p=o?o?m@o[o]o^o_o`oRq{oSqTq=p|o}o@m~oapbpcpdpep:e;egeheieje*kXp~paqSm+kTmod,k-k.k}jUmVmxm/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

794 return new_object 2bqkncqdq#plnmn|mnnonpnqnrnsnefkele~j4p?p@pymakzmjdbkckdk^jAmBmsmektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2mWmeqznfqgq$pAnBn'mCnDnEnFnGnHnhqIniqjq%pJnKn(mLnMnNnOnPnQnme]d^dkkTp[p]pCmlkDmkdmknkok_jEmFmtmpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mXmkqZnlqmq'p0n1n)m2n3n4n5n6n7nnq8noqpq(p9n!n*m#n$n%n'n(n)nqq*nrqsq)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvkUp^p_pGmwkHmldxkykzk`jImJmumAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mYmtq|nuqvq*p}n~n,maobocodoeofowqgoxqyq+phoio-mjokolomonooozqpoAqBq,pqoro.msotouovowoxoNeOe}d~daebeLkVp`p{pKmMkLmmdNkOkPk{jMmNmvmQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mZmCqGoDqEq-pHoIo/mJoKoLoMoNoOoFqPoGqHq.pQoRo:mSoToUoVoWoXoIqYoJqKq/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1kWp|p}pOm2kPmnd3k4k5k|jQmRmwm6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6m0mLq(oMqNq:p)o*o=m+o,o-o.o/o:oOq;oPqQq;p=o?o?m@o[o]o^o_o`oRq{oSqTq=p|o}o@m~oapbpcpdpep:e;egeheieje*kXp~paqSm+kTmod,k-k.k}jUmVmxm/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m1m

795 

796 def __init__(__pydantic_self__, **data: Any) -> None: 1abcdef

797 # Uses something other than `self` the first arg to allow "self" as a 

798 # settable attribute 

799 

800 # SQLAlchemy does very dark black magic and modifies the __init__ method in 

801 # sqlalchemy.orm.instrumentation._generate_init() 

802 # so, to make SQLAlchemy work, it's needed to explicitly call __init__ to 

803 # trigger all the SQLAlchemy logic, it doesn't work using cls.__new__, setting 

804 # attributes obj.__dict__, etc. The __init__ method has to be called. But 

805 # there are cases where calling all the default logic is not ideal, e.g. 

806 # when calling Model.model_validate(), as the validation is done outside 

807 # of instance creation. 

808 # At the same time, __init__ is what users would normally call, by creating 

809 # a new instance, which should have validation and all the default logic. 

810 # So, to be able to set up the internal SQLAlchemy logic alone without 

811 # executing the rest, and support things like Model.model_validate(), we 

812 # use a contextvar to know if we should execute everything. 

813 if finish_init.get(): 2bqkncqdq#plnmn|mnnonpnqnrnsnefkele~j4p?pymakzmjdbkckdk^jAmBmsmektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2meqznfqgq$pAnBn'mCnDnEnFnGnHnhqIniqjq%pJnKn(mLnMnNnOnPnQnme]d^dkkTp[pCmlkDmkdmknkok_jEmFmtmpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mkqZnlqmq'p0n1n)m2n3n4n5n6n7nnq8noqpq(p9n!n*m#n$n%n'n(n)nqq*nrqsq)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvkUp^pGmwkHmldxkykzk`jImJmumAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mtq|nuqvq*p}n~n,maobocodoeofowqgoxqyq+phoio-mjokolomonooozqpoAqBq,pqoro.msotouovowoxoNeOe}d~daebeLkVp`pKmMkLmmdNkOkPk{jMmNmvmQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mCqGoDqEq-pHoIo/mJoKoLoMoNoOoFqPoGqHq.pQoRo:mSoToUoVoWoXoIqYoJqKq/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1kWp|pOm2kPmnd3k4k5k|jQmRmwm6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6mLq(oMqNq:p)o*o=m+o,o-o.o/o:oOq;oPqQq;p=o?o?m@o[o]o^o_o`oRq{oSqTq=p|o}o@m~oapbpcpdpep:e;egeheieje*kXp~pSm+kTmod,k-k.k}jUmVmxm/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m

814 sqlmodel_init(self=__pydantic_self__, data=data) 2bqkncqdq#plnmn|mnnonpnqnrnsnefkele~j4p?pymakzmjdbkckdk^jAmBmsmektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j2meqznfqgq$pAnBn'mCnDnEnFnGnHnhqIniqjq%pJnKn(mLnMnNnOnPnQnme]d^dkkTp[pCmlkDmkdmknkok_jEmFmtmpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg3mkqZnlqmq'p0n1n)m2n3n4n5n6n7nnq8noqpq(p9n!n*m#n$n%n'n(n)nqq*nrqsq)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvkUp^pGmwkHmldxkykzk`jImJmumAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh4mtq|nuqvq*p}n~n,maobocodoeofowqgoxqyq+phoio-mjokolomonooozqpoAqBq,pqoro.msotouovowoxoNeOe}d~daebeLkVp`pKmMkLmmdNkOkPk{jMmNmvmQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai5mCqGoDqEq-pHoIo/mJoKoLoMoNoOoFqPoGqHq.pQoRo:mSoToUoVoWoXoIqYoJqKq/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1kWp|pOm2kPmnd3k4k5k|jQmRmwm6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i6mLq(oMqNq:p)o*o=m+o,o-o.o/o:oOq;oPqQq;p=o?o?m@o[o]o^o_o`oRq{oSqTq=p|o}o@m~oapbpcpdpep:e;egeheieje*kXp~pSm+kTmod,k-k.k}jUmVmxm/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj7m

815 

816 def __setattr__(self, name: str, value: Any) -> None: 1abcdef

817 if name in {"_sa_instance_state"}: 2kn#plnmn|mnnonpnqnrnsnefkele~j?p@pakjdbkckdk^jektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jWmzn$pAnBn'mCnDnEnFnGnHnIn%pJnKn(mLnMnNnOnPnQnme]d^dkk[p]plkkdmknkok_jpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgXmZn'p0n1n)m2n3n4n5n6n7n8n(p9n!n*m#n$n%n'n(n)n*n)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvk^p_pwkldxkykzk`jAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhYm|n*p}n~n,maobocodoeofogo+phoio-mjokolomonooopo,pqoro.msotouovowoxoNeOe}d~daebeLk`p{pMkmdNkOkPk{jQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiZmGo-pHoIo/mJoKoLoMoNoOoPo.pQoRo:mSoToUoVoWoXoYo/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1k|p}p2knd3k4k5k|j6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i0m(o:p)o*o=m+o,o-o.o/o:o;o;p=o?o?m@o[o]o^o_o`o{o=p|o}o@m~oapbpcpdpep:e;egeheieje*k~paq+kod,k-k.k}j/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj1m

818 self.__dict__[name] = value 2kn#plnmn|mnnonpnqnrnsnefkele~jakjdbkckdk^jektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jzn$pAnBn'mCnDnEnFnGnHnIn%pJnKn(mLnMnNnOnPnQnme]d^dkklkkdmknkok_jpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn'p0n1n)m2n3n4n5n6n7n8n(p9n!n*m#n$n%n'n(n)n*n)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvkwkldxkykzk`jAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n*p}n~n,maobocodoeofogo+phoio-mjokolomonooopo,pqoro.msotouovowoxoNeOe}d~daebeLkMkmdNkOkPk{jQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGo-pHoIo/mJoKoLoMoNoOoPo.pQoRo:mSoToUoVoWoXoYo/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1k2knd3k4k5k|j6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o:p)o*o=m+o,o-o.o/o:o;o;p=o?o?m@o[o]o^o_o`o{o=p|o}o@m~oapbpcpdpep:e;egeheieje*k+kod,k-k.k}j/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

819 return 2kn#plnmn|mnnonpnqnrnsnefkele~jakjdbkckdk^jektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jzn$pAnBn'mCnDnEnFnGnHnIn%pJnKn(mLnMnNnOnPnQnme]d^dkklkkdmknkok_jpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn'p0n1n)m2n3n4n5n6n7n8n(p9n!n*m#n$n%n'n(n)n*n)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvkwkldxkykzk`jAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n*p}n~n,maobocodoeofogo+phoio-mjokolomonooopo,pqoro.msotouovowoxoNeOe}d~daebeLkMkmdNkOkPk{jQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGo-pHoIo/mJoKoLoMoNoOoPo.pQoRo:mSoToUoVoWoXoYo/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1k2knd3k4k5k|j6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o:p)o*o=m+o,o-o.o/o:o;o;p=o?o?m@o[o]o^o_o`o{o=p|o}o@m~oapbpcpdpep:e;egeheieje*k+kod,k-k.k}j/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

820 else: 

821 # Set in SQLAlchemy, before Pydantic to trigger events and updates 

822 if is_table_model_class(self.__class__) and is_instrumented(self, name): # type: ignore[no-untyped-call] 2kn#plnmn|mnnonpnqnrnsnefkele~j?p@pakjdbkckdk^jektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jWmzn$pAnBn'mCnDnEnFnGnHnIn%pJnKn(mLnMnNnOnPnQnme]d^dkk[p]plkkdmknkok_jpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgXmZn'p0n1n)m2n3n4n5n6n7n8n(p9n!n*m#n$n%n'n(n)n*n)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvk^p_pwkldxkykzk`jAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhYm|n*p}n~n,maobocodoeofogo+phoio-mjokolomonooopo,pqoro.msotouovowoxoNeOe}d~daebeLk`p{pMkmdNkOkPk{jQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiZmGo-pHoIo/mJoKoLoMoNoOoPo.pQoRo:mSoToUoVoWoXoYo/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1k|p}p2knd3k4k5k|j6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i0m(o:p)o*o=m+o,o-o.o/o:o;o;p=o?o?m@o[o]o^o_o`o{o=p|o}o@m~oapbpcpdpep:e;egeheieje*k~paq+kod,k-k.k}j/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj1m

823 set_attribute(self, name, value) 2kn#plnmn|mnnonpnqnrnsnefkele~jakjdbkckdk^jektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jzn$pAnBn'mCnDnEnFnGnHnIn%pJnKn(mLnMnNnOnPnQnme]d^dkklkkdmknkok_jpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn'p0n1n)m2n3n4n5n6n7n8n(p9n!n*m#n$n%n'n(n)n*n)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvkwkldxkykzk`jAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n*p}n~n,maobocodoeofogo+phoio-mjokolomonooopo,pqoro.msotouovowoxoNeOe}d~daebeLkMkmdNkOkPk{jQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGo-pHoIo/mJoKoLoMoNoOoPo.pQoRo:mSoToUoVoWoXoYo/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1k2knd3k4k5k|j6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o:p)o*o=m+o,o-o.o/o:o;o;p=o?o?m@o[o]o^o_o`o{o=p|o}o@m~oapbpcpdpep:e;egeheieje*k+kod,k-k.k}j/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

824 # Set in Pydantic model to trigger possible validation changes, only for 

825 # non relationship values 

826 if name not in self.__sqlmodel_relationships__: 2kn#plnmn|mnnonpnqnrnsnefkele~j?p@pakjdbkckdk^jektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jWmzn$pAnBn'mCnDnEnFnGnHnIn%pJnKn(mLnMnNnOnPnQnme]d^dkk[p]plkkdmknkok_jpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgXmZn'p0n1n)m2n3n4n5n6n7n8n(p9n!n*m#n$n%n'n(n)n*n)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvk^p_pwkldxkykzk`jAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhYm|n*p}n~n,maobocodoeofogo+phoio-mjokolomonooopo,pqoro.msotouovowoxoNeOe}d~daebeLk`p{pMkmdNkOkPk{jQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiZmGo-pHoIo/mJoKoLoMoNoOoPo.pQoRo:mSoToUoVoWoXoYo/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1k|p}p2knd3k4k5k|j6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i0m(o:p)o*o=m+o,o-o.o/o:o;o;p=o?o?m@o[o]o^o_o`o{o=p|o}o@m~oapbpcpdpep:e;egeheieje*k~paq+kod,k-k.k}j/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj1m

827 super().__setattr__(name, value) 2kn#plnmn|mnnonpnqnrnsnefkele~j?p@pakjdbkckdk^jektpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jWmzn$pAnBn'mCnDnEnFnGnHnIn%pJnKn(mLnMnNnOnPnQnme]d^dkk[p]plkkdmknkok_jpkRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgXmZn'p0n1n)m2n3n4n5n6n7n8n(p9n!n*m#n$n%n'n(n)n*n)p+n,n+m-n.n/n:n;n=nvewe_d`d{d|dvk^p_pwkldxkykzk`jAk?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhYm|n*p}n~n,maobocodoeofogo+phoio-mjokolomonooopo,pqoro.msotouovowoxoNeOe}d~daebeLk`p{pMkmdNkOkPk{jQkyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiZmGo-pHoIo/mJoKoLoMoNoOoPo.pQoRo:mSoToUoVoWoXoYo/pZo0o;m1o2o3o4o5o6o5e6ecedeeefe1k|p}p2knd3k4k5k|j6k7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i0m(o:p)o*o=m+o,o-o.o/o:o;o;p=o?o?m@o[o]o^o_o`o{o=p|o}o@m~oapbpcpdpep:e;egeheieje*k~paq+kod,k-k.k}j/kfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj1m

828 

829 def __repr_args__(self) -> Sequence[Tuple[Optional[str], Any]]: 1abcdef

830 # Don't show SQLAlchemy private attributes 

831 return [ 2sm[ tm' ( um) * + vm, - . wm/ : ; xm= ? @

832 (k, v) 

833 for k, v in super().__repr_args__() 

834 if not (isinstance(k, str) and k.startswith("_sa_")) 

835 ] 

836 

837 @declared_attr # type: ignore 1abcdef

838 def __tablename__(cls) -> str: 1abcdef

839 return cls.__name__.lower() 2a Uqefkele~jmlnlEl%lglmmakjdbkckdk^jyl'lpdek!c{kffgfhfifjfkflfmfTlUlWjXj=dCfDfEfFfI nf?digJ @d[dYjZjfkgkhk0j1j2j3j% Y !b4jik5j6j7j8j9j!jjk^c#b_c#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jb VqWqme]d^dkkolplFl(lhlnmlkkdmknkok_jzl)lqdpk(b)b|kneoepeqereseteueVlWljgkgGlvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgqkrkskngogpgqgZ 0 K L ] ^ rgtksgtgugvgwgxguk)c*c_ ` `c{c*b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgc XqYqZqvewe_d`d{d|dvkqlrlHl*lilomwkldxkykzk`jAl+lrdAk@b[b]b}k~kxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeXlYlZl0lRgSgTgUgIlJlDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgBkCkDkEkFkGkZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8gHkIk9g!g#g$g%g'g(g)g*g+g,g-gJkKk+c,c-cfbgbhb|c}c~c^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhd 0q1q2qNeOe}d~daebeLksltlKl,ljlpmMkmdNkOkPk{jBl-lsdQkicjckcalblPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e1l2l3l4lwhxhyhzhLlMlPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhRkSkTkUkVkWkEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhXkYkOhPhQhRhShThUhVhWhXhYhZhZk0k.c/c:cubvbwbadbdcdlcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haie 3q4q5q5e6ecedeeefe1kulvlNl.lklqm2knd3k4k5k|jCl/ltd6kAcBcCccldl7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e5l6l7l8lbicidieiOlPl1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiii7k8k9k!k#k$kjikiliminioipiqi7 8 9 S T U GbHbIbrisi%k'ktiuiviwixiyiziAiBiCiDiEi(k)k;c=c?cJbKbLbddedfdDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)if 6q7q8q:e;egeheieje*kwlxlQl:lllrm+kod,k-k.k}jDl;lud/kScTcUcelfl=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf9l!l#l$l*i+i,i-iRlSl%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i:k;k=k?k@k[k=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i]k^k}i~iajbjcjdjejfjgjhjijjj_k`k@c[c]cYbZb0bgdhdidVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

840 

841 @classmethod 1abcdef

842 def model_validate( # type: ignore[override] 1abcdef

843 cls: Type[_TSQLModel], 

844 obj: Any, 

845 *, 

846 strict: Union[bool, None] = None, 

847 from_attributes: Union[bool, None] = None, 

848 context: Union[Dict[str, Any], None] = None, 

849 update: Union[Dict[str, Any], None] = None, 

850 ) -> _TSQLModel: 

851 return sqlmodel_validate( 2knlnmn|mnnonpnqnrnsn?p@ptnunvnwnxnyn=dCfDfEfFfI nf?dJ @d[dWmznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQn[p]pTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydi j zdAdBdCdXmZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=n^p_p[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdIdn o p JdKdLdMdNdOdYm|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxo`p{pAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUdt u v VdWdXdYdZd0dZmGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o|p}p9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6dz A B 7d8d9d!d#d$d0m(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep~paqhpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dF G H ,d-d.d/d:d;d1m

852 cls=cls, 

853 obj=obj, 

854 strict=strict, 

855 from_attributes=from_attributes, 

856 context=context, 

857 update=update, 

858 ) 

859 

860 def model_dump( 1abcdef

861 self, 

862 *, 

863 mode: Union[Literal["json", "python"], str] = "python", 

864 include: Union[IncEx, None] = None, 

865 exclude: Union[IncEx, None] = None, 

866 context: Union[Any, None] = None, 

867 by_alias: Union[bool, None] = None, 

868 exclude_unset: bool = False, 

869 exclude_defaults: bool = False, 

870 exclude_none: bool = False, 

871 round_trip: bool = False, 

872 warnings: Union[bool, Literal["none", "warn", "error"]] = True, 

873 fallback: Union[Callable[[Any], Any], None] = None, 

874 serialize_as_any: bool = False, 

875 ) -> Dict[str, Any]: 

876 if PYDANTIC_MINOR_VERSION < (2, 11): 2knlnmn|mnnonpnqnrnsnefkele4ptpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnme]d^dTpRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

877 by_alias = by_alias or False 2knlnmn|mnnonpnqnrnsnefkele4ptpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnme]d^dTpRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

878 if PYDANTIC_MINOR_VERSION >= (2, 7): 2knlnmn|mnnonpnqnrnsnefkele4ptpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnme]d^dTpRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

879 extra_kwargs: Dict[str, Any] = { 2|mefkele4ptpup!cffgfhfifjfkflfmfWjXj=dI ?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j'm(mme]d^dTpRnSn(b)bneoepeqereseteuejgkgvdwdg h xdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg)m*m+mvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUgDdEdFdk l m GdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh,m-m.mNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhPdQdRdq r s SdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai/m:m;m5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei1d2d3dw x y 4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i=m?m@m:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-i%d'd(dC D E )d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

880 "context": context, 

881 "serialize_as_any": serialize_as_any, 

882 } 

883 if PYDANTIC_MINOR_VERSION >= (2, 11): 2knlnmn|mnnonpnqnrnsnefkele4ptpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnme]d^dTpRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

884 extra_kwargs["fallback"] = fallback 2'm(mme]d^dTpRnSn(b)bneoepeqereseteuejgkgvdwdg h xdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg)m*m+mvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUgDdEdFdk l m GdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh,m-m.mNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhPdQdRdq r s SdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai/m:m;m5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei1d2d3dw x y 4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i=m?m@m:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-i%d'd(dC D E )d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

885 else: 

886 extra_kwargs = {} 2knlnmn|mnnonpnqnrnsnefkele4ptpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnme]d^dTpRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

887 if IS_PYDANTIC_V2: 2knlnmn|mnnonpnqnrnsnefkele4ptpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnme]d^dTpRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

888 return super().model_dump( 2|mefkele4ptpup!cffgfhfifjfkflfmfWjXj=dI ?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j'm(mme]d^dTpRnSn(b)bneoepeqereseteuejgkgvdwdg h xdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQg)m*m+mvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUgDdEdFdk l m GdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh,m-m.mNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhPdQdRdq r s SdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~hai/m:m;m5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei1d2d3dw x y 4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i=m?m@m:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-i%d'd(dC D E )d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

889 mode=mode, 

890 include=include, 

891 exclude=exclude, 

892 by_alias=by_alias, 

893 exclude_unset=exclude_unset, 

894 exclude_defaults=exclude_defaults, 

895 exclude_none=exclude_none, 

896 round_trip=round_trip, 

897 warnings=warnings, 

898 **extra_kwargs, 

899 ) 

900 else: 

901 return super().dict( 2knlnmn|mnnonpnqnrnsnefkele4ptpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnme]d^dTpRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

902 include=include, 

903 exclude=exclude, 

904 by_alias=by_alias or False, 

905 exclude_unset=exclude_unset, 

906 exclude_defaults=exclude_defaults, 

907 exclude_none=exclude_none, 

908 ) 

909 

910 @deprecated( 1abcdef

911 """ 

912 🚨 `obj.dict()` was deprecated in SQLModel 0.0.14, you should 

913 instead use `obj.model_dump()`. 

914 """ 

915 ) 

916 def dict( 1abcdef

917 self, 

918 *, 

919 include: Union[IncEx, None] = None, 

920 exclude: Union[IncEx, None] = None, 

921 by_alias: bool = False, 

922 exclude_unset: bool = False, 

923 exclude_defaults: bool = False, 

924 exclude_none: bool = False, 

925 ) -> Dict[str, Any]: 

926 return self.model_dump( 2knlnmn|mnnonpnqnrnsn4ptnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dY #bznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnTpTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdK L _ ` Zn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nUp[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdM N O fbgbhb|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoVpAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dP Q R ubvbwbGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6oWp9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dS T U JbKbLb(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpepXphpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;dV W X YbZb0b

927 include=include, 

928 exclude=exclude, 

929 by_alias=by_alias, 

930 exclude_unset=exclude_unset, 

931 exclude_defaults=exclude_defaults, 

932 exclude_none=exclude_none, 

933 ) 

934 

935 @classmethod 1abcdef

936 @deprecated( 1abcdef

937 """ 

938 🚨 `obj.from_orm(data)` was deprecated in SQLModel 0.0.14, you should 

939 instead use `obj.model_validate(data)`. 

940 """ 

941 ) 

942 def from_orm( 1abcdef

943 cls: Type[_TSQLModel], obj: Any, update: Optional[Dict[str, Any]] = None 

944 ) -> _TSQLModel: 

945 return cls.model_validate(obj, update=update) 2knlnmn|mnnonpnqnrnsn?ptnunvnwnxnyn=dCfDfEfFfI nf?dJ @d[dznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQn[pTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydi j zdAdBdCdZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=n^p[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdIdn o p JdKdLdMdNdOd|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxo`pAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUdt u v VdWdXdYdZd0dGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o|p9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6dz A B 7d8d9d!d#d$d(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep~phpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dF G H ,d-d.d/d:d;d

946 

947 @classmethod 1abcdef

948 @deprecated( 1abcdef

949 """ 

950 🚨 `obj.parse_obj(data)` was deprecated in SQLModel 0.0.14, you should 

951 instead use `obj.model_validate(data)`. 

952 """ 

953 ) 

954 def parse_obj( 1abcdef

955 cls: Type[_TSQLModel], obj: Any, update: Optional[Dict[str, Any]] = None 

956 ) -> _TSQLModel: 

957 if not IS_PYDANTIC_V2: 2@p]p_p{p}paq

958 obj = cls._enforce_dict_if_root(obj) # type: ignore[attr-defined] # noqa 2@p]p_p{p}paq

959 return cls.model_validate(obj, update=update) 2@p]p_p{p}paq

960 

961 # From Pydantic, override to only show keys from fields, omit SQLAlchemy attributes 

962 @deprecated( 1abcdef

963 """ 

964 🚨 You should not access `obj._calculate_keys()` directly. 

965 

966 It is only useful for Pydantic v1.X, you should probably upgrade to 

967 Pydantic v2.X. 

968 """, 

969 category=None, 

970 ) 

971 def _calculate_keys( 1abcdef

972 self, 

973 include: Optional[Mapping[Union[int, str], Any]], 

974 exclude: Optional[Mapping[Union[int, str], Any]], 

975 exclude_unset: bool, 

976 update: Optional[Dict[str, Any]] = None, 

977 ) -> Optional[AbstractSet[str]]: 

978 return _calculate_keys( 2knlnmn|mnnonpnqnrnsnefkele4ptpup!cffgfhfifjfkflfmfWjXjtnunvnwnxnyn=dCfDfEfFfI nf?digJ @d[dYjZj0j1j2j3j% Y !b4j5j6j7j8j9j!j^c#b#c$c$b%c%b[ 'b'c(c#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]jznAnBn'mCnDnEnFnGnHnInJnKn(mLnMnNnOnPnQnme]d^dTpRnSn(b)bneoepeqereseteuejgkgTnUnVnWnXnYnvdwdGfHfIfJfKfLfMfNfg h ofpfxdydOfi j zdAdBdCdlgmgngogpgqgZ 0 K L ] ^ rgsgtgugvgwgxg)c*c_ ` *b+b,b-b{ | .b/b} ~ ' ( abbb:b;b=b?bygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgZn0n1n)m2n3n4n5n6n7n8n9n!n*m#n$n%n'n(n)n*n+n,n+m-n.n/n:n;n=nvewe_d`d{d|dUp?n@n@b[b]bxeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeRgSgTgUg[n]n^n_n`n{nDdEdFdPfQfRfSfTfUfVfWfXfYfZf0fk l m qfrfsfGdHdId1f2fn o p JdKdLdMdNdOdVgWgXgYgZg0g1g2g3g4g5g6g1 2 3 M N O cbdbeb7g8g9g!g#g$g%g'g(g)g*g+g,g-g+c,c-cfbgbhb^b_b`b{b|b}bibjbkb~bacbclbmbnb) * + obpbqbccdcecfcgchc.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvh|n}n~n,maobocodoeofogohoio-mjokolomonooopoqoro.msotouovowoxoNeOe}d~daebeVpyozoicjckcPeQeReSeTeUeVeWeXeYeZe0e1e2e3e4ewhxhyhzhAoBoCoDoEoFoPdQdRd3f4f5f6f7f8f9f!f#f$f%f'fq r s tfufvfSdTdUd(f)ft u v VdWdXdYdZd0dAhBhChDhEhFhGhHhIhJhKhLh4 5 6 P Q R rbsbtbMhNhOhPhQhRhShThUhVhWhXhYhZh.c/c:cubvbwblcmcncocpcqcxbybzbrcsctcAbBbCb, - . DbEbFbucvcwcxcyczc0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haiGoHoIo/mJoKoLoMoNoOoPoQoRo:mSoToUoVoWoXoYoZo0o;m1o2o3o4o5o6o5e6ecedeeefeWp7o8oAcBcCc7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/ebicidiei9o!o#o$o%o'o1d2d3d*f+f,f-f.f/f:f;f=f?f@f[fw x y wfxfyf4d5d6d]f^fz A B 7d8d9d!d#d$dfigihiiijikiliminioipiqi7 8 9 S T U GbHbIbrisitiuiviwixiyiziAiBiCiDiEi;c=c?cJbKbLbDcEcFcGcHcIcMbNbObJcKcLcPbQbRb/ : ; SbTbUbMcNcOcPcQcRcFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i(o)o*o=m+o,o-o.o/o:o;o=o?o?m@o[o]o^o_o`o{o|o}o@m~oapbpcpdpep:e;egeheiejeXpfpgpScTcUc=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdf*i+i,i-ihpipjpkplpmp%d'd(d_f`f{f|f}f~fagbgcgdgegfgC D E zfAfBf)d*d+dgghgF G H ,d-d.d/d:d;d.i/i:i;i=i?i@i[i]i^i_i`i! # $ V W X VbWbXb{i|i}i~iajbjcjdjejfjgjhjijjj@c[c]cYbZb0bVcWcXcYcZc0c1b2b3b1c2c3c4b5b6b= ? @ 7b8b9b4c5c6c7c8c9ckjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVj

979 self, 

980 include=include, 

981 exclude=exclude, 

982 exclude_unset=exclude_unset, 

983 update=update, 

984 ) 

985 

986 def sqlmodel_update( 1abcdef

987 self: _TSQLModel, 

988 obj: Union[Dict[str, Any], BaseModel], 

989 *, 

990 update: Union[Dict[str, Any], None] = None, 

991 ) -> _TSQLModel: 

992 use_update = (update or {}).copy() 2|m=dI ?dJ @d[d'm(mvdwdg h xdydi j zdAdBdCd)m*m+mDdEdFdk l m GdHdIdn o p JdKdLdMdNdOd,m-m.mPdQdRdq r s SdTdUdt u v VdWdXdYdZd0d/m:m;m1d2d3dw x y 4d5d6dz A B 7d8d9d!d#d$d=m?m@m%d'd(dC D E )d*d+dF G H ,d-d.d/d:d;d

993 if isinstance(obj, dict): 2|m=dI ?dJ @d[d'm(mvdwdg h xdydi j zdAdBdCd)m*m+mDdEdFdk l m GdHdIdn o p JdKdLdMdNdOd,m-m.mPdQdRdq r s SdTdUdt u v VdWdXdYdZd0d/m:m;m1d2d3dw x y 4d5d6dz A B 7d8d9d!d#d$d=m?m@m%d'd(dC D E )d*d+dF G H ,d-d.d/d:d;d

994 for key, value in {**obj, **use_update}.items(): 2|m=dI ?dJ @d[d'm(mvdwdg h xdydi j zdAdBdCd)m*m+mDdEdFdk l m GdHdIdn o p JdKdLdMdNdOd,m-m.mPdQdRdq r s SdTdUdt u v VdWdXdYdZd0d/m:m;m1d2d3dw x y 4d5d6dz A B 7d8d9d!d#d$d=m?m@m%d'd(dC D E )d*d+dF G H ,d-d.d/d:d;d

995 if key in get_model_fields(self): 2|m=dI ?dJ @d[d'm(mvdwdg h xdydi j zdAdBdCd)m*m+mDdEdFdk l m GdHdIdn o p JdKdLdMdNdOd,m-m.mPdQdRdq r s SdTdUdt u v VdWdXdYdZd0d/m:m;m1d2d3dw x y 4d5d6dz A B 7d8d9d!d#d$d=m?m@m%d'd(dC D E )d*d+dF G H ,d-d.d/d:d;d

996 setattr(self, key, value) 2|m=dI ?dJ @d[d'm(mvdwdg h xdydi j zdAdBdCd)m*m+mDdEdFdk l m GdHdIdn o p JdKdLdMdNdOd,m-m.mPdQdRdq r s SdTdUdt u v VdWdXdYdZd0d/m:m;m1d2d3dw x y 4d5d6dz A B 7d8d9d!d#d$d=m?m@m%d'd(dC D E )d*d+dF G H ,d-d.d/d:d;d

997 elif isinstance(obj, BaseModel): 

998 for key in get_model_fields(obj): 

999 if key in use_update: 

1000 value = use_update.pop(key) 

1001 else: 

1002 value = getattr(obj, key) 

1003 setattr(self, key, value) 

1004 for remaining_key in use_update: 

1005 if remaining_key in get_model_fields(self): 

1006 value = use_update.pop(remaining_key) 

1007 setattr(self, remaining_key, value) 

1008 else: 

1009 raise ValueError( 

1010 "Can't use sqlmodel_update() with something that " 

1011 f"is not a dict or SQLModel or Pydantic model: {obj}" 

1012 ) 

1013 return self 2|m=dI ?dJ @d[d'm(mvdwdg h xdydi j zdAdBdCd)m*m+mDdEdFdk l m GdHdIdn o p JdKdLdMdNdOd,m-m.mPdQdRdq r s SdTdUdt u v VdWdXdYdZd0d/m:m;m1d2d3dw x y 4d5d6dz A B 7d8d9d!d#d$d=m?m@m%d'd(dC D E )d*d+dF G H ,d-d.d/d:d;d