1<!doctype html><html class="font-1-0"><head><title>ç»å½ - UMU å¦ä¹ å¹³å°</title> <meta charset="UTF-8"><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no"><meta name="msvalidate.01" content="C6365096B98B689B0FE5ABF7E75C9DBC"/><link rel="preconnect" href="https://statics-cdn-cn.umucdn.cn"><link rel="dns-prefetch" href="https://statics-cdn-cn.umucdn.cn"><link rel="dns-prefetch" href="https://sentry.umu.cn"><link href="https://statics-cdn-cn.umucdn.cn/twww/cn/u_design_umu_pc/u_design_umu_pc.f4add7af.css" rel="stylesheet" /> 2<link href="https://statics-cdn-cn.umucdn.cn/twww/cn/common_header_umu_pc/common_header_umu_pc.3c9bdb51.css" rel="stylesheet" /> 3<link href="https://statics-cdn-cn.umucdn.cn/twww/cn/umu_search_umu_pc/umu_search_umu_pc.82c1666d.css" rel="stylesheet" /> 4<link href="https://statics-cdn-cn.umucdn.cn/twww/cn/libs_common_umu_pc/libs_common_umu_pc.084a7cff.css" rel="stylesheet" /> 5<link href="https://statics-cdn-cn.umucdn.cn/twww/cn/third_vendors_umu_pc/third_vendors_umu_pc.8301d89d.css" rel="stylesheet" /> 6<link href="https://statics-cdn-cn.umucdn.cn/twww/cn/accountLogin/accountLogin.d5f6b38b.css" rel="stylesheet" /> 7<link href="https://statics-cdn-cn.umucdn.cn/twww/cn/pc_common_umu_pc/pc_common_umu_pc.f949b6a3.css" rel="stylesheet" />
7<script src="https://statics-cdn-cn.umucdn.cn/statics/js/0701/boot.js" defer="defer"></script>
7<script src="https://statics-cdn-cn.umucdn.cn/common/es6.shim.min1.js" defer="defer"></script>
7<script src="https://statics-cdn-cn.umucdn.cn/common/qrcode.min.v1.js" defer="defer"></script>
7<script>window.__serverTemplate = 'node';</script>
7<script>window.HOME_URL = '/twww/cn';window.UEDITOR_HOME_URL = '/twww/cn/vendor/editor/';</script>
7<script>window.pageDwt = "accountLogin"</script>
7<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/i18n/twww/accountLogin/59227/zh-cn.js"></script>
7 8
8<script> 9 if(!window.__LANG__ || !window.__LANG__['twww/accountLogin']){ 10 document.write('
10<script src="/napi/v1/i18n/js?scope=twww/accountLogin" type="text/javascript"><\/script>'); 11 } 12 </script>
12 13
14<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/i18n/web_common/59231/zh-cn.js"></script>
14 15
15<script> 16 if(!window.__LANG__ || !window.__LANG__['web_common']){ 17 document.write('
17<script src="/napi/v1/i18n/js?scope=web_common" type="text/javascript"><\/script>'); 18 } 19 </script>
19 20
20<script>var namespace = window.pageDwt; 21 window.__LANG__ = Object.assign({}, window.__LANG__); 22 window.langMap = {"de-de":"de","en-us":"en","es-es":"es","fr-fr":"fr","id-id":"id","it-it":"it","ja-jp":"jp","ko-kr":"ko","nl-nl":"nl","ar-ae":"ar","he-il":"he","pt-br":"pt","ru-ru":"ru","sv-se":"sv","th-th":"th","vi-vn":"vi","zh-cn":"cn","zh-tw":"tw"}</script>
22 <meta name="description" content="UMU äºå¨å¦ä¹ å¹³å°ç½é¡µçç»å½å ¥å£ãUMU å©ç¨å¦ä¹ ç§å¦åAIææ¯ï¼è®©å¦ä¹ çæ£æå绩ææåï¼åæ¶æåä¼ä¸å¹è®çææãæçãä½éªã"> 23 <meta name="keywords" content="ç¨æ·ç»å½, å¦åç»å½, 讲å¸ç»å½, å¹è®ç»å½, ä¼ä¸ç»å½"> 24 <link rel="alternate" href="https://www.umu.co/auth/login" hreflang="ja" /> 25<link rel="alternate" href="https://www.umu.com/auth/login" hreflang="en" /> 26<link rel="alternate" href="https://www.umu.cn/auth/login" hreflang="zh-CN" /> 27<link rel="alternate" href="https://www.umu.tw/auth/login" hreflang="zh-TW" /> 28<link rel="alternate" href="https://www.umu.cn/auth/login" hreflang="x-default" /> 29 30 </head><body class=""><div class="account-container account-login-container"><div class="doc account account-login"><style>.site-loading-holder{ 31 width: 100%; 32 height: 100vh; 33 background: var(--umu-color-bg-base, #fff); 34 position: fixed; 35 top: 0; 36 bottom: 0; 37 left: 0; 38 right: 0; 39 z-index: 2001; 40} 41.loading-spinner { 42 padding: 200px; 43 margin: 0 auto; 44 text-align: center; 45} 46 47.web-umu-loading2{ 48 display: block; 49 width: 100px; 50 height: 25px; 51 margin: auto; 52 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAXcCAMAAABQ+TGGAAACEFBMVEUAAABYfKLlWjV/U7Ynp4v61jBCpfZ/U7bnWTXnWTV/U7b61DFCpfZCpfYnp4onp4pCpfYnp4rmWjXoWTT61DEnp4vmWjRCpfbmWjV/U7b61DH61TFCpfVCpfZ/U7blWzX61TEnp4pCpfZ/U7bxmzJ/UrbmWjUnqIp/UrYnp4vlWzYnp4onp4pCpfbnWTQnp4r61DH61TEnqIr61TFCpfUnp4onp4onp4p/UrYnp4onp4vmWjX60zFCpfb61DFCpfZCpfb61DAnp4r61jAnqIr61jHpWTT61TDlWzblWjZ/U7ZCpfZ/U7Z/U7bnWTR/U7b61TDlWjVCpfXnWTXnWTX61TFCpfb61jB/U7b61DHnWTVCpfZ/UrbmWjX61jB/VLZCpfZ/UrZ/Urb61jEnp4onp4onp4rlWTV/U7Ynp4p/U7ZCpfYnp4pCpfX61DFCpfV/U7b62DFCpfXmWjVCpfblWjX62DH61TF/Urb61DDmWjVCpfZ/U7blWzZCpfZ/U7ZCpfb61DF/Urb61DEnp4pCpfbmWjXmWjX61DFCpfV/U7b61jD61DFCpfXlWjXkWzb61jFCpfZ/Urb61jH61TD61jBCpfUnp4rmWjZCpfb61TH61zBCpfZ/VLZCpfUnqIpCpfYnp4vmWzblWzXnWTUnp4t/U7Z/VLblWjX61THnWTUnp4rlWzb61DFCpfZ/U7aZpD8KAAAAq3RSTlMABu6efRyewUkN4vn16dq8o+G/F7qzNTNQDcES16oxZ9cnKG8D1YBGmGH2nY8JCOfIjxl9IchX0bRAlmLpfeLMjYd1L2snEQz63YdiSMpXfE7Dvh0spXRjUPN5VqM+PPfcYVhJL/SjmZFOOS0PDtJKIAjDiDvQFsyol3MR8da4gkbu6p2KaqmSsZpnXttA5LZEHRR2cDcY7smxgVRQGtE44b+voCSrKu1sa0w6CwN4AAAYsklEQVR42uzcB1MTYRAG4DfBgIXYMEawElTEBlIEFFEEQVEEsTfsvfeCvWLvvZfRca79RWWGQL7du+RLcNQZ9/kHO3ub3My+txBCCCGEEOK/F16Vnp6+Kow4ls+++WXX2eGIq/bpmaszVi9AXPtnXpsypU8l4ni3ZVJaWuMSH5JzYM4ou9OoOdPgZfZQs9P5if3gqaHkoNUpZzXiyA/tMH4ZMisXXrZmOJ2ubBiDZBwK2lHBe3CVtcyM8o+Ah21VVlRRAB58O41udXCVXeF0a4a+9XasS3Dx1W/GGAtXq60YA2o96ig3Ykx1raO/EyMNusK2ah+Y+smmoq9rPyzFgJNwU2Yo+oCb4CgaoSloqzaDGWqqFk4Hc2SApcqBi/kGsR3URYfQnJPFNvUWxHCTWgemxKLawPgM6hMIn0NlQMe+ozZ1FMQuk1oE5q5FrQQz02CKobrtEJotmWMzmdOgOmEyWSACFjMOzBSDKYCqwmGaoWGwzUWgmD7ZZDaCeGgxA0aCChkEH/cMh5kEDaNtLgxF/UKT6QuixeICoAalVEgaNNyyuVIoxvtNZjiINou5fESnI/MTF7IbGhZn8hnxsV9fph+IBos5BWaqweyBaoPD5EHDc/5sjQYx0aSWgSmyqBowlQbjg2qNwxyGjuM2tQ9ElkktBfPGZUS4IQYxC9R3PiJ6WllDmGOm6gRcHLRUM+Ai3yD2g+AtyYaeA+o7ysdpINiUTM6Ci8BaK1YROD4l+eAmOYol0FUaW8nmdrh5YPbwr4CrBVVWj2HwMItOOpfmxNgKfdN6Bn6wDwQb+Bv18NCw0op6DU8zC40uZblwl7fJ6TJhDJJyfN7cYGZw7rwwPGWdHbrIf//lseGIo7amqLqqOudJAHH4CkIDCwvLp+TD0+O8jP6bzk04vRVCCCGEEEIIIYQQQgghhPjntEcikXb01viWGR05HSVt6K29zRVNTRtuH0aSrrdmdu6lWxejV35UR/du23pXRkZ36CEbSTi+2Y56H0Yc0+O3YxjZTacqz+nRfwy0XbJj3fPcWH3+tbEaGmdjdYosdb3l7ikoyC+Ghy10y64pwgIcbtZ1J2u+ZMHVSkt1Bx4KutKAoUq4+eao+kPTR1v1PrWt7jMWDmqAm+IykhagmliCQzeaSd1Lac/eYVFPXet4YcQIgRnjUFe0Bj7SalOtoCYmTj6MX2tROeB8JMOxE9Ruh9kCDasyEyfoeBZlBKhai6karxEPqkTimFMjNKTbXCSFdFCLxZ0Etd+gyqEbPOt9gg7LNPJa27SigHUGk6sRBfyTCboFFlMNZqfB1P2mR+t64hnpp5NpRJVFdSCVcOZFh1kCDY9e2dQrqKb7NVKmOGNRb5BKOPOdQ02AlkPxRkQ/94uAxpOlE87EaYdYAz1zbdUFpJTExhNL9QxcH4PJB5G9yVFUQFO7OiXBA9DKxnNnEr9qbTeoHYn+25ugLZwZW0cpNL9W4Gqsbmtb4Kqcjwi39wrph67S1p7n6jmg+/0I1zasq4yrAQA6LSn0wUX27nNdc34byXk7ONjZjfRDcLeCfNHjKXCnpOZJy0h4qqN/h+6y1zQ3NubtRfJ8kXDEB0/LX5pR/qVIDZ/3Fx/wx/Cv3urRO5Vl3a++xfgrlm/s23cFfoPKqaGyslCfXAghhBBCCCGEEEIIIYQg5Aad3KCTG3Ryg05u0MkNOrlBJzfo5Aad3KCTG3Ryg05u0MkNOrlBJzfohBBCCCGEEEKIn+zcMQ0AMAgAsG+qZo4T1/wogNAKKQCcIgoThYnCRGGiMFGYKEwUNigKe6KwJkRhojBRmChMFCYKE4WJwgAAAAAAgG0cdA46B52DzkHnoHPQOegcdA46B52DzkHnoHPQOegAAAAAAOAovaHe
52UG+oN9Qb6g31hnrDQb1h6g2brzfUG+oN9YZ6Q72h3lBvCAAAQLFzxzYAABAAwDZ/+9wqLiDaQwoA0DnoHHQOOgedg85B56Bz0DnoHHQOOgedg85B56Bz0AEAAAAAvCIKE4WJwkRhojBRmChMFLYoCgtR2JCiMFGYKEwUJgoThYnCRGEAAAAAAMA1DjoHnYPOQeegc9A56Bx0DjoHnYPOQeegc9A56Bx0AAAAABQ7dywAAAAAMMjfeho7CiTgzkHnoHPQOegcdA46B52DzkHnoHPQOegcdA46B52DzkHnoAMAAAAAABx0DjoHnYPOQeegc9A56Bx0DjoHnYPOQeegc9DFzt29NBUHYBx/DBZpIoUXZZrgKSor6aYXesFZMaLyohCqBdVNgTtG4ggSC3tBu4pCaRVS6EURFKx/MWg0nA8/z84zPCI8n39gjO2Mwe/7e7xBZ2ZmZmZmZmZmZmZmZltU98yH90e30YmVYvBH16PPZ84dxma4Ww9S3rajJad311utAWSLT3VVfKqbLT5nl83Rll52OEb5AtVZTlEyEZ43FHX9XuM4MhSug1ihcr+SQ8hyoA5i3+I47u9BekNRFA2BrNdrsamld7UO5XbwCSGldZLyn9P9SGe+/G+4uHwdJFjQsRurkvICIGzQcVL+Eins6av+l58AaWLekJPyYgWQVgH1pByTtC0rVKaclOeg7DRyUj6uDhcvAMnd7xinQZyUS90vrolJOfqqjfLNzBuKSflgcondw0m5Olz8KrmNPwQyzEl5M238KV72JrE4XDybfFuhHVpSzouTDyEk5eJwMbfYvwApKeehxjlgA2dyI543bPjhmgEJJOWsreFPyjFgY4eLydjNhHnDSnJSznesLoEEknK5jWfna2/lKt16S0jKWal26+0E3XprKSmfD7XxrPve3h3fQRKTcvZ4uVQaCLzKqJiUn5zl4WIo+CHJQdJB3yx1uPgpJM/oA9GMqkl5nvbvNb1F+oeiGReT8k9rnpDnEBWGKSnXHKGkXBkujiDrrSflO5fQigMv6kl5jBQWyjRcLLp88cnr4oV9H3NIiZPyN38edEzfQUpf9690VjtXdk2iZVNXDoII2hYXtfvsI9tHbk3AzMzMzOwvO3fiFGMchwH8WcqR5JYNjdY6co6S5EgIIyLJkXGOO7cx4yhXrtwTcpNxDVL9i45qs/t42/f9vmyO5/MPmO+870+7+31+j4iI/FnUQacOOnXQqYNOHXTqoFMHnTro1EGnDjp10KmDTh106qBTB5066ERERERERERERERE/lPVoVCoGn6Fy2bUZdTlboVfVatnl5ZuvnEUHl0p/95UU74Cvnws7Ni77fQ3Ru9I6CEID05sb+nwMh1dmIauhIf6vjvNRRwpmXDtAjXV/Hxj9frrxmpwFxurk7TUdZK1Pzt7Qg4c7KAtuzshDnCAbYoka9449J2ta452Ew6y29OAwwoAsPet0VLg0quWaC9tW90GCgctA8By8qLSAqyUEhzWpprbpj17XXOsBwDLedT0g2Egma2xaoPGpppy3k3HTz6EK2mQDLBATIZjD7hfgOwwN9UYOugWN5N5YRfxoAIXvSgl5qYaQzqorJlxYPZgU6z8RDbVrHGR19rpKgpY3ESyXEQBE5mgW9JMCkH2NJFiF6+WtalmqqWDbh4NUue2uo3zy4Z8UP2TuE0103q46aA7TYM8M5XpvaA5xlmbatJhyP1y8LfQWG94qjXGRmNTzTlbBx3uN0drcFN4xtEzBLe1RpkNl6qjT0n/QzBk4/nlugmwXTTH7nh/20utTTUz4fK2AlvYHFFZhp/K5yPCqmrpebgzs5yaatzcH2Fbh7aPcSkZgJtHMj0AsOC+mvZzfgPePB/Y/9vT6OXUVFNBN3ocJN/MXXi/bCQcFfOfQ4AFN64uKRlbBe8CofRQAI7WPqYOOs/4vD9qRMLwrbel8KcgL/LRNwfdYu2WPn0qAP8KpgzLyxuWlAURERERERERERERiaEOOnXQqYNOHXTqoFMHnTro1EGnDjp10KmDTh106qBTB5066NRBJyIiIiIiIiIiIiLRv/3evTOpB/32a5H9Lm33o/w5E9AdNkVWu1f7wpdZgyKphywkFu9HrHg/kli8sTK7TNVBicNr3cewKuClbkI4tzkZpTXFmIIEct6zsyUNWxuS4aTRYc/OXlRVVWUG4d3UUCg0FaSr5AM79vRW20Z3Q/wTwuedw5k1pzLhzZXj33saj68AccyisLIfwplLAEPlDoczz8OD9FEtHRYcAHHR5sThzMoGwFSCZA9n4ghV6RnyWhzOTIallorDmfusPY31cNHmtJaX7BzONCXoUGIMZ2JUS7QFbtqcjOHM7PiZxiCHM609jRfip0zHgxRyONNNyjSPi0xJlbGn8Vz83G9f2MKZSOLcryGcaexp5FTjJ8AUzuReqsuAIZxp7WkEKqL+4zoD4hDOZIGoDymTgd/b00jWronT5tQQP5zJtxUWgTiEM80pUza3bZTldH8kTjiT7W+7PzKd7o/4CmdecUqZsiFbRvR5CxI3nMkONu7fn+Xwr6w0hjNnnuOeRliU8RGBSQq9WdaexhMwOUkPxIQfSdDY01gOm5GV9AnFZp8xnPkw5oRUw2hJIYUzbSZSONPS0xiCZxzO7PcUfoytiYQzq+BB/XHqaTRavPDwxcp5GQ+S4RGHM2tbt6Wc2giPno9+ldqS+mrgEfh2bFkYxCBw757tZmhRr6L1ByAiIiIiIiIiIiKiDjp10KmDTh106qBTB5066NRBpw46ddCpg04ddOqgUwedOujUQSciIiIiIiIiIv+4acO3DAExySmekrQL3aTi6vLlg+eCGGR9W/jkz0K3WPX5u9fwr5GWVQlAu/Zr8Cuwu6ldIxLvzucOFSDWrrA0mNlfrIir/h9IRAES7fUPa54wfJlAbSLMrnp++YInK+K8WS7erdyMWydnUC7IMVfzDg7e9xyXUno+AK8OpEZ11JC+PbjeBWzkmLZKqsXoQhJFahzrElKC8OZQKi1CPQzCK+rKYy4HGeCQaGxtVwpP6os4vcGDcHzDOXqWaxuE16Eb4cX6zm1okZ9B1tFK1zhIitcdO/cHjfYzSEZkkFu+BgnURgbZDOIu6jTQzyBDKaplHMT8RDSIBtEgGkSDaBANokE0iAb5bwb5Fz/G/91frOZ3ftW9/mu+6mb8qq+6E+FFqDP3e8EyCF+9eOBvkH0Uw3ZpJvVhexmED0lh2N/vWkGPddh0p3L7IcPvWnxKCpPh74kgs8Y2B5A+OrWlf9FUML7UMxzONgw9nJEbRleKmzrtgYN7JaXjeo+FxaF6dGEw3aY020X3khLpw+eIwfApjS4hJtA0Out2s+jH+ERa5fuB8N233QEkCl8gORuGDV9HHJSFbrHq7NfLPNdoDpPsAWn5SQF0k7l732x6C2IyoXjWQYiIiPyNlKBTgq6TEnRf2LufliqiOA7jv9vNCIIgktCIpD9EoiQWgVmSWFYQ4UKCoKSCqIgWQWEtAoMsKDeuahMFQdCmfItRkqOcO16dkQszfp538HgZmHPmka+CTkGnoFPQKegUdNvvQ08dP70RIUKECBEiRIgQIVJzkTq+xlf7YKWgU9Ap6BR0CjoFXUsUdAo6BR0AAAAAVJ1P7z7sGn8R67F/d19fT5uDVdfC8Nvhha62IXb//MBg/+nI59mxZvPxrdg0t5evsXdFLtOPdvwrM78fiHzOLA9AXTgT67JzeTfp82Ajcph7vRzQHY6Ejc1tXmy0z2VPRA7HX27oNv5pdq+1L+dHGSl4if3m9wpj0ZLd6WBoys1kHy3nfi5jqOUfbmpphbv3C36xOhStOLV2EXE6EpIhwauRw+W2c7RxYynjVUGRe/k/SMb5aMVsMr3Xblg3jcrTbcc7BT+9Hcp/QjJ+to5+96QibYcEh9qJNLdUpGetSF8Zkb1rRPYRIUKECBEiRIhs4KWxuMhsaZHyb79b84v8Ws1sIZF06niq6MGqkEg6Pn0wSoj0Zr3WsUaxo+7XRgmRycxjT1cZkegdSc6HpS8f8s8jKZf+t4Ddk1FKJOLJXLN58mNvbJrGl7Hx60cjIeeEmMficPfB7uHFiAIiHSA9sxckFRmKzpHeopQuajLORqdIn5LnUZh0M78/OkJ603jt/UyUZCD57+kOc+pAT8/Ml
52SjP/IrHYFSbBw+H/j7nP85F1TkyMTowOvEtAAAAAACAgk5Bp6BT0CnoFHSCASJEiBAhQoSIgk5Bp6BT0CnoFHQKOgWdgk5BBwAAsL2x4mrFdRVWXK24WnG14mrF1YqrFddtNzZUx/knIkSIECFChAgRIkRqLlLH1/hqH6ysuFpxteJqxdWKqxXX1lhxteJqxRUAgIqgoFPQZSjoFHQKOgWdgk5Bp6Dbfh966vjpjQgRIkSIECFChAiRmovU8TW+2gcrBZ2CTkGnoFPQKehaoqBT0CnoAAAAAKDqWHG14mrF1YqrFVcrrkSIECFChAgRIlZcrbhacbXiasXVims+VlytuFpxrSJWXAEAAAAA+NPeffZEEUVhHD+DYkOMioJ144qrImIXCyogYsWCBVRs2Dt2RUVFVOy9YoktluzO7Fc0ijI788yZmSUmSvL8Xvvm5HJ3DfdPDgs6FnQs6FjQsaBjQcdggINwEA7CQTgIB+EgLOhY0LGgY0HHgo4FHQu631jQsaBjQUdERERERET0d+XV9OjRoyZPfKwraf2073yu+Kp42tgytbZSfB0uvlZY2H2O+HhbP75bt+VVhqTnyPwR7Y8K84tEU9K+laBpbG9RLZl+1PxpWK34GDf414rgAXOjotnZ/tZzdUtE0tFgL1LJvqd0gNWJPzKGiGLXPHtpaKYojL3xDotE+2V8h9Xp7uzwX6XyOSPEs0KtmSKrQpljVjzFRP15JP23tzzL6ZCAxRMSDr3UZbS2rDNKrhUYnsWSDsslpGzLaYe2tMN/c8fxLNNpmLKv2Wk3hplJl0h6r1W2N7ib3W2zgOmm2zYBRtztA/yTpFtPCePQCRjkhLjsg0GWCbgLg2zw2dihryC5nQShjmS+BfoWidPpBMiBdNkEowQUxkEBpLJgdbinaTRaHCZNSICt8Ohmgqzh+iuPrTvUAmC8hDDSQnnisHhpAsDn1hoTZeLikU4N0k1CuGWhGbAyCeTiMi7QfDzMiSwMHmS/hLCiL94RAz59QW/Ml8FZARPj4IA4bUmCfAnhOf5sjcStNm7V+pJ5W7mAOXFgiNPGJDgmYZyCQeCrPQcGWSXgNV4RPV+2zRW3r3hFwlkLBwJOJpxO6ymKbaryput0WCToSML2D0eyrVTvi8QJb8mEHPGQuclMNUUQ3pJxWhxkq5KwZqROsuOCeHmQsGWsV6KaeaZtkCjmwk0H3ZIpdkp4RfaF72+IE174G4tFscT+C5I2URVP7sgeouItf3vyt1hE0nKqrDS7b3ZpWZ6ocs4PXJZx/+XJXPFRUT5lwbwFw55kig+jYHC/yZNnFY4T1eP8nn22X4yd2ylERERERERERERERPS/YUHHgo4FHQs6FnQs6FjQsaBjQceCjgUdCzoWdCzoWNCxoCMiIiIiIiIiIiKiLmXMs+9t5dNfV0oXN/zpzQWbsprPNq6RLq3c7mqO7pJ/oeFW6YgRpWUNossd+6Cp6WXrEFFV3oUnRE20++B+/WbOLRZd5HLPWCx2rt6Q8O6961gIc0rrGR905DS9xFuF6XIzuKGbXKA99HQUKV9vS1jXrRTXvY9jKSRO2vKn4DOJDnC9TqPIRShR0u616gSth1gLDTPRQ/EwbU88VaGgY9jUBJthuTwSm92iQIiCTQ2aJx5mxZ2KBdhNYxoPu5csl0sSWHA0KQEHWBMmPYPrXJ90uWikcyD6kWQEt0FnTE8b9AOxFWCc6VYvgWossEKctibASSVECW7opsXBYLghYHanurMycfqWAAPF5YkJoKGDFkXZEVyVBLFOXBGMajYngiunNtNbJV4R8MJw5eRJ0EcCvbLALXE6r50ItrLBpdOBOBgAdVBnBimzwHxxKkmAG+Ly3QTeMeDuOJgpTgeTYKUEarDAFTU70+P4ZybwjrEN++tQ6+OHdipqNCBpzBa3arX6tTWbXtrClL+7JbBq/BL+f1q26xJYlLcKmKpcETANP33djuGnbxil0JODVujJwXDTQ6O6aN6257CyMd+2/bGEUbTDSjHCEA8fEykycsRDrXLVg2LAqJbQ2SISjpHyXfIK5oAzGagEdC0wSIXYlD+96AdzwJn0+SKh1Z34/WNVJ5rcG+2BfHWJAO9JsraJJlr4Iv7TrEWiiZxrrwFj+ZKWGXU1NXWPxM+krSUlQ9YJUL5MzlaKD2NOwaLiqPgZWpWfXx+RfyKzsdlsd7RWurbMO+UtLY3THwoRERERERERERERCzoWdCzoWNCxoGNBx4KOBR0LOhZ0LOhY0LGgY0HHgo4FHQs6FnQs6IiIiIiIiIiIiIhY0HVhLOhY0LGgY0HHgo4FHQs6FnQs6FjQsaBjQceCjgUdCzoWdIAFHQs6IiIiIvrf/QCveXVQ4eqgMAAAAABJRU5ErkJggg==); 53 background-repeat: no-repeat; 54 -webkit-background-size: 100px auto; 55 background-size: 100px auto; 56 -webkit-animation: web-page-loading-frame 3s steps(30) infinite; 57 animation: web-page-loading-frame 3s steps(30) infinite; 58} 59 60@-webkit-keyframes web-page-loading-frame { 61 from { 62 background-position-y: 0; 63 } 64 to { 65 background-position-y: -750px; 66 } 67} 68 69@keyframes web-page-loading-frame { 70 from { 71 background-position-y: 0; 72 } 73 to { 74 background-position-y: -750px; 75 } 76}</style><div class="site-loading-holder"></div><div ng-controller="mainController"><div ui-view></div><page-tool></page-tool></div></div><div id="footer"><ul class="nav"><li><a class="trackEvent" data-track-cat="home" data-track-label="aboutUs" href="/home/about-us">å ³äºæä»¬</a></li><li><a class="trackEvent" data-track-cat="home" data-track-label="termcondition" href="/staticPage/termcondition.html">æå¡åè®®</a></li><li><a class="trackEvent" data-track-cat="home" data-track-label="termcondition" href="/staticPage/privacy-policy.html">éç§æ¿ç</a></li><li><a class="trackEvent" data-track-cat="help" data-track-label="help" href="/help">帮å©ä¸å¿</a></li> <li><div class="site-lang-switch"><lang-switch is-editing="true" auto-save="true"></lang-switch></div></li></ul> <div class="page-footer-node-copyright-wrapper"><span class="copyright">© 2014-<span class="js-current-year" style="visibility:hidden">2025</span> å京ä¼å¹ç§ææéè´£ä»»å ¬å¸ | èè°é®ç®±ï¼[email protected]</span> <span class="copyright" style="margin-left: 40px;"><a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010202007103" style="height:20px;line-height:20px;"><img src="https://statics-cdn-cn.umucdn.cn/statics/police.png" style="vertical-align: sub;"/> <span>äº¬å ¬ç½å®å¤11010202007103å·</span></a> <a target="_blank" href="https://beian.miit.gov.cn/#/Integrated/index">京ICPå¤161018å·</a> </span><span class="copyright" style="margin-left: 40px;">
76ç½ç»å®å
¨ççº§ä¿æ¤ä¸çº§11010243658-20001 <a target="_blank" href="http://www.moe.gov.cn/jyb_xxgk/s5743/s5744/A16/202001/t20200120_416151.html" style="height:20px;line-height:20px;"><span>æAPPå¤1100465å·</span></a></span></div>
76<script>(function () { 77 try { 78 var year = String(new Date().getFullYear()); 79 var nodes = document.querySelectorAll('#footer .js-current-year'); 80 for (var i = 0; i < nodes.length; i++) { 81 nodes[i].textContent = year; 82 nodes[i].style.visibility = 'visible'; 83 } 84 } catch (e) {} 85 })();</script>
85</div></div>
85<script>window.pageData = {"version":"1.0","data":{"teacher_info":false,"email_list":["@qq.com","@163.com","@126.com","@sina.com","@gmail.com","@hotmail.com","@sohu.com","@139.com","@189.com","@21cn.com"],"page_config":{"is_course_reviewer":"0"}},"enterprise_setting":{},"status":true,"errno":0,"error_code":0,"error":"success","token":"tuv26ilti43ptcit5mvp0p8cc6","page_token":"669628|1790955106|1326f1","config":{"step_length":15,"env":"ONLINE","lang":"zh-cn","site_host":"umu.cn","system":"CN","fixed":true,"i18n_config":{"langs_full":[{"value":"de-de","short":"de","label":"Deutsch"},{"value":"en-us","short":"en","label":"English"},{"value":"es-es","short":"es","label":"Español"},{"value":"fr-fr","short":"fr","label":"Français"},{"value":"id-id","short":"id","label":"Bahasa Indonesia"},{"value":"it-it","short":"it","label":"Italiano"},{"value":"ja-jp","short":"jp","label":"æ¥æ¬èª"},{"value":"ko-kr","short":"ko","label":"íêµì´"},{"value":"nl-nl","short":"nl","label":"Nederlands"},{"value":"ar-ae","short":"ar","label":"Ø§ÙØ¹Ø±Ø¨ÙØ©"},{"value":"he-il","short":"he","label":"×¢Ö´×רִ×ת"},{"value":"pt-br","short":"pt","label":"Português"},{"value":"ru-ru","short":"ru","label":"Ð ÑÑÑкий"},{"value":"sv-se","short":"sv","label":"Svenska"},{"value":"th-th","short":"th","label":"ภาษาà¹à¸à¸¢"},{"value":"vi-vn","short":"vi","label":"Tiếng Viá»t"},{"value":"zh-cn","short":"cn","label":"ç®ä½ä¸æ"},{"value":"zh-tw","short":"tw","label":"ç¹é«ä¸æ"}],"systems":["CN","TW","JP","EN","EM"],"system_langs":["zh-cn","en-us","zh-tw"]},"site":"CN","is_course_mini_app":false,"is_in_midea_mini_app":false,"video_point_rate_interval":"8","questionnaire_auto_save_interval":"10","node_html_font_size":"small","node_html_font_size_value":100,"support_html_font_size_languages":["zh-cn","ja-jp","zh-tw"]},"success":false,"_dwt":"accountLogin"};</script>
85<script>window.teacherInfo = ""; 86 var siteHost = "umu.cn"; 87 var hasSso = ""; 88 var ssoOnly = ""; 89 var customizedEnterpriseName = ""; 90 var enterpriseSetting = {};</script>
90<script src="https://statics-cdn-cn.umucdn.cn/cdn/js/jquery/jquery-3.7.1.min.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/ejs.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular/angular.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular/angular-animate.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular/angular-cookies.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular/angular-messages.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular/angular-route.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular/angular-sanitize.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular-autocomplete.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular-ngdialog.js?v=7820fcf0"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/angular-ui-router.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/ng-context-menu.js?v=1"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/DragDropTouch.js?v=1"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/dragLists.js?v=1"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/statics/js/vendor/dotdotdot.js?v=1"></script>
90<script defer="defer" src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/cdn/js/react.18.2.0/react.production.min.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/cdn/js/react-dom.18.2.0/react-dom.production.min.js"></script>
90<script src="https://statics-cdn-cn.umucdn.cn/cdn/js/react-router-dom.5.3.3/react-router-dom.min.js"></script>
90<script>function I18nError(type, message, fileName, lineNumber) { 91 var instance = new Error(message, fileName, lineNumber); 92 instance.name = 'I18nError'; 93 instance.type = type; 94 Object.setPrototypeOf(instance, Object.getPrototypeOf(this)); 95 if (Error.captureStackTrace) { 96 Error.captureStackTrace(instance, I18nError); 97 } 98 return instance; 99 } 100 101 I18nError.prototype = Object.create(Error.prototype, { 102 constructor: { 103 value: Error, 104 enumerable: false, 105 writable: true, 106 configurable: true 107 } 108 }); 109 110 if (Object.setPrototypeOf) { 111 Object.setPrototypeOf(I18nError, Error); 112 } else { 113 I18nError.__proto__ = Error; 114 } 115 116 var PARAM_REG = /{\$(\d+)}/g 117 var sendedErrors = []; 118 119 function reportError(scope, key, type, lang) { 120 var errObj = { 121 scope: scope, 122 key: key, 123 type: type, 124 lang: lang 125 }; 126 127 var errString = JSON.stringify(errObj); 128 if (sendedErrors.indexOf(errString) > -1) { 129 return; 130 } 131 sendedErrors.push(errString); 132 133 console.error(new I18nError(type, errString)); 134 135 // upload to sentry 136 if (window.Sentry && window.Sentry.captureException) { 137 var i18nError = new I18nError(type, JSON.stringify(errObj)); 138 window.Sentry.captureException(i18nError); 139 return; 140 } 141 142 // upload to elk 143 errObj.loc = location; 144 var errStr = 'i18n_err:' + JSON.stringify(errObj); 145 if (window.BJ_REPORT && window.BJ_REPORT.report) { 146 window.BJ_REPORT.report(errStr); 147 } 148 } 149 150 var isEmptyObj = function (obj) { 151 return !!obj && Object.keys(obj).length === 0 && Object.getPrototypeOf(obj) === Object.prototype; 152 }; 153 154 var langUtils = { 155 getPageConfig: function () { 156 var pageData; 157 try { 158 pageData = typeof window.pageData === 'string' ? JSON.parse(window.pageData) : window.pageData; 159 } catch (err) { 160 pageData = {}; 161 reportError('pageData', 'pageData', 'pageData', this.getLang()); 162 } 163 var config = pageData.config || pageData.page_config || {}; 164 if (isEmptyObj(config)) { 165 console.warn('Page Config is EMPTY, please check window.pageData.config'); 166 } 167 return config; 168 }, 169 getLang: function () { 170 var config = this.getPageConfig(); 171 var langVal = (window.langMap || {})[config.lang] || ''; 172 if (!langVal) { 173 console.error( 174 new Error( 175 'Get LANG VALUE failed, return ' + langVal + ', please check window.pageData OR window.langMap' 176 ) 177 ); 178 } 179 return langVal; 180 }, 181 getCurrentSystem: function () { 182 var config = this.getPageConfig(); 183 var systemVal = config.system || ''; 184 if (!systemVal) { 185 console.error(new Error('Get SYSTEM VALUE failed, return' + systemVal + ', please check window.pageData')); 186 } 187 return systemVal; 188 }, 189 _lang: function (locale) { 190 var currentLocale = this.getLang(); 191 return currentLocale.toLowerCase() === (locale || '').toLowerCase(); 192 }, 193 isSystem: function (system) { 194 var currentSystem = this.getCurrentSystem(); 195 return currentSystem.toLowerCase() === (system || '').toLowerCase(); 196 }, 197 renderHtml: function (content) { 198 var namespace = window['pageDwt']; 199 200 if (!namespace || !window.__LANG__ || !window.__LANG__[namespace]) { 201 reportError(namespace || 'pc_page', 'cdn_fail', 'cdn_fail', this.getLang()); 202 return content; 203 } 204 205 var LANG_CONTENT = window.__LANG__[namespace]; 206 if (isEmptyObj(LANG_CONTENT)) { 207 return content; 208 } 209 var langContent = {}; 210 var that = this; 211 Object.keys(LANG_CONTENT).forEach(function (key) { 212 langContent[key] = that.getLangWithSystem(LANG_CONTENT[key]); 213 }); 214 215 // æ£æ¥ ejs æ¯å¦åå¨ 216 if (typeof ejs === 'undefined') { 217 console.warn('EJS is undefined, please check the CDN or include it locally.'); 218 return content; 219 } 220 221 try { 222 var data = ejs.render(content, langContent); 223 return data; 224 } catch (err) { 225 var errMsg = err.message.split(' ').join(''); 226 reportError(window['pageDwt'], errMsg, 'render', this.getLang()); 227 return content; 228 } 229 }, 230 getLangWithSystem: function (value) { 231 var SITE_CONFIG_KEYS = { 232 EMAIL: /([email protected]|[email protected])/g 233 }; 234 if (this.isSystem('jp') && !!value) { 235 return value.replace(SITE_CONFIG_KEYS.EMAIL, '[email protected]'); 236 } 237 return value; 238 }, 239 lang: function (key) { 240 if (arguments.length > 1) { 241 return this.langReplace(arguments); 242 } 243 var namespace = window['pageDwt']; 244 245 if (!namespace || !window.__LANG__ || !window.__LANG__[namespace]) { 246 reportError(namespace || 'pc_page', 'cdn_fail', 'cdn_fail', this.getLang()); 247 return this.getLangWithSystem(key); 248 } 249 250 var LANG_CONTENT = window.__LANG__[namespace]; 251 if (isEmptyObj(LANG_CONTENT)) { 252 return this.getLangWithSystem(key); 253 } 254 255 var langValue = LANG_CONTENT && LANG_CONTENT[key]; 256 if (langValue === undefined || langValue === null) { 257 reportError(window['pageDwt'], key, 'lang', this.getLang()); 258 } 259 260 return this.getLangWithSystem(langValue); 261 }, 262 getCurrentLocale: function () { 263 var config = this.getPageConfig(); 264 return config.lang; 265 }, 266 langReplace: function () { 267 var langKey = Array.prototype.slice.call(arguments, 0, 1)[0]; 268 var lang = this.lang(langKey); 269 var params = Array.prototype.slice.call(arguments, 1); 270 var langValue = lang.replace(PARAM_REG, function (_, index) { 271 var i = parseInt(index, 10); 272 if (params.length > i - 1) { 273 return params[i - 1]; 274 } 275 return ''; 276 }); 277 if (!langValue) { 278 reportError(window['pageDwt'], langKey, 'langReplace', this.getLang()); 279 } 280 return langValue; 281 }, 282 initBodyClassName: function () { 283 if (document.body) { 284 document.body.classList.add('locale-' + this.getLang()); 285 document.body.classList.add('system-' + this.getCurrentSystem().toLowerCase()); 286 287 const USEQuery = 'ums'; 288 const nUrl = new URL(window.location.href); 289 const nSearchParams = nUrl.searchParams.size ? nUrl.searchParams : new URLSearchParams(window.location.href.split('?')[1]); 290 const inUSE = nSearchParams.get(USEQuery) === '1'; 291 if (inUSE && self !== parent) { // å¨ iframe ä¸æä½¿ç¨ use çæ ·å¼ 292 document.body.classList.add('is-in-use') 293 } 294 } 295 } 296 }; 297 298 ejs.filters.replace = function (lang) { 299 var params = Array.prototype.slice.call(arguments, 1); 300 if (typeof lang === 'string') { 301 return langUtils.getLangWithSystem(lang.replace(PARAM_REG, function (key, index) { 302 index = parseInt(index, 10); 303 if (index < 1) { 304 return key; 305 } 306 if (typeof params[index - 1] === 'string') { 307 return params[index - 1]; 308 } 309 return ''; 310 })); 311 } 312 if (lang === '') { 313 reportError('filter', lang, 'ejs', langUtils.getLang()); 314 } 315 return langUtils.getLangWithSystem(lang); 316 }; 317 318 langUtils.getCurrentLang = langUtils.getLang; 319 langUtils.isLang = langUtils._lang; 320 langUtils.isAsiaLang = function () { 321 return langUtils.isLang('cn') || langUtils.isLang('tw') || langUtils.isLang('ja') || langUtils.isLang('ko'); 322 }; 323 langUtils.initBodyClassName(); 324 window.langUtils = langUtils;</script>
324<script src="https://statics-cdn-cn.umucdn.cn/statics/js/bundle.tracing.min.js"></script>
324<script>(function(config) { 325 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 326 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 327 return new (P || (P = Promise))(function (resolve, reject) { 328 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 329 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 330 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 331 step((generator = generator.apply(thisArg, _arguments || [])).next()); 332 }); 333}; 334var __generator = (this && this.__generator) || function (thisArg, body) { 335 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 336 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 337 function verb(n) { return function (v) { return step([n, v]); }; } 338 function step(op) { 339 if (f) throw new TypeError("Generator is already executing."); 340 while (_) try { 341 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 342 if (y = 0, t) op = [op[0] & 2, t.value]; 343 switch (op[0]) { 344 case 0: case 1: t = op; break; 345 case 4: _.label++; return { value: op[1], done: false }; 346 case 5: _.label++; y = op[1]; op = [0]; continue; 347 case 7: op = _.ops.pop(); _.trys.pop(); continue; 348 default: 349 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 350 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 351 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 352 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 353 if (t[2]) _.ops.pop(); 354 _.trys.pop(); continue; 355 } 356 op = body.call(thisArg, _); 357 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 358 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 359 } 360}; 361var release = config.version; 362var defaultTracesSampleRate = config.tracesSampleRate; 363var dsn = config.sentryDSN; 364var integrations = []; 365var userInfo = (window.pageData.data && (window.pageData.data.teacher_info || window.pageData.data.user_info)) || {}; 366var enterpriseInfo = (window.pageData.data && (window.pageData.data.enterpriseInfo || window.pageData.data.enterprise_info)) || {}; 367var params = { 368 eId: userInfo.enterpriseId || enterpriseInfo.enterpriseId || '', 369 eName: enterpriseInfo.enterprise_show_name || enterpriseInfo.enterpriseName || '', 370 umuId: userInfo.umu_id || '', 371 userName: userInfo.userName || '', 372 email: userInfo.email || '' 373}; 374function estimateFromTiming() { 375 try { 376 if (typeof performance === 'undefined') 377 return { rtt: -1, downlink: -1 }; 378 var navEntries = performance.getEntriesByType('navigation'); 379 if (!navEntries || !navEntries.length) 380 return { rtt: -1, downlink: -1 }; 381 var nav = navEntries[0]; 382 var rtt = nav.connectEnd - nav.connectStart; 383 if (rtt <= 0) 384 rtt = nav.responseStart - nav.requestStart; 385 var downlink = -1; 386 var resources = performance.getEntriesByType('resource'); 387 for (var i = 0; i < resources.length; i++) { 388 var entry = resources[i]; 389 var dur = entry.responseEnd - entry.responseStart; 390 if (entry.transferSize > 0 && dur > 10) { 391 var tp = (entry.transferSize * 8) / (dur * 1000); 392 if (tp > downlink) 393 downlink = tp; 394 } 395 } 396 var navDur = nav.responseEnd - nav.responseStart; 397 if (nav.transferSize > 0 && navDur > 10) { 398 var navTp = (nav.transferSize * 8) / (navDur * 1000); 399 if (navTp > downlink) 400 downlink = navTp; 401 } 402 return { rtt: rtt > 0 ? rtt : -1, downlink: downlink }; 403 } 404 catch (e) { 405 return { rtt: -1, downlink: -1 }; 406 } 407} 408function getNetworkInfo() { 409 var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection; 410 if (connection) { 411 var rtt = (typeof connection.rtt === 'number') ? connection.rtt : -1; 412 var downlink = (typeof connection.downlink === 'number') ? connection.downlink : -1; 413 if (rtt !== 0 || downlink !== 0) { 414 return { effectiveType: connection.effectiveType || 'unknown', downlink: downlink, rtt: rtt, apiAvailable: true }; 415 } 416 } 417 var timing = estimateFromTiming(); 418 return { 419 effectiveType: (connection && connection.effectiveType) || 'unknown', 420 downlink: timing.downlink, 421 rtt: timing.rtt, 422 apiAvailable: false, 423 }; 424} 425function isWeakNetwork() { 426 var info = getNetworkInfo(); 427 if (info.effectiveType === '2g' || info.effectiveType === 'slow-2g' || info.effectiveType === '3g') { 428 return true; 429 } 430 if (info.rtt > 500) 431 return true; 432 if (info.downlink > 0 && info.downlink < 1) 433 return true; 434 return false; 435} 436function getNavigationTiming() { 437 try { 438 if (typeof performance === 'undefined') 439 return { connectTime: -1, dnsTime: -1 }; 440 var navEntries = performance.getEntriesByType('navigation'); 441 if (!navEntries || !navEntries.length) 442 return { connectTime: -1, dnsTime: -1 }; 443 var nav = navEntries[0]; 444 return { 445 connectTime: nav.connectEnd - nav.connectStart, 446 dnsTime: nav.domainLookupEnd - nav.domainLookupStart, 447 }; 448 } 449 catch (e) { 450 return { connectTime: -1, dnsTime: -1 }; 451 } 452} 453function attachNetworkTags(event) { 454 var info = getNetworkInfo(); 455 if (!event.tags) 456 event.tags = {}; 457 event.tags['network.effectiveType'] = info.effectiveType; 458 event.tags['network.downlink'] = String(info.downlink); 459 event.tags['network.rtt'] = String(info.rtt);
460 event.tags['network.isWeak'] = String(isWeakNetwork()); 461 event.tags['network.apiAvailable'] = String(info.apiAvailable); 462} 463var BOT_PATTERNS = [ 464 /bot/i, /crawler/i, /spider/i, /headless/i, 465 /puppeteer/i, /playwright/i, /phantom/i, /selenium/i, 466 /scrapy/i, /yandex/i, /Sogou/i, 467 /facebookexternalhit/i, /Slurp/i, 468]; 469function isBotTraffic() { 470 if (typeof navigator === 'undefined') 471 return false; 472 var ua = navigator.userAgent || ''; 473 return BOT_PATTERNS.some(function (pattern) { return pattern.test(ua); }); 474} 475var _lastHiddenTimestamp = 0; 476if (typeof document !== 'undefined') { 477 if (document.visibilityState === 'hidden') 478 _lastHiddenTimestamp = Date.now(); 479 document.addEventListener('visibilitychange', function () { 480 if (document.visibilityState === 'hidden') 481 _lastHiddenTimestamp = Date.now(); 482 }); 483} 484function getConfig(key) { 485 var _a; 486 return __awaiter(this, void 0, void 0, function () { 487 var res, contentType, error_1; 488 return __generator(this, function (_b) { 489 switch (_b.label) { 490 case 0: 491 _b.trys.push([0, 4, , 5]); 492 if (!key) { 493 return [2, {}]; 494 } 495 return [4, fetch('/napi/config/center?key=' + key)]; 496 case 1: 497 res = _b.sent(); 498 if (!res || !res.ok) { 499 return [2, {}]; 500 } 501 contentType = (_a = res.headers) === null || _a === void 0 ? void 0 : _a.get('content-type'); 502 if (!(contentType && contentType.includes('application/json'))) return [3, 3]; 503 return [4, res.json()]; 504 case 2: return [2, _b.sent()]; 505 case 3: return [2, {}]; 506 case 4: 507 error_1 = _b.sent(); 508 console.error('getConfig error:', error_1); 509 return [2, {}]; 510 case 5: return [2]; 511 } 512 }); 513 }); 514} 515function getDefaultTracesSampleRate() { 516 return defaultTracesSampleRate; 517} 518function getEnvironment(tracesSampleRate) { 519 if (tracesSampleRate === 1) { 520 return 'pro-full-trace'; 521 } 522 return 'pro'; 523} 524var ignoreErrors = [ 525 'domtoimage: Error while reading CSS rules from https:', 526 "Can't find variable: WeixinJSBridge", 527 "Can't find variable: WebViewJavascriptBridge", 528 'WebViewJavascriptBridge is not defined', 529 'AbortError: The operation was aborted.', 530 'window.ttJSBridge is undefined', 531 'judgeHmHashcode is not defined', 532 'No error message', 533 'The network connection was lost.', 534 'Failed to fetch', 535 'Load failed', 536 'TypeError: Load failed', 537 "Can't find variable: cordova", 538 'appcb is not defined', 539 'LIDNotify is not defined', 540 '網路é£ç·ä¸æ·ã', 541 '已忶', 542 'Interneté£ç·å·²æ·éã', 543 'UnhandledRejection: Non-Error promise rejection captured with value: Timeout', 544 'transition superseded', 545 'Error: [ngModel:numfmt] Expected', 546 /^AbortError: The play/i, 547 /^NotAllowedError: The request is not/i, 548 /^The fetching process for the media resource was aborted/i, 549 'Loading CSS chunk', 550 'Network Error', 551 'fetch error', 552 'network error', 553 'Network Failure', 554 'Request failed', 555 'Invalid reCAPTCHA client', 556 'Java bridge method invocation error', 557 'Non-recoverable error. Do not retry', 558 'WeakRef is not defined', 559 'Script execution context has stopped', 560 'Request aborted', 561 'insertHotWords is not defined', 562 'Attempt to delete range from database without an in-progress transaction', 563 'An internal error was encountered in the Indexed Database server', 564 'NetworkError when attempting to fetch resource', 565 'dpfrzbu0cqnmm.cloudfront.net', 566 'statics-cdn-cn.umucdn.cn', 567 'ãã£ã³ã»ã«ãã¾ãã', 568 'Google captcha script load failed', 569 'load script src failed', 570 "undefined is not an object (evaluating 'M.didTimeout')", 571 /recaptcha.*\.js/i 572]; 573var DynamicSentryIgnoreErrorsManager = (function () { 574 function DynamicSentryIgnoreErrorsManager() { 575 this.ignoreErrors = []; 576 this.initPromise = null; 577 } 578 DynamicSentryIgnoreErrorsManager.getInstance = function () { 579 if (!DynamicSentryIgnoreErrorsManager.instance) { 580 DynamicSentryIgnoreErrorsManager.instance = new DynamicSentryIgnoreErrorsManager(); 581 } 582 return DynamicSentryIgnoreErrorsManager.instance; 583 }; 584 DynamicSentryIgnoreErrorsManager.prototype.initialize = function () { 585 return __awaiter(this, void 0, void 0, function () { 586 return __generator(this, function (_a) { 587 if (this.initPromise) { 588 return [2, this.initPromise]; 589 } 590 this.initPromise = this.doInitialize(); 591 return [2, this.initPromise]; 592 }); 593 }); 594 }; 595 DynamicSentryIgnoreErrorsManager.prototype.doInitialize = function () { 596 return __awaiter(this, void 0, void 0, function () { 597 var res, url, response, contentType, data, error_2; 598 return __generator(this, function (_a) { 599 switch (_a.label) { 600 case 0: 601 _a.trys.push([0, 4, , 5]); 602 return [4, getConfig('sentry_ignore_list_url')]; 603 case 1: 604 res = _a.sent(); 605 url = (res === null || res === void 0 ? void 0 : res.data) || ''; 606 if (!url) { 607 return [2]; 608 } 609 return [4, fetch(url)]; 610 case 2: 611 response = _a.sent(); 612 if (!response.ok) { 613 return [2]; 614 } 615 contentType = response.headers.get('content-type'); 616 if (!contentType || !contentType.includes('application/json')) { 617 return [2]; 618 } 619 return [4, response.json()]; 620 case 3: 621 data = _a.sent(); 622 if (Array.isArray(data)) { 623 this.ignoreErrors = data; 624 } 625 return [3, 5]; 626 case 4: 627 error_2 = _a.sent(); 628 console.error('DynamicSentryIgnoreErrorsManager initialize error', error_2); 629 return [3, 5]; 630 case 5: return [2]; 631 } 632 }); 633 }); 634 }; 635 DynamicSentryIgnoreErrorsManager.prototype.getIgnoreErrors = function () { 636 return this.ignoreErrors; 637 }; 638 return DynamicSentryIgnoreErrorsManager; 639}()); 640var beforeSend = function (event, hint) { 641 if (window.location.protocol === 'file:') { 642 return null; 643 } 644 var ignoreErrorList = ['domtoimage: Error while reading CSS rules from', '/editor/editor'].concat(DynamicSentryIgnoreErrorsManager.getInstance().getIgnoreErrors()); 645 var e = (event && event.exception && event.exception.values && event.exception.values[0]) || {}; 646 var exceptionMessage = e.value || ''; 647 if (ignoreErrorList.some(function (error) { return exceptionMessage.indexOf(error) > -1; })) { 648 return null; 649 } 650 return event; 651}; 652var initSentry = function (tracesSampleRate, replaysSessionSampleRate, replaysOnErrorSampleRate) { 653 try { 654 if (Sentry.Integrations.BrowserTracing && Sentry.Integrations.GlobalHandlers) { 655 integrations.push(new Sentry.Integrations.BrowserTracing()); 656 integrations.push(new Sentry.Integrations.GlobalHandlers({ onunhandledrejection: true, onerror: true })); 657 } 658 if (Sentry.browserTracingIntegration) { 659 integrations.push(Sentry.browserTracingIntegration()); 660 } 661 if (Sentry.globalHandlersIntegration) { 662 integrations.push(Sentry.globalHandlersIntegration({ onunhandledrejection: true, onerror: true })); 663 } 664 if (Sentry.captureConsoleIntegration) { 665 integrations.push(Sentry.captureConsoleIntegration({ levels: ['error'] })); 666 } 667 DynamicSentryIgnoreErrorsManager.getInstance().initialize(); 668 Sentry.init({ 669 environment: getEnvironment(tracesSampleRate), 670 dsn: dsn, 671 integrations: integrations, 672 ignoreErrors: tracesSampleRate === 1 ? [] : ignoreErrors, 673 denyUrls: [ 674 /^chrome:/i, 675 /chrome-extension:/i, 676 /extension:\/\//i, 677 /^webkit-masked-url:/i, 678 /\/statics\/js\/vendor\/kity-formula\/kityformula-editor\.all\.js/i, 679 /\/cdn\/js\/jquery\/jquery(-[\d.]+)?(\.min)?\.js/i, 680 /https:\/\/www\.gstatic\.com\/recaptcha\/releases\//i, 681 /https:\/\/www\.recaptcha\.net\//i, 682 /^[A-Z]:\/.*\.(js|html)/i 683 ], 684 release: release, 685 tracesSampleRate: tracesSampleRate, 686 replaysSessionSampleRate: replaysSessionSampleRate, 687 replaysOnErrorSampleRate: replaysOnErrorSampleRate, 688 beforeSend: tracesSampleRate === 1 689 ? function (event, hint) { 690 attachNetworkTags(event); 691 if (isBotTraffic()) 692 return null; 693 return event; 694 } 695 : function (event, hint) { 696 attachNetworkTags(event); 697 if (isBotTraffic()) 698 return null; 699 return beforeSend(event, hint); 700 }, 701 beforeSendTransaction: function (event) { 702 attachNetworkTags(event); 703 if (!event.tags) 704 event.tags = {}; 705 var txStartMs = (event.start_timestamp || 0) * 1000; 706 var wasHiddenDuringTx = _lastHiddenTimestamp > 0 && _lastHiddenTimestamp >= txStartMs; 707 var ttfb = event.measurements && event.measurements.ttfb && event.measurements.ttfb.value; 708 var navTiming = getNavigationTiming();
709 event.tags['page.wasBackgrounded'] = String(wasHiddenDuringTx); 710 event.tags['network.connectTime'] = String(navTiming.connectTime); 711 event.tags['network.dnsTime'] = String(navTiming.dnsTime); 712 if (isBotTraffic()) { 713 console.log('[Sentry] Bot æµéï¼ä¸¢å¼æ§è½äºå¡:', navigator.userAgent); 714 return null; 715 } 716 if (wasHiddenDuringTx || (typeof ttfb === 'number' && ttfb > 10000)) { 717 console.log('[Sentry] çä¼¼åå°æ ç¾é¡µï¼ä¸¢å¼æ§è½äºå¡'); 718 return null; 719 } 720 if (isWeakNetwork()) { 721 console.log('[Sentry] å¼±ç½ç¯å¢ï¼ä¸¢å¼æ§è½äºå¡:', getNetworkInfo()); 722 return null; 723 } 724 if (navTiming.connectTime > 3000 || navTiming.dnsTime > 3000) { 725 console.log('[Sentry] ç½ç»è¿æ¥å¼å¸¸ï¼connect/DNS > 3sï¼ï¼ä¸¢å¼æ§è½äºå¡:', navTiming); 726 return null; 727 } 728 var lcpMeasurement = event.measurements && (event.measurements['lcp'] || event.measurements['largest-contentful-paint']); 729 var lcp = lcpMeasurement && lcpMeasurement.value; 730 if (typeof lcp === 'number' && lcp > 15000) { 731 console.log('[Sentry] LCP å¼å¸¸ï¼> 15sï¼ï¼ä¸¢å¼æ§è½äºå¡:', lcp); 732 return null; 733 } 734 return event; 735 } 736 }); 737 Sentry.setUser(params); 738 Sentry.setTags(params); 739 } 740 catch (err) { 741 console.error('init sentry failed: ', err); 742 } 743}; 744var initSentryWithTracesSampleRate = function () { 745 if (!window.Sentry) { 746 return; 747 } 748 var tracesSampleRate = getDefaultTracesSampleRate(); 749 var replaysSessionSampleRate = 0; 750 var replaysOnErrorSampleRate = 0; 751 if (!window.fetch || !window.Promise) { 752 initSentry(tracesSampleRate, replaysSessionSampleRate, replaysOnErrorSampleRate); 753 } 754 else { 755 getConfig('sentry_all_log_open') 756 .then(function (res) { 757 if (!res || !res.data) { 758 return; 759 } 760 try { 761 var data = JSON.parse(res.data); 762 var uId = params.uId; 763 if (data && uId && data[uId]) { 764 var value = data[uId]; 765 tracesSampleRate = value; 766 replaysSessionSampleRate = value; 767 replaysOnErrorSampleRate = value; 768 } 769 } 770 catch (parseErr) { 771 console.error('parse traces sample rate failed: ', parseErr); 772 } 773 }) 774 .catch(function (err) { 775 console.error('get traces sample rate failed: ', err); 776 }) 777 .finally(function () { 778 initSentry(tracesSampleRate, replaysSessionSampleRate, replaysOnErrorSampleRate); 779 }); 780 } 781}; 782initSentryWithTracesSampleRate(); 783 784 })({"version":"\"1a1b95d\"","tracesSampleRate":0.5,"sentryDSN":"https://[email protected]/5"})</script>
784<script src="https://statics-cdn-cn.umucdn.cn/twww/cn/editor/editor.e1e09945.js"></script>
784<script src="https://statics-cdn-cn.umucdn.cn/twww/cn/cropper/cropper.48613f7c.js"></script>
784<script>$(function(){ 785 $('.site-loading-holder').remove(); 786 }) 787 788 window.Lang = 'zh-cn';window.SYSTEM = 'CN'; 789 790 (function () { 791 var id = ''; 792 793 id = '' 794 ; 795 796 })();</script>
796<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/umu_pc_webpack_runtime/umu_pc_webpack_runtime.2eaa0b77.js"></script>
vendor: 1 bytes, line 796
796
797<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/u_design_umu_pc/u_design_umu_pc.d9905e53.js"></script>
vendor: 1 bytes, line 797
797
798<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/lodash_umu_pc/lodash_umu_pc.939d9b72.js"></script>
vendor: 1 bytes, line 798
798
799<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/a_design_umu_pc/a_design_umu_pc.48240c8c.js"></script>
vendor: 1 bytes, line 799
799
800<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/common_header_umu_pc/common_header_umu_pc.1ba70c27.js"></script>
vendor: 1 bytes, line 800
800
801<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/umu_search_umu_pc/umu_search_umu_pc.88db1c86.js"></script>
vendor: 1 bytes, line 801
801
802<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/libs_common_umu_pc/libs_common_umu_pc.46725451.js"></script>
vendor: 1 bytes, line 802
802
803<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/libs_business_common_umu_pc/libs_business_common_umu_pc.02df24e8.js"></script>
vendor: 1 bytes, line 803
803
804<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/umu_vendors_umu_pc/umu_vendors_umu_pc.e9a99602.js"></script>
vendor: 1 bytes, line 804
804
805<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/pc_common_umu_pc/pc_common_umu_pc.a96e4158.js"></script>
vendor: 1 bytes, line 805
805
806<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/third_vendors_umu_pc/third_vendors_umu_pc.11de5363.js"></script>
vendor: 1 bytes, line 806
806
807<script type="text/javascript" src="https://statics-cdn-cn.umucdn.cn/twww/cn/accountLogin/accountLogin.5d6160bc.js"></script>
807<script>var _hmt = _hmt || []; 808 (function() { 809 // åè https://docs.google.com/document/d/1tT8phqsLFJEadH_kQ9hZTnGHttXtrEj1vgzuI3_2m1g/edit?tab=t.0 810 // www.umu.cn ä½¿ç¨ 0dda0edb8e4fbece1e49e12fc49614dc 811 // m.umu.cn ä½¿ç¨ bbf1c0b388094948c606c69ac34f024c 812 const isMobileHost = /^m\.|\.m\./i.test(location.host); 813 const tagId = isMobileHost ? 'bbf1c0b388094948c606c69ac34f024c' : '0dda0edb8e4fbece1e49e12fc49614dc'; 814 var hm = document.createElement("script"); 815 hm.src = "//hm.baidu.com/hm.js?" + tagId; 816 var s = document.getElementsByTagName("script")[0]; 817 s.parentNode.insertBefore(hm, s); 818 })();</script>
818<script>const tagId = "GTM-KLDVBZRM"; 819 820 821 822 823 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 824 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 825 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 826 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 827 })(window,document,'script','dataLayer', tagId);</script>
vendor: 67 bytes, line 827
827<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
827GTM-KLDVBZRM
vendor: 82 bytes, line 827
827" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
827<script>window.version = "1a1b95d"</script>
827<script>(function() { 828 var s = document.createElement('script'); 829 s.src = 'https://cdn.beschannels.com/js-sdk/collect-0.0.5.min.js'; 830 s.onload = function() { 831 try { 832 window.myCollect = new window.Collect({ 833 org_id: 'org9c62775d12ec259ade7473e6b65f951c', 834 event_props: { 835 source: 'web' 836 } 837 }); 838 if (window.myCollect) { 839 window.myCollect.init({ 840 page_view_auto: false, 841 element_click_auto: false, 842 events: ['BUTTON', 'input[type="submit"]', 'IMG', 'A'] 843 }); 844 } 845 } catch (error) { 846 console.log(error); 847 } 848 }; 849 s.onerror = function() { 850 console.log('Failed to load collect SDK'); 851 }; 852 document.body.appendChild(s); 853 })();</script>
853</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.