Files
emailsystemv2/old/app/api/__pycache__/routes.cpython-312.pyc

128 lines
18 KiB
Plaintext
Raw Normal View History

2025-02-26 18:29:10 +08:00
<EFBFBD>
⤽gf.<00><00><><00>ddlmZmZmZmZddlZddlmZmZddlZddl Z ddl
Z
ddl Z ddl Z ddl mZddlmZmZmZmZddlmZmZeded <09>
<EFBFBD>Zej3d d g<01> <0A>d<0E><00>Zej3d dg<01> <0A>d<10><00>Zej3dd g<01> <0A>d<12><00>Zej3ddg<01> <0A>d<13><00>Zej3ddg<01> <0A>d<15><00>Zej3dd g<01> <0A>d<17><00>Zej3dd g<01> <0A>d<19><00>Z ej3dd g<01> <0A>d<1B><00>Z!ej3dd g<01> <0A>d<1D><00>Z"ej3dd g<01> <0A>d<1F><00>Z#y) <20>)<04> Blueprint<6E>request<73>jsonify<66> current_appN)<02>datetime<6D> timedelta)<01>func<6E>)<04> get_session<6F>Domain<69>Mailbox<6F>Email)<02>get_smtp_server<65>get_email_processor<6F>apiz/api)<01>
url_prefixz/domains<6E>GET)<01>methodsc<00><><00>t<00>} |jt<00>jd<01><02>j <00>}t d|D<00>cgc]}|j <00><00><02>c}d<03><02>|j<00>Scc}w#t$rU}tjjdt|<03><00><00><02>t ddd<07><02>dfcYd }~|j<00>Sd }~wwxYw#|j<00>wxYw)
u获取所有可用域名T)<01>active)<02>success<73>domainsu获取域名失败: Fu获取域名失败<E5A4B1>r<00>error<6F><72>N) r <00>queryr <00> filter_by<62>allr<00>to_dict<63>close<73> Exceptionr<00>logger<65> exception<6F>str)<04>dbr<00>domain<69>es <20>ED:\W\products\sshwork\redmineinstallssh\emailsystem\app\api\routes.py<70> get_domainsr)s<><00><00>
<15><1D>B<EFBFBD>
<13><14>(<28>(<28>6<EFBFBD>"<22>,<2C>,<2C>D<EFBFBD>,<2C>9<>=<3D>=<3D>?<3F><07><16><1B>7><3E>?<3F>w<EFBFBD>V<EFBFBD><06><0E><0E>(<28>w<EFBFBD>?<3F>
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> @<01><> <14>O<01><13><1A><1A>$<24>$<24>';<3B>C<EFBFBD><01>F<EFBFBD>8<EFBFBD>%D<>E<><16>5<EFBFBD>3G<33>H<>I<>3<EFBFBD>N<>N<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> O<01><> <0B><08><08>
<EFBFBD>sA<00>=A><00> A9
<EFBFBD> A><00>9A><00>> C<03>:C<03>C<03>C<00>C<03>C<00>C1<03>POSTc<00><00>tj}|rd|vrtddd<04><02>dfSt<00>} |j t
<00>j |d<00><06>j<00>}|r tddd<04><02>df|j<00>St |d|jdd <09>|jd
d <0B><00> <0C>}|j|<03>|j<00>td d |j<00>d<0E><03>|j<00>S#t$re}|j<00>tj j#dt%|<04><00><00><02>tddd<04><02>dfcYd}~|j<00>Sd}~wwxYw#|j<00>wxYw)u创建新域名<E59F9F>nameF<65>缺少必要字段r<00><>)r,u域名已存在<E5AD98> description<6F>rT)r,r/ru域名创建成功)r<00>messager&u创建域名失败: u创建域名失败rN)r<00>jsonrr rr r<00>firstr <00>get<65>add<64>commitrr!<00>rollbackrr"r#r$)<05>datar%<00> domain_existsr&r's r(<00> create_domainr:!sX<00><00> <13><<3C><<3C>D<EFBFBD> <0F>6<EFBFBD><14>%<25><16>5<EFBFBD>3G<33>H<>I<>3<EFBFBD>N<>N<> <14><1D>B<EFBFBD><13><1A><08><08><16>(<28>2<>2<><04>V<EFBFBD> <0C>2<>E<>K<>K<>M<> <0A> <18><1A>u<EFBFBD>7H<37>I<>J<>C<EFBFBD>O<>* <0B><08><08>
<EFBFBD>%<18><15>f<EFBFBD><1C><1C><08><08><1D><02>3<><17>8<EFBFBD>8<EFBFBD>H<EFBFBD>d<EFBFBD>+<2B>
<EFBFBD><06>
<0B><06><06>v<EFBFBD><0E>
<EFBFBD> <09> <09> <0B><16><1B>+<2B><1C>n<EFBFBD>n<EFBFBD>&<26>
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> <15>O<01>
<EFBFBD> <0B> <0B> <0A><13><1A><1A>$<24>$<24>';<3B>C<EFBFBD><01>F<EFBFBD>8<EFBFBD>%D<>E<><16>5<EFBFBD>3G<33>H<>I<>3<EFBFBD>N<>N<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> O<01><>
<0B><08><08>
<EFBFBD>s8<00>AD <00>
A.D <00> E7<03>A
E2<03>E7<03>E:<00>2E7<03>7E:<00>:F z
/mailboxesc<00><><00>t<00>} |jt<00>j<00>}t d|D<00>cgc]}|j <00><00><02>c}d<02><02>|j <00>Scc}w#t$rU}tjjdt|<03><00><00><02>t ddd<06><02>dfcYd}~|j <00>Sd}~wwxYw#|j <00>wxYw) u获取所有邮箱T)r<00> mailboxesu获取邮箱失败: Fu获取邮箱失败rrN) r rr rrrr r!rr"r#r$)r%r<<00>mailboxr's r(<00> get_mailboxesr>Es<><00><00>
<15><1D>B<EFBFBD>
<13><16>H<EFBFBD>H<EFBFBD>W<EFBFBD>%<25>)<29>)<29>+<2B> <09><16><1B>;D<>E<>9<EFBFBD><07>'<27>/<2F>/<2F>+<2B>9<EFBFBD>E<>
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> F<01><> <14>O<01><13><1A><1A>$<24>$<24>';<3B>C<EFBFBD><01>F<EFBFBD>8<EFBFBD>%D<>E<><16>5<EFBFBD>3G<33>H<>I<>3<EFBFBD>N<>N<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> O<01><> <0B><08><08>
<EFBFBD>s@<00>-A.<00>A)
<EFBFBD>A.<00>)A.<00>. C <03>7:C<03>1C <03>2C<00>C <03> C<00>C!c <00><><00>tj}|rd|vsd|vrtddd<05><02>dfSt<00>} |j t
<00>j |dd<07><08>j<00>}|s tdd d<05><02>df|j<00>S|j t<00>j |d|d<00>
<EFBFBD>j<00>}|r tdd d<05><02>df|j<00>St|d|d|jd d <0A>|jdd<07><00><0F>}|j|<04>|j<00>tdd|j<00>d<11><03>|j<00>S#t$re}|j<00>t j"j%dt'|<05><00><00><02>tddd<05><02>dfcYd}~|j<00>Sd}~wwxYw#|j<00>wxYw)u创建新邮箱<E982AE>address<73> domain_idFr-rr.T<><02>idr<00>域名不存在或未激活)r@rAu邮箱已存在r/r0r)r@rAr/ru邮箱创建成功)rr1r=u创建邮箱失败: u创建邮箱失败rN)rr2rr rr rr3r r r4r5r6rr!r7rr"r#r$)r8r%r&<00>mailbox_existsr=r's r(<00>create_mailboxrFVs<><00><00> <13><<3C><<3C>D<EFBFBD> <0F>9<EFBFBD>D<EFBFBD>(<28>K<EFBFBD>t<EFBFBD>,C<><16>5<EFBFBD>3G<33>H<>I<>3<EFBFBD>N<>N<> <14><1D>B<EFBFBD> <13><13><18><18>&<26>!<21>+<2B>+<2B>t<EFBFBD>K<EFBFBD>/@<40><14>+<2B>N<>T<>T<>V<><06><15><1A>u<EFBFBD>7T<37>U<>V<>X[<5B>[<5B>8 <0B><08><08>
<EFBFBD>3<1C><18><18>'<27>*<2A>4<>4<><18><19>O<EFBFBD>t<EFBFBD>K<EFBFBD>/@<40>5<>B<01>BG<42>%<25>'<27> <17> <19><1A>u<EFBFBD>7H<37>I<>J<>C<EFBFBD>O<>, <0B><08><08>
<EFBFBD>'<1A><18><19>O<EFBFBD><1A>;<3B>'<27><1C><08><08><1D><02>3<><17>8<EFBFBD>8<EFBFBD>H<EFBFBD>d<EFBFBD>+<2B> 
<EFBFBD><07> <0B><06><06>w<EFBFBD><0F>
<EFBFBD> <09> <09> <0B><16><1B>+<2B><1E><EFBFBD><EFBFBD>(<28>
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> <15>O<01>
<EFBFBD> <0B> <0B> <0A><13><1A><1A>$<24>$<24>';<3B>C<EFBFBD><01>F<EFBFBD>8<EFBFBD>%D<>E<><16>5<EFBFBD>3G<33>H<>I<>3<EFBFBD>N<>N<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> O<01><>
<0B><08><08>
<EFBFBD>s?<00>AE.<00>A E.<00>+A2E.<00>. G<03>7A
G<03>G<03>G<00>G<03>G<00>G1z/mailboxes/batchc <00><00>tj}|rd|vsd|vst|dt<00>st ddd<05><02>dfS|d}|d}|j dd<08>}t <00>} |jt<00>j|d <09>
<EFBFBD>j<00>}|s t dd d<05><02>df|j<00>Sg}g}|D]{}|jt<00>j||<01> <0C>j<00>} | r|j|<08><00>Kt|||d <09> <0A>}
|j|
<EFBFBD>|j|<08><00>}|j<00>t d dt!|<06><00>dt!|<07><00>d<10>||d<11><04>|j<00>S#t"$re} |j%<00>t&j(j+dt-| <0B><00><00><02>t ddd<05><02>dfcYd} ~ |j<00>Sd} ~ wwxYw#|j<00>wxYw)u批量创建邮箱rA<00> usernamesFu$缺少必要字段或格式不正确rr.r/r0TrBrD)<02>usernamerA)rIrAr/ru 成功创建 u 个邮箱u 个已存在)rr1<00>created<65>existedu批量创建邮箱失败: u批量创建邮箱失败rN)rr2<00>
isinstance<EFBFBD>listrr4r rr rr3r r <00>appendr5r6<00>lenr!r7rr"r#r$) r8rArHr/r%r&<00>created_mailboxes<65>existed_mailboxesrIrEr=r's r(<00>batch_create_mailboxesrR<00>s<00><00> <13><<3C><<3C>D<EFBFBD> <0F>;<3B>d<EFBFBD>*<2A>k<EFBFBD><14>.E<>Z<EFBFBD>X\<5C>]h<>Xi<58>ko<6B>Mp<4D><16>5<EFBFBD>3Y<33>Z<>[<5B>]`<60>`<60>`<60><14>[<5B>!<21>I<EFBFBD><14>[<5B>!<21>I<EFBFBD><16>(<28>(<28>=<3D>"<22>-<2D>K<EFBFBD> <14><1D>B<EFBFBD>(<13><13><18><18>&<26>!<21>+<2B>+<2B>y<EFBFBD><14>+<2B>F<>L<>L<>N<><06><15><1A>u<EFBFBD>7T<37>U<>V<>X[<5B>[<5B>H <0B><08><08>
<EFBFBD>E<1F><19><1E><19>!<21>H<EFBFBD><1F>X<EFBFBD>X<EFBFBD>g<EFBFBD>.<2E>8<>8<>!<21>Y<EFBFBD>9<>8<>8=<3D><05><07> <1B><1D>!<21>(<28>(<28><18>2<><18><1E>!<21>#<23>'<27><1B> <0E>G<EFBFBD> <0F>F<EFBFBD>F<EFBFBD>7<EFBFBD>O<EFBFBD> <1D> $<24> $<24>X<EFBFBD> .<2E>!"<22>$ <0B> <09> <09> <0B><16><1B>&<26>s<EFBFBD>+<<3C>'=<3D>&><3E>m<EFBFBD>C<EFBFBD>Pa<50>Lb<4C>Kc<4B>cp<63>q<>(<28>(<28> 
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> <15>U<01>
<EFBFBD> <0B> <0B> <0A><13><1A><1A>$<24>$<24>'A<>#<23>a<EFBFBD>&<26><18>%J<>K<><16>5<EFBFBD>3M<33>N<>O<>QT<51>T<>T<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> U<01><>
<0B><08><08>
<EFBFBD>s9<00>%AF<00>;B<F<00> G6<03>A
G1<03>G6<03>G9<00>1G6<03>6G9<00>9H z/mailboxes/<int:mailbox_id>c<00>X<00>t<00>} |jt<00>j|<00><01>j <00>}|s t ddd<04><02>df|j <00>Stj<00>|_ |j<00>t d|j<00>d<07><02>|j <00>S#t$rU}tjjdt!|<03><00><00><02>t dd d<04><02>d
fcYd }~|j <00>Sd }~wwxYw#|j <00>wxYw) u获取特定邮箱的信息<E4BFA1>rCF<>邮箱不存在r<00><>T)rr=u获取邮箱信息失败: u获取邮箱信息失败rN)r rr rr3rr r<00>utcnow<6F> last_accessedr6rr!rr"r#r$)<04>
mailbox_idr%r=r's r(<00> get_mailboxrZ<00>s<><00><00>
<15><1D>B<EFBFBD><13><14>(<28>(<28>7<EFBFBD>#<23>-<2D>-<2D><1A>-<2D><<3C>B<>B<>D<><07><16><1A>u<EFBFBD>7H<37>I<>J<>C<EFBFBD>O<> <0B><08><08>
<EFBFBD>!)<29><0F><0F> 1<><07><1D>
<EFBFBD> <09> <09> <0B><16><1B><1E><EFBFBD><EFBFBD>(<28>
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> <15>U<01><13><1A><1A>$<24>$<24>'A<>#<23>a<EFBFBD>&<26><18>%J<>K<><16>5<EFBFBD>3M<33>N<>O<>QT<51>T<>T<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> U<01><> <0B><08><08>
<EFBFBD>s7<00>AB6<00>!AB6<00>6 D<03>?:D<03>9D<03>:D<00>D<03>D<00>D)z"/mailboxes/<int:mailbox_id>/emailsc<00>:<00>t<00>} |jt<00>j|<00><01>j <00>}|s t ddd<04><02>df|j <00>Stj<00>|_ |j<00>|jt<00>j|<00><06>jtjj<00><00>j<00>}t d|D<00>cgc]}|j!<00><00><02>c}d<08><02>|j <00>Scc}w#t"$rU}t$j&j)d t+|<05><00><00><02>t dd
d<04><02>d fcYd }~|j <00>Sd }~wwxYw#|j <00>wxYw) u获取邮箱中的所有邮件rTFrUrrV)rYT)r<00>emailsu获取邮件失败: u获取邮件失败rN)r rr rr3rr rrWrXr6r<00>order_by<62> received_at<61>descrrr!rr"r#r$)rYr%r=r\<00>emailr's r(<00>
get_emailsra<00>sC<00><00>
<15><1D>B<EFBFBD><13><14>(<28>(<28>7<EFBFBD>#<23>-<2D>-<2D><1A>-<2D><<3C>B<>B<>D<><07><16><1A>u<EFBFBD>7H<37>I<>J<>C<EFBFBD>O<> <0B><08><08>
<EFBFBD>!)<29><0F><0F> 1<><07><1D>
<EFBFBD> <09> <09> <0B><13><18><18>%<25><1F>*<2A>*<2A>j<EFBFBD>*<2A>A<>J<>J<>5<EFBFBD>K\<5C>K\<5C>Ka<4B>Ka<4B>Kc<4B>d<>h<>h<>j<><06><16><1B>4:<3A>;<3B>F<EFBFBD>5<EFBFBD>u<EFBFBD>}<7D>}<7D><EFBFBD>F<EFBFBD>;<3B>
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> <<3C><> <14>O<01><13><1A><1A>$<24>$<24>';<3B>C<EFBFBD><01>F<EFBFBD>8<EFBFBD>%D<>E<><16>5<EFBFBD>3G<33>H<>I<>3<EFBFBD>N<>N<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> O<01><> <0B><08><08>
<EFBFBD>sI<00>AD'<00>!BD'<00>2D"
<EFBFBD> D'<00>"D'<00>' F<03>0:F<03>*F<03>+F<00>F<03>F<00>Fz/emails/<int:email_id>c<00>L<00>t<00>} |jt<00>j|<00><01>j <00>}|s t ddd<04><02>df|j <00>S|jsd|_|j<00>t d|j<00>d<07><02>|j <00>S#t$rU}tjjdt|<03><00><00><02>t dd d<04><02>d
fcYd }~|j <00>Sd }~wwxYw#|j <00>wxYw) u!获取特定邮件的详细内容rTF<>邮件不存在rrVT)rr`u获取邮件详情失败: u获取邮件详情失败rN)r rrrr3rr <00>readr6rr!rr"r#r$)<04>email_idr%r`r's r(<00> get_emailrf<00>s<><00><00>
<15><1D>B<EFBFBD><13><12><08><08><15><0F>)<29>)<29>X<EFBFBD>)<29>6<><<3C><<3C>><3E><05><14><1A>u<EFBFBD>7H<37>I<>J<>C<EFBFBD>O<> <0B><08><08>
<EFBFBD><15>z<EFBFBD>z<EFBFBD><1D>E<EFBFBD>J<EFBFBD> <0E>I<EFBFBD>I<EFBFBD>K<EFBFBD><16><1B><1A>]<5D>]<5D>_<EFBFBD>
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> <15>U<01><13><1A><1A>$<24>$<24>'A<>#<23>a<EFBFBD>&<26><18>%J<>K<><16>5<EFBFBD>3M<33>N<>O<>QT<51>T<>T<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> U<01><> <0B><08><08>
<EFBFBD>s6<00>AB0<00>!>B0<00>0 D<03>9:D <03>3D<03>4D<00> D<03>D<00>D#z#/emails/<int:email_id>/verificationc<00><><00>t<00>} |jt<00>j|<00><01>j <00>}|s t ddd<04><02>df|j <00>S|jrtj|j<00>ng}|jrtj|j<00>ng}t d|||d<07><04>|j <00>S#t$rU}tjjdt|<05><00><00><02>t dd d<04><02>d
fcYd }~|j <00>Sd }~wwxYw#|j <00>wxYw) u6获取邮件中的验证信息链接和验证码rTFrcrrVT)rre<00>verification_links<6B>verification_codesu获取验证信息失败: u获取验证信息失败rN)r rrrr3rr rhr2<00>loadsrir!rr"r#r$)rer%r`rhrir's r(<00>get_verification_inforks<00><00>
<15><1D>B<EFBFBD><13><12><08><08><15><0F>)<29>)<29>X<EFBFBD>)<29>6<><<3C><<3C>><3E><05><14><1A>u<EFBFBD>7H<37>I<>J<>C<EFBFBD>O<> <0B><08><08>
<EFBFBD>FK<01>E]<5D>E]<5D>T<EFBFBD>Z<EFBFBD>Z<EFBFBD><05>(@<40>(@<40>A<>ce<63><1A>EJ<45>E]<5D>E]<5D>T<EFBFBD>Z<EFBFBD>Z<EFBFBD><05>(@<40>(@<40>A<>ce<63><1A><16><1B> <20>"4<>"4<> 
<EFBFBD> <0B> <0B><08><08>
<EFBFBD><EFBFBD> <15>U<01><13><1A><1A>$<24>$<24>'A<>#<23>a<EFBFBD>&<26><18>%J<>K<><16>5<EFBFBD>3M<33>N<>O<>QT<51>T<>T<>
<EFBFBD><08><08>
<EFBFBD><EFBFBD> U<01><> <0B><08><08>
<EFBFBD>s7<00>AC<00>!A)C<00> D9<03>$:D4<03>D9<03>D<<00>4D9<03>9D<<00><Ez/statusc
<00>d<00>t<00>}|jtjtj
<00><00>j <00>}|jtjtj
<00><00>j <00>}|jtjtj
<00><00>j <00>}|jtjtj
<00><00>jtjtj<00>td<01><02>z
kD<00>j <00>}tjd<03><04>}tj <00>}tj"d<05>}t%<00>}t'<00>} |r|j(rdnd}
| r| j*rdnd} t-t/j.<00>tj0<00>z
<00>tj<00>j3<00>t5j4<00>t6j8d<08>||j:|j<|j>|j:|j<|j>d <09>||||t@jBjEd
<EFBFBD>|
| d <0B>d <0C>d <0A>} tG| <0C>S)u获取系统状态<E78AB6>)<01>hoursg<00>?)<01>interval<61>/<2F>running<6E>stopped)<04>uptime<6D>time<6D>platform<72>python_version)<07> cpu_percent<6E>memory_percent<6E> memory_used<65> memory_total<61> disk_percent<6E> disk_used<65>
disk_total<EFBFBD>
email_data)<02> smtp_server<65>email_processor)<06> domain_count<6E> mailbox_count<6E> email_count<6E>recent_emails_24h<34> storage_path<74>services)<03>system<65> resources<65> application)$r rr <00>countr rC<00>scalarr r<00>filterr^r<00>nowr<00>psutilrw<00>virtual_memory<72>
disk_usagerr<00>
controller<EFBFBD>
is_running<EFBFBD>roundrt<00> boot_time<6D> isoformatru<00>sys<79>version<6F>percent<6E>used<65>total<61>os<6F>path<74>abspathr) <0A>sessionr<6E>r<>r<><00> recent_emailsrw<00>memory<72>diskrr<><00> smtp_status<75>processor_status<75>statuss r(<00> system_statusr<73>s<><00><00><1A>m<EFBFBD>G<EFBFBD><1B>=<3D>=<3D><14><1A><1A>F<EFBFBD>I<EFBFBD>I<EFBFBD>!6<>7<>><3E>><3E>@<40>L<EFBFBD><1B>M<EFBFBD>M<EFBFBD>$<24>*<2A>*<2A>W<EFBFBD>Z<EFBFBD>Z<EFBFBD>"8<>9<>@<40>@<40>B<>M<EFBFBD><19>-<2D>-<2D><04>
<EFBFBD>
<EFBFBD>5<EFBFBD>8<EFBFBD>8<EFBFBD> 4<>5<><<3C><<3C>><3E>K<EFBFBD><1C>M<EFBFBD>M<EFBFBD>$<24>*<2A>*<2A>U<EFBFBD>X<EFBFBD>X<EFBFBD>"6<>7<>><3E>><3E> <0A><19><19>H<EFBFBD>L<EFBFBD>L<EFBFBD>N<EFBFBD>Y<EFBFBD>R<EFBFBD>-@<40>@<40>@<40><06> <0C>f<EFBFBD>h<EFBFBD><12>
<19>$<24>$<24>c<EFBFBD>2<>K<EFBFBD> <13> "<22> "<22> $<24>F<EFBFBD> <11> <1C> <1C>S<EFBFBD> !<21>D<EFBFBD>"<22>#<23>K<EFBFBD>)<29>+<2B>O<EFBFBD>*<2A>{<7B>/E<>/E<>)<29>9<EFBFBD>K<EFBFBD>$3<><0F>8R<38>8R<38>y<EFBFBD>Xa<58><14>
<1C>D<EFBFBD>I<EFBFBD>I<EFBFBD>K<EFBFBD>&<26>*:<3A>*:<3A>*<<3C><<3C>=<3D><1C>L<EFBFBD>L<EFBFBD>N<EFBFBD>,<2C>,<2C>.<2E> <20>)<29>)<29>+<2B>!<21>k<EFBFBD>k<EFBFBD> 
<EFBFBD>'<27>$<24>n<EFBFBD>n<EFBFBD>!<21>;<3B>;<3B>"<22>L<EFBFBD>L<EFBFBD> <20>L<EFBFBD>L<EFBFBD><1D><19><19><1E>*<2A>*<2A>
<EFBFBD>)<29>*<2A>&<26>!.<2E><1E>G<EFBFBD>G<EFBFBD>O<EFBFBD>O<EFBFBD>L<EFBFBD>9<>*<2A>#3<><0E>

<EFBFBD>!<06>F<EFBFBD>: <13>6<EFBFBD>?<3F><1A>)$<24>flaskrrrrr2rrr<>rtr<>r<>ru<00>
sqlalchemyr <00>modelsr r r rr<>rr<00>__name__<5F>api_bp<62>router)r:r>rFrRrZrarfrkr<><00>r<>r(<00><module>r<>s<><00><01>:<3A>:<3A> <0B>(<28> <09> <0B> <0A>
<EFBFBD><0F><1B>8<>8<>;<3B> <12>5<EFBFBD>(<28>v<EFBFBD> 6<><06><08><1C><1C>j<EFBFBD>5<EFBFBD>'<27><1C>*<2A> <13>+<2B> <13> <08><1C><1C>j<EFBFBD>6<EFBFBD>(<28><1C>+<2B> <13>,<2C> <13>F<08><1C><1C>l<EFBFBD>U<EFBFBD>G<EFBFBD><1C>,<2C> <13>-<2D> <13> <08><1C><1C>l<EFBFBD>V<EFBFBD>H<EFBFBD><1C>-<2D>'<13>.<2E>'<13>T<08><1C><1C> <20>6<EFBFBD>(<28><1C>3<>3<13>4<>3<13>l<08><1C><1C>+<2B>e<EFBFBD>W<EFBFBD><1C>=<3D><13>><3E><13>.<08><1C><1C>2<>U<EFBFBD>G<EFBFBD><1C>D<><13>E<01><13>2<08><1C><1C>&<26><15><07><1C>8<><13>9<><13>0<08><1C><1C>3<>e<EFBFBD>W<EFBFBD><1C>E<><13>F<01><13>0<08><1C><1C>i<EFBFBD>%<25><17><1C>)<29>8<1B>*<2A>8r<>