npm audit

运行安全审计

概要

npm audit [--json] [--production] [--audit-level=(low|moderate|high|critical)]
npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=(dev|prod)]

common options: [--production] [--only=(dev|prod)]

描述

audit 命令将项目中配置的依赖项的描述提交到默认注册表,并要求报告已知漏洞。如果发现任何漏洞,则将计算影响和适当的补救措施。如果提供了 fix 参数,则补救措施将应用于包树。

如果没有发现漏洞,该命令将以 0 退出代码退出。

请注意,某些漏洞无法自动修复,需要人工干预或审查。另请注意,由于 npm audit fix 在引擎盖下运行一个成熟的 npm install,适用于安装程序的所有配置也将适用于 npm install - 所以像 npm audit fix --package-lock-only 这样的东西将按预期工作。

默认情况下,如果发现任何漏洞,审计命令将以非零代码退出。在 CI 环境中包含 --audit-level 参数以指定将导致命令失败的最低漏洞级别可能很有用。此选项不过滤报告输出,它只是更改命令的失败阈值。

审计端点

XD05KKp2R5REFMWztqkFcvzYQ26dM7E9TXGIfXFSOpzgQGYLyz0lIHsDT4a8zlLkFS3h6YbJDVAgwJjkwLjOQ7AjR5M+7cBYdgtu+40LSGaj237y7enGUvLBTgTF7T05T/WTrG96z/8SqeoYstP7zkUI1kRpDvFZH6Q4xneXawJTHAJoUMIkpb+My1eMTYU3

批量咨询端点

QhhTXvSE/kIrAUGHSirXhX3ABF2EvTpoT431p17q6qBIINlwixPIae/FNGp4gSbeFWIklHYXFnmBkdunGFbRZOhR1Df2ZLdwbzJGJhi89TG7DtvSu7jIeMXDjWEM/iK6rNykdW3mAQMgbjRAA1fHn5Sk28rKkc33qZmpCq9BhYg=

Cyrouw7CrlRr+jXc4RYvUK+qwieSLlNYB7JkaMkEAQ3VtOhE3yfB/PczdsGlxtbGQ91IohF5RuW0/lovA5Ujd/FfKRzjoAHBQdbhZOQddQytI+XJhh2D7irXO8QiWBhhdqwvVugmJGx1T6lHlRuwXPkzcEuaRxnaM2dpFcg1Ba2afXX6F7bf25GeMi2c7Uj0EkZ78OnD3Z065Uv5Jk18zzlxiLmd8M/Y+kz5xODOMbBZHVuZHGaggAXA3A3iSgBK5TUZ9yacggfoxJqIRpXwSw==

k2O8Lr227/LGBWZUzB+ZRhILxpXbdgdkXSPp1c/C2SFTZw147ERcnh2BC8jZeUBJw9qE2Gj00IeUf4X15GSUJwjy1IMuBv64PGPPXcqsAkVODAEhx6PExhOkpCEwETBU9RVS1tvLihaS3ddzhhdi//NxLgabVWrIG3TqmHsugNWvrmTdoOyeCVDuAnzrLwY4TepKscbsbuP78WyNsuCkJkK/u8+i2UXHGNZHcAr4hkYJvmphG9uy5ILKKpqmVTEBInVVipzjO/9ggZyA0WJmC0Ebo9fxMxy0TgtSi1F3gG47Q+svzmIZAAL+69HW48rUxjGeHtYzFriVWiwE524lJ5ZTvcq/t68gvxvCNH+OCtBBquTUdxKUmKtP0N7Y5OcfwC33gegaHzLvWxTs11Og/SA1Xlvf+6qbc5ScaDP4HKs=

XUtzLtEz0gP5mrtq3b6Bs+tFSsw9ZKRHh6KWRqZ/mOds2UA51j3a04VoX++7YT5JGELKM403C+y8UcoLSTfSgpcmIqLS1vgXq45m3UoJFV4aeiP5s7cmxZWuPzcFsGYSSmyJkKeH/XoYAIn/ysD9CAv7v2sQCy/ayamoMBl2zm8=

JaCRIcaT5qKPDbDRWvChkIE98jvtmxOTZr/NxbSyYfULSy28eTMx30QtRC2uTzXkfFWTlOLjGk9OJjgTTKrrtIGe3/G3HCn0c5qnb7q1SI0GrEQH0euZGrYnmx67vAYUKkeaiGch4KZTdlQ1PYgVziydzIQ/rD9IQKbvge5cy0mxi/O/t89MY6Z8em3TVu33q0pneABepCH4TexQDc0NXkUo8e8/VTvQDGVidoBn2SSbXZRD+A9oYIoOwVs8huKYZMI4yqg5onVkBbDPPWyeBj//zg7/oyH4+toNBJRQVvDEg+8bOiS2Kb3P+AhWpuRndYy31UkTYJT9YHcykF8plUv4sRSN2jcHiksKREjkr3E=

9T4Mv830Viw1sy9FFF9vwz4UHAV0o2iHonBiI+ZK2cZEBbrtIzY6ufKTST27h/LKiGzdNHc1UEkUTVnJNd1rPjBedabzvLK9jueBPL/HQRYyU2yCGhkEvwrbUacP5lWB

快速审计端点

2LBzv+kSWqZZjBS1S2EG350TiZ5zXRufC66O/echTdKtKpFP/i0c9XAcAaz+MDt5csBrPat6Tu4n6dOtkeXebAgt6F7DkldeBJ7Pgjjj2+L7pF+EmiWs55pcUzynfDEybGBrOUiXoEaBKSltJXEMDF5eIEcTRDbQUg8tsYSJm55C9KrTCWYy5AMrOthh8m+acyGn1RnhIiNrKvpXfNkv41aTqrqpNzuT/O3CXB+wBOBMhAU1h5a65cGfoI4VrTeK

gfs/mM84Wqaa2QDU7sxmqCTt9l7ZhlPJEARWXi1Gwf8Yb2P97M7kYw0PdUnPykURaTGDtWVsN7kfU2N3DuQGVR8wL5jU2DAO9BUNd1Ef+wxCn7zw8c0olBnBzwoVrOwz

    /gwUloJkUhQxWCTrxqNG6WPBi/QQV66OG3a4VxIqBp4rjGTxlx1FzSrgGdP2grNlFZWdAOEUR0RTUXvv0GUtJ9DOpiRxQ54ICHzf9Ck+ZF8NAfkpwDSd+DsjtLGD+E/q0xTtg1vQF2fJljzh0wfTRqwy+0Wx+Y/UGQZmAUaHTRizlUBsLDtI1spxJY3Yyhjs7jzFQF520p2o7bCmvST5cg==

xwvVDIWRTJDDJ2i670xjk8tsOBcxfoAF6vrXTd/FAkBnnQobdd7ZE0c4tO1isx1sCIKivKNfV2SLjjViPpanH/F1CMKr1Et2LLU1G/QA3WLeFY3/oNq0yKVqjN0CtMoIOl9dMq2CMloUnRI4PC4S8Q==

擦洗

Y6yt9DqP93G8h+hp26Hca8lNDjpgWCxWwwo9vjfOO1uj3mKsRzxZBIDXzyBEB/kYWKk+4ojxI2KixjdowdzDtRFuVHJWNAhRCTgOhuqaehzuXoPDtsaNZDYOdwtIZSYKTdjEveC1KduwOMXZrPUbTGRvi0KGBS9kiVcrN+CqmyOTuMmOaii2o40S4xRK5C5ZEWmb8Ou29mN1qzCBIGjjp/LxK0kktN2AyIbC58tdXXWi3+5tzZHM8G+dI2iEpcltMdMQNj86VdTzZFTeFOI/CA==

5aMH8tUXAAw4BCa6bcE/xtPGPC0BAm+fGfMH3ks6SzWxYErSBlMCejIPKrNMlQNwTTRrs5nKTifAC4xO7oYrxNUJS8Ec+Mty22sMLko+r6Xzu9D3n17GXCZWhk3XMEgH49EZkNsVjH+O3vJyvlI5ZlvZBhFwKdWmuhzlTe7SOmg+UvsSlV84GRbk1Tb49wyte4ng5PW2VSuzH59JkBYaKq/JD6Heq4r5XUL99TNpq5uhvP0GlBfbKyqeVvQkqGcRYUzaBo7cpumDQNvlopTnsjjzD+2lWHIMVkSuPLGWPKI=

QhhTXvSE/kIrAUGHSirXhd8scQJjybELKOtiYEo//5shHf24D7HD5QsIvkfT+U99Gq0LQC3XGU22BETMJJnr2w==

计算元漏洞和补救措施

RGhXklWpcYMOTdjsU91T75Q0BoahkNG+MjwENlWUXWwGrmcAUzQNg2f8Hk+CWLCcJT5mU/lHuWoLY18NjuB39TuSx8Dd2Km8fsm94IRlvU0jftvBr9L0x2uO2odo500anr6eMD7kMmqvwb4XWw6SEYZOUQxol9aWFz0fzYWPOplMIRwaTT8HCO8gV9EkrexOQwj/rAunfhWVinFwR7+zpBjRaawrmjgvRRWxYXOa9Bqm2mgyFv8VKCqtnQAWUbrNmtTRFNDeVRB9aliUIadewmVMTCEfhi3YnerP+TOlRpshfzUB4eA78w36Kk1YGigG9YZcdgkTq89QEY4vJMCvslNeqkJ0W2FjvWdXCfe0b0lwKc+niKxqLoM02BpJypd+Yiz9dTFeJtIeqdPliPfSuQ==

sUjfM8xWw2Q1M7TJT74n6b2D8svBGCDN9Sg8pMi0ugOO2Qot7FGLupX4BHcX97T2OVA+p4ACeR0V+4txdh/gAeG6nM0ekDazOuAGEue6KI3fM5h+VXFa3Uf7ie/sDveRPWZ95dapo/MdkSlds15t/Z6TGnPUcQnuF2lBEPjOFE1Sj1d9kQw3KaZwddJl3V8I3RJs3MRPJ4jP7BEnzSaDI2YNlhTgB6pI1eeo3BzpMCNzl1/0BMJ81LVAF1SPB2Dw5DnAxeZ6lCacGG1dcS7sGHSAMYNdHz6vY6qWJdK8m4Dd6/CXwMSS1acfsLB/PVZusIJ6rUHcpjSi3CTHeHztajGdigIcl0UyEwpGyjRNGm8KQiACX70Q8gsF/2NdWA1Nxa2AwPdcdosPMeDzoDJBGQmiy3ieSXbZYoHvSXQosoCA94QewhneDDienKntXH7w

RSvUmYCY8NDPp7ewE9uxl3s8O01wmzeC3Z60d31EDw9eAiFlvvhS0f74lRhl1ahDON3OY5Ugg/FD5rrgO1dzjyI4sdf6LT1QT47GI9eaBuLYPKldRIewAcOuXud1gFy1vXXgU61dNMxpLFcZJAXPhTWJx6P+jkLMWBGZECn8CHpdISrV/uelzV/pkZzEqWrDPbcdu5u9luUVZKzvflj9JxvYtYLFNtf/Y4/E4lmKGVd/NjWeYWe3Cjgcf22amrVFxnjmI6X2F0eweYUc4EbJU4w9Od9/qEDYjEt4mkhV0Z5kC4nsVg8FKebMIzZOpBb5knV9+D20p/wrd1Q8Gj8EIAz90cdzgL0c06ltC2/ZcMU=

w0ov2U98fz1yGt7FLOmQCykk0rSMwxbxYT5RbzJDkjTbsROnhCrZItbXHnb4YqV9EXoy234F7rcU6W8oD6dPfLeSiydaxMPp5DeDZzPivj8QolpznLesvkYqrpyOB6/USmRDGHTIFJH56UVWkwukO9r2TDVT9RTFdsrzJk/zv/aoZoKSVTsSvXChLuEDtIeCsdR57nNTT82+vx57BPQTw0bjpouXeXAHPJhPlQBpsuDWhsIDJIilkZEWQ9YpA6Zvuet1KUV1Mmh6u464/JbbAkDhLTpMWKvLDQk2iiz6oANM7zmIi7/MfqCJWteErmcIFH3gE4DtsROYpkU9yLmMdBT2eNumPSkZhbne6uNlP8oV6dqqO5u2UcEFuqra8lEXZSt5LENYO/uVQ2J9TmkHvdNz0itPhTV3N0dZlUk/en2qGDXWOQiaikE46C9j0l1T

退出码

I+XKydyqGLSIuC0432ygeq6H3pKlZjgk2ZkE0cxcan3FBYhjsR2DT/1zIbHKViapDWKtIfFUnAR2Zyn5t3Nb/OsvoVUMLJvw8oH00pijyGhdNW/Wnlufkh3B6HH6vmzIm0Y5yvQQGIXSpwDwNsYNs0xJdEgOE4tV9qpB4SsRk7zY8MwVcjh9uQ0/uVWKEuUqrI2HvOKpLAXbDpxM1d/Kk93lf46skaA2UP9ZpflH6w1VGpVWlaaQuJavM82wUo1K31jqpJC5T306370tySJC5MlZUndlYpJWuY6Pp5mesGk=

G2+4FJlPbW829soL7wq4DETDj/vofModVCqOOMgmQy0UX18EFAmX5Gssw58rfZlIJLt49pHPdDoiaSqh2A08/O+HkPuzmlJ9fBjoVOHNzROUHl2IoeopRsubIV3emX34

示例

MhSYcn/AqwyxqSiwDxBgxP2ybSadN+quyRblaUA75yAeBMklohRW8s/BLKpHyOXjRRLrWidA6pI0NucIxY9Noof4DK1dVeTQ6GxwL3IzVbuEfdSs+VEQx5K3uxUs7bXTofWWvmWP7GcBWyPhsOkYfg==

$ npm audit fix

GuqCuzMJvYnOHZnjeNgm0wFgpC6q72g9VZLvLa1TT1XCEjCCF/87GVbYSexr4EzS/PM3HNbW4Lau0/mIDM1CTaE1f/q+juBGZfBXa/adHqKwY8Fp828F3rPerAI3avjf/UgPKHSFwqxYadoqVDVMrg==

$ npm audit fix --package-lock-only

YHve7ezqXn5pk9HDMuPNsJIhWcjR5Y+BtASw5sEqP2csEcWGThlBszl47p/Qgw2G

$ npm audit fix --only=prod

dqYjwJvbhVFUY+127xEUMeiQsHkt4Z41yMcEW0WyYrqnR02QkgQ9VF6NZBebilulj6qWWmB4pPeFyXFxqSPlD/a1wkPUIMso+eBSK5NVwC9FTWjLrb3wGJPTx9hZgQpyDLIL1Za1taF295ujSg9MmGukh8DrpUddUe1malLgtW0=

$ npm audit fix --force

pOxhmLUE8OoPzi+wt+WF/TO8rfjVUDlfoi4ALSazrCE8Vh126REkEz/Bk+JXgOqFvZWXJZRCO9PRgc9vn2NlOrGlU0MOIxvnwLBBvYv7bzwiBpfoulOaeizKM/hX7f0zPHTeBkslqF1LifwoLfrx7A==

$ npm audit fix --dry-run --json

MhSYcn/AqwyxqSiwDxBgxC5534VJL37YWFLjCEHlyXlrjBC2ER/X7olBmGyQBTn4kOiu22HYYPo03/l5zOKuNf9Jzf99/oP5gdG7yTur/0wZLQmRjhelk27bKTPDi9xY

$ npm audit

F+6Y6gTqQLxrE8G94ngClEl1HcPz6j8UyZBhjnHwIWOQgc33uGz4yC3sJ/7f3qz+

$ npm audit --json

LV8qRMHeNfLVM5QxFae61G6X6pX68GwcDV7b+o1IGU1RQCJT1AUFtg5tdvQi9FVXakjUOHioO87LWuQD31WeU7qSTZmGuvpCY0WHEF4Xucc=

$ npm audit --audit-level=moderate

配置

audit-level

    b0hrlHHbrsBd1+jTjC8F8Jg0ExApaTdGv3olILjLy3Ng1Uoo0oNKfr6q3mHQPCXdJz1vjNNoF7lyszR4rusRJaBEojFqgNQ/1lo+9St1EMhbmMh5szDdAqPnr4O8I+Spb2k5RYf0kKaDtjfjZIEhhZ3UTRg570ddb4Df6TUKTuY=

w+hYfjtLO9vNNAyt2EKFGdGCF70ZRxZvtMgRVrgWe6fW/O3PSzLDqliNvjkJBsCokuKGiPXxJi+9fL9EYu9Os6vjgtceVig8653DTOsa5e4=

dry-run

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

F1cNTMVNqMLH8t7Q9MbohSRMUYrpFHHmAjgQo5XoaPz71l4ahj4AexOOtecogKUTx9UQdfUkt+j0L1AUqwvLXH4wOWd32y0foqSOsADopHbfzxGYv+AecaO5nTuXOV5qmVpiwP20nxGb7vFp7eHSzme6kPnoaByr9uut0mwrxNtDZAadf7YG55hbJLTYKoUPUPS7pFgGX7ggTUv35Af7RujdOOax3HEJVPtY0jB+WIyvO487YomiiXW7CGokaHp8RHYOLBgzvlNUGmDCMnX1VBXXdF3SPSJNuF66QyK9fGYYhIxiqpkhr0yszIpgBaa1hd4fN2OPR9gDYI/vjsv1g1Ht0bFrXcapA0EKPVplZWLV6WqzNEiPfFu9Vf/zrYD2OXQpM8lE74XlmkvsCXJuNg==

qR2I8sICnw9Uo1s8xWsUh9iocxf9mhNR8c3VgRknkNgoBmXIQqWKikI15mIRILKl4hlC9KnChPbXeSRcY5SBT8HXQqmM2xrIFEYxHzyC9/o123xjjWi4sX8TtXHkVkpMeD+WVTHUWM2KlBB8Egt0bQ==

force

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

HHUxJ4UYcvGnDM9kf8Cv9S1vQVpy1/VtwMcwMa5BRXxq3vjBy/jqq7hON8t45wqPTEmkRoup//II7MjQ3+TZFn2MzUWcYHzTWQfrR4iz7T5uST/OzcNRBii0/+GVMvtrIeHfohrtMVXRF8ZNTqq9qw==

    dEgkAEYJjLy/dc8Nl32X204nRkRV3nS2UFaZE+JOvvccbXNRMYmlIT1vTiX+pREw7AwXot6hl048DttAW3+RNFjBM6rPxUsUPHv7LM3wvb0s/s6ng8qGC7ghHv5eGmmRijRehTbLXmm1bV3J1r4fKdidXGTOiG82RNbe0uRh1khwxT4beS+bOqiNeIh4f75oS3sPBP82NJ6hOQQEuZzSm6d8Vg6e1SvO2Hf70h3pmkMPZ8syVDVgh92sMEXhcaL/rRAosyp+nWspjJ7d1oJxXNIxdjgoZ56QY6SU/HOxiRhnrcCNutqMSfn1iDynDbZn1A7M1vZG7Z+Z7Nd0uNZBY1fc7i+qyra5LwXdNBFH4hzC67p88woparkhN33oKZXtn/QNtR8Rn3COz31vcGYGxg59hmr6VODbCJ/zaWwsT9ria/G3uFWH/UTuB9xBysAQpv7QPxouzOf17M7XFT+vyABegSzzA1kJOh+9XsRS/3FtNxxltWEEvF1uj8PWKdWAWXics3GIfTCKGP5RLn/NH44g3xpl3CiQXiLGDocsy+sVwJ0xy+1yCb89G06+1esbrBD1AJY016RUiAki44Lj1Hs1aA7HWz8g0geBRWVdORBmmZJew1itcEMqm/QXLzoY7jUKiA50pxwvgjVTvBz+Gxx4Xrz+hS68AW81CXVWENbAeGtlCAeE7iqw2Icwpej4aSSVKGQr+fRkS4/7Q462uxSn2czsFJFwDMA3+zS/mJMrvD9aNnXqYWwqTAyG36lOd/q+x8E6r0s6p/psN7ggITCqLxLRJCAju4gBm72oVZljRF8aEAaMEd64ljoyc+vSH0abC2QQf0qjZuIuhKAihvxb11a6EkjSYMC1uFBk2qT8feXXQTEuWrJzvzlkps1p8yp05UYgI3VtrN3PCdTiMPbGVZAnrcNSJbWYl405MIS15nK+eqwigVSkJgh13QuS3X9olS20SyK7y3LCYoPgtV7hExakrju+1ieL6RiY9kAlTpPZ441tTDBkzAZn/Atf1X32NpsbzIkm77WpAEiJqN6SsPdU9jjDTyk0Ywo/JATnRVHupGRJktJ9ZVioRd3/5xRolb65vrnyWpxrEcupbOgObTPDMmCVU8npwmzTA8Q=

p22O/LK49nRrPBqLn7JGNtygAkzvNQ8cqzKM49bmXyJA4xrozNh8L65odCI1/zai0CdiVRSjSHWfmUpNmsJAHlYycg0k5JAlNaaVJBrObjq16JsjmEROpazWghvBqdk80wqg6gGGWwJKV2dDX2BZ2Q==

json

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

DEe+LWYr0Tcfweg4Wg5X5H27OKbitc4WUsvR4lpq4QhqneSJSq8hzaEsPEb7tcqRnE3ezvR9Ybysv8IlbepyFw==

    oJMiEam1BCKXYJBWeOJLm1NDznXj2w01wNzqGgWaMPK3gsSJ9j3BtXZG0gYSrRgNsaIOJFrl/QBNYXoYeXjRy38rMzEdwcemw33Nhg8JaS+Ly2Bpi/oGUCWjwSfTAOGkDXIE+198yb2YdzlAAKqcLimGRpPIolHqBTHkoWn46h+SIvfxV7sXfLqVy/QB8+tGg/NJqM5krpMsnSQDVbzNww==

gNqGafEOqfY5oMAln/1sNS0RGec0gBMP8tHlU23/QjVIBUGhYam7d0MKA4gInDk6

package-lock-only

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

auevlDxLnogQIUE8G+BE+C94QHC/lj/LIafMKggNBkneExR2b3483GW8xRDPIwWhvameyCXTOWQGk/DbcibV79tkNHfvLDYtHJV9CkdKmePyYgeP16eTxyBkXWDUnWy9vL9z+FtDeH886gGNnijtqkqBhEkcgZKmixl7pSDZGzQ=

jxDkxB6h2Yy9hEYPvKvTYBkFupRxZlQzpsqRmIJq35h2c8Zit5O9yxuidZC6xeHCjZ4OMEvCE3+E6ynZ7qUDaaIVEK1xbOEGfxhXb3VotBiDL+pnmylYdnqvjz6/0ynraPENBxRDM8stikUZz7uOkG107RHd99016QkIm9MuDoplVH0LiHdmtDxU3qdBb1F2LVcDkrPhBpJm0pWZtEXLiw==

90+Yjed9TECJUOrnkSb22TZ9HYL39l7VVeMPja8e4CJLmAfB12UMKnui433NQGcI1RHiokev/sv9LMmgifpyT1rLe+hDX4xVJB6qnr8ScM6gFt7b3tDaKvgjpD8/QLgAPTpavrZ9LYTwIulb6JIUncHOdCpLpjV5pYooD9rFikCx87st86SSTwn8L+2RU2h1EH4nZkbr6c6smM5REpMl7A==

omit

    b0hrlHHbrsBd1+jTjC8F8Cl26Ry8fpeoBt3N5PMiq5g8qsiHkuBqk6ZzrngmehksWfdGgwMo+h4Pb9cgi+mEldJ3p3b8Tp5/CxBH30/aX6Uz/0s1XdnjK1y5HbyjuOdbenSWbNn2MadQHYSS2E6Va16Td832/XIr69nxeYT2JRzQ35p+AF4xcZ/X4kaQpnvFAWDWslrmiLfJZZOKlMgVYecmeVVihqHNv9+I77+U20TTTlDKqsDHm0OIamjtYgjO

i3RXE78dHBbZjv36jDXQCsrXENHMuDgeN/o5pTsR87juFzG+K+pKS5/Z9C2Q6STTHOxj5GpNwi4S1QeD7Qg/aA==

PHk0nAuTtDFY6AYBEaimMv4IF5Vwp7UsjPRbcOWpD+Llqh+K0dZcVNwoXsFCy7ZDgVn9Vpu/Zdg4UTVE/uOPa3ALp/EnVdtDaGyajarQBMf82cw6qg6C4Zum6E6RnGTaes6u5e/iwPEl6zMeHF2jwD1/S1XrKYoYP59YXZ8wN3F2KQJP7QPzRTHPBB+W8iPB1rH7Sg37kPx43RBv3VAWVmDyUEP4tYix9SMxFLA/NUuHIF7hqdIo4tpt2p6SlTeF

7CNMd/XA2zMkdEW3OZUw7fWHcdcfqqk9JvaZE82zTYR4s1KG5VjckfoBYRyZPzkVmYMmeod5Ezt0snccBa2rsq12bKohX5J7u5h/yUvMn7V/Z3zVR2Cqh5Kz/ch8gnf8aqBVCldIZ0QtY6YKZ4y5bCia/0Su35Lws+ivX9WlTBk=

Fq4ZvTw4OGfIjS2p+AsKgTuJqacpvkYwJkOS2InMO2b7xM2rSuWqeOw7K2Z3J766ZjVJrNxCsZXYFPy0XiNVlmODYXualO4qN/MFMakAkZe+GMDgx+hv2o20k+Lz2SUbAMKeimrjU5BD6xgHb5edFZaDEZ9Sl15TKZTjT8vEmptxYDQ7NrVBBb0un09mFUWhDb9AgzWjGGNclbTnJJhlrdTb4xrmibXsnRxw24IKFcA=

workspace

    b0hrlHHbrsBd1+jTjC8F8KCRLyzJRT+WqUZQ4r307lIYvogD0imVCOFm78tc/exZDEZ1Ql67GYJU9ZAD06idMQJ7xnTE3xZ7Nme8Q7VfoYQ=

KvT2XIuh+R6Q1Kcq80sbWlN15CJryUlZK7YV1wcSw2cYQ7x0Y1SOfW4hu/y8vHFP4zfnDGCdg4jAYanJd5mpT8gvhTwOUNuGlmctw+UrnJSJPRZOuz3Ps0aMxi7ocSB8Qu4dgSKr9A2pI0qXv4fL27/aTpi8BXxMkBIYP6UxxWPgTlU+LocKaN7XZ8J9jYAc

W5xVn5yr4+dqmQKuT24uDnbmV+6sAHy+8RmurZv4UysVOkbU6GawGPemzrrvQMi6

    j7oMOKS3zi0HFsKKZcZP/e7CDbZGXZRTKDimA64EJ1gObp2qIaLwM/3v8DnAJ74CQm8/nPraDVchoUG+k3tKUZIcE7H8PgLikiO9LsbJr3RQHcA1W9i+I/MQzWrfNConRYgR4b1vKbWlX/FozHvUu7M0A7rXSLCjqsBFPzVswnO6HZLz+GRO9lUx6Ka2WKW2

1Oo3nhOsL3HBMe8auUprCkr6AtQe9OWq9v3M+899yGrBGuwJlXmaTQr2io/u4tdYJXt3wxqhCEy5UlQHDuaqLls/y8ipjbLkf0tG3Xhr2akt2mY5VmCsKRv3BktYW6e4Zj2BKzLZAvS867fd8qV0ASp37a0ufliGO1Jnege0iFPvJaOJ1V/yRBuGS91F62lH/izeRppd1jVL7j80aMlbgYmuawvkfKWd33A3CLEGrajSX51/mCPUEflde+a+4pRq

2edvr+z6exHXawENHtpyURAOPG+7HvM+Fx0ccVx+T2EDWO44C2SrhBOTMYgu8fdk

workspaces

    b0hrlHHbrsBd1+jTjC8F8DEDNkl6svjnmv4dOv0z3hH9CSwZ9rJxsXivCkhcQ7/BNoqwX9jxZRGdLmdIXwj0cA==

G3sw2lb1sK4MmrTp3L49aFV4x+4B9itQ62CJzPdO+lpNkPEqIDKQvuf6t9MUmGSwyYHgs0e1St85R6JnmvRFMA==

2edvr+z6exHXawENHtpyURAOPG+7HvM+Fx0ccVx+T2EDWO44C2SrhBOTMYgu8fdk