semver

npm 的语义版本器

安装

npm install --save semver

用法

作为 node 模块:

const semver = require('semver')

semver.valid('1.2.3') // '1.2.3'
semver.valid('a.b.c') // null
semver.clean('  =v1.2.3   ') // '1.2.3'
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
semver.gt('1.2.3', '9.8.7') // false
semver.lt('1.2.3', '9.8.7') // true
semver.minVersion('>=1.0.0') // '1.0.0'
semver.valid(semver.coerce('v2')) // '2.0.0'
semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'

作为命令行实用程序:

$ semver -h

A JavaScript implementation of the https://semver.org/ specification
Copyright Isaac Z. Schlueter

Usage: semver [options] <version> [<version> [...]]
Prints valid versions sorted by SemVer precedence

Options:
-r --range <range>
        Print versions that match the specified range.

-i --increment [<level>]
        Increment a version by the specified level.  Level can
        be one of: major, minor, patch, premajor, preminor,
        prepatch, or prerelease.  Default level is 'patch'.
        Only one version may be specified.

--preid <identifier>
        Identifier to be used to prefix premajor, preminor,
        prepatch or prerelease version increments.

-l --loose
        Interpret versions and ranges loosely

-p --include-prerelease
        Always include prerelease versions in range matching

-c --coerce
        Coerce a string into SemVer if possible
        (does not imply --loose)

Program exits successfully if any valid version satisfies
all supplied ranges, and prints all satisfying versions.

If no satisfying versions are found, then exits failure.

Versions are printed in ascending order, so supplying
multiple versions to the utility will just sort them.

版本

"version" 由 https://semver.org/ 中的 v2.0.0 规范描述。

前导 "=""v" 字符被剥离并忽略。

范围

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

售前标签

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

售前标识符

xOtE6kOt8FRI3IwXt468ChyI2XEkOYWTWLeftyaiMlSDcMu89VS+YmynhLkU4YPXUlXb+BOhd7Ra4KeIxAJuabXpCCENN4dzsWAxk8NW9SRnLGRzr3KiX/MmZGg/b3VtiSvUlRTXHQCcR3phrTN7AB0qaA33hSyjfBopTTR4hv0xKskjGA7Xh7sZcrtAu1r+

semver.inc('1.2.3', 'prerelease', 'beta')
// '1.2.4-beta.0'

dR+lDys9tJumIaD5Dx+Rx53WGLxh8MCs9QBAgSLSbbE=

$ semver 1.2.3 -i prerelease --preid beta
1.2.4-beta.0

ihK/wrJSgx5m0u5staDWJZ+mg4x7fEdhBIZ2+DD/Zx7I5Ap8uo96rElsceCotEby

$ semver 1.2.4-beta.0 -i prerelease
1.2.4-beta.1

高级范围语法

qUDFDSTx5lkYv/WQ2drBs14fY0jDzfKPPdQFZ6b2GrIexxlXLgdlfxbFxS64rZBXKxupbh5IGFlF5k3+4fUtTiODhj74+ByPhIQJD4XxqHA=

ilqBRFXnorzry7M6jSkrrxmqYPJV2LaK7MyRL1gQCj+L/SMS5Y3RM5ZO/XfPoulNv+XfayV5uNr5EcAVdqmtgI2ySY+XIuD9KUV6KmMsCoFCdvYL8tGvWN1GTdMkXfGgqvttpplEcJ/HcFWz5i6taw==

连字符范围 X.Y.Z - A.B.C

i6mTsQi8r8vqrwBMxuQKMCTTScCM2rCayGU7MLQ/UTk=

    4t8tBhTRTpGHk3mqXoZiwj7viKBDpn2ZK/HudoDEv9YH8opJpkWuLUKgp2cmZ2ABs2D7UTB6YxstPwU5xP85Q4EYWoFWfwrcb1o26KtdneU=

XFeNFAx72C57Mg4VhkN9dQw32sQG5tS2957RJ7SQOkkr3TrCtVxbdrksHLxiQPU5jEjZJtJmi1rKzNpocTHlsTOo0zEggjYafGBBRw1kiRcx32N6zYWYlcwLbsToYXE0j0T73b5AqL8X8krIIZoV0g==

    PIgxEzbyi851jpnPAhg40V6kTraRQrokiD6WO5roUmJU/rui6p5zum4v9iHDa99Lub+QR+2T91GUymGZGZ4vPWyCCmAaNDLNYlzpcqHFEnc=

XFeNFAx72C57Mg4VhkN9dQw32sQG5tS2957RJ7SQOkkr3TrCtVxbdrksHLxiQPU5w1nflCt41ayinZ/3CGaGiyPVA6a/kO4OpNsYn7d5JLOzaWs+uoLVExrfrejrm8Jl3S6Q2V0Xo/mOIOjFxkNPsFayoUzes4W9n+uHxBGDsY9TSFeCAzrMLPR1R8Ii2oilNeK5vcENzfqjosszJ8hW4N+06ftB6mQBC3Dxx7NOmiI=

    4t8tBhTRTpGHk3mqXoZiwtpSRIXSynIqEdbIdYuv29WXJuCkmKk7lGaJqE//eVvl3mQixudIuTsReqGrvza9ZgABUwDZO6+HMpernHhepyG5yhMonlY0Q6hsRdLhHIPgeSv+pVdxkfOgxxHkLI65kE7POphl1pYwVJDi+22sg/n6Hsh7Mia7eCdRrg4jlq2j

X 范围 1.2.x 1.X 1.2.* *

/W6tJjRP4ENbQ4gyeSAb4ALAoa0lNGo/mhO9NAv7TfXxxP1Wd/4bm9i5UZ/NugkRvm6zkx0rzXOoo9HQ/ffeTAdLBkx0XnPPLIgFwt/C4J8NaQc5VlJTnEBcExbRVjOWlHzS5Cx7fYBdaRVq0tNYGX+Jy2ARC4d7W8zhvI0tEoc05nAJ1wQT+WMbKyEBLKgW03qUXcEeFbIDYpIWRZYHV2vmM1qRF4iwaoDzvpPVMGg=

    inQ2aKOk2L0x//uB7xylkM3+RwtXxtQ3N1YEjncjSou5YQ0rbqSnFQXCM9eEVH730+jilP44t5VBPWHi8mP7V0Zb906oabY4hejxvn+P5GOgaHUFJ90ZyxTg/B5iQBg3z/9wSHldJBm6wrdMKrLkXi9+uwl29HehPx468oH0u2xKPrvQ0TMSifja8Xnca/I8aoRZpy3Uc5kWOz5/2A1WPoIib5gaMAOlwXeD098xYbH+CmFtfr/MsqhKTjYCx370/DjwBKrJy5p3/mZGdagp/ja9YGcMComjfNQMv1ngtMc2U7aNjBYbNXfz5wf/NwYBOsx2D09Wuia33TIYQwlEiiLexaSMDkMYT6rlVsqoAqg=

ty8BcSthy4K8KiNog9Ex80khsMhh9Nrn+cJVLwlE1T3NUC0MjTffKCBRktHqlq/K/Ukrsw7qqgr+U6C9BUCSIzU6Wy3ynLeNXcttMQchBgzci5lxX33dgnEgFiyAa6Tw

    ofc404N0pRcH740PxxxnT/aad7J1yJ9edZlDJUAVDTptkaHqrruDUcNaW4kDI9SQiz/6WkTFxLOl6XeeqTLBEK0/I37L4Qtovex6MsgkcW1VjQty9jtKY2OpZLeZ3hKuPN7eY8lb1UyFVum+jN3NENBTfqhkxVsPgg+RS6I3fejW8N+/JgxDo9PUDFBjCy/Vqn2btEDi7AKPIhuGPpP/fsPz3lOxkj5/jva7DgXlKNQf8BhHM0E9btnaoobMAWsskTm84nXfSyKc45pvnzXxgczx0HOHV3fQH2+bFjedsfHdig9fynNgwFAFxxq6jD9ZgcnXxbg0gQcxTxmNkAm7FDLwVx0wj1fOE29zKs3CACw=

波浪号范围 ~1.2.3 ~1.2 ~1

W6uTzkVZ7W59hrWxVaOuqvllsKflNvuTQOVMiiU710CJkKJB1FjtEYXCVE8fhimhDELHU20EQ7n/JT4PaBAJTlkY/bdmxmeqcQ4mZNdZqaLdNi4EXpoiZ3EgNHmrxHCg4wzHNGz0hgr0/ICMr/eqF5DaUjcJXgfrPu4dbuTE5DJZdCDRd9lKaSmGtV52m/h0

    1Hu0yqHKr5oiePunf2fJhcGUyAoguUCCJ6fTm5q/Z8E8KjMF67/1s31m4+bRhDixd1KM560VKY/LMN0TkUtiwwhxPaupUwvvvsVbFMF2nu8r4Cbyd3lpbbVZOH9Itw0UyjXGQSCXf38xuYoTZdM6zXkKRV0mlb+gTzLAcg1XE1bchr8HRr1kmRrMTWZy9wbOJgvtahPnrGSvsk+3AXVx9gTz95ueTQSR6TceOY7bWQnMq8eVNEcRDTv5riJkFMDwz4v0PjJ9P2x9iVX2hb1bKved3sqI28/eodOKnBnFNeMrZ0pVe6ePedHoZmjWfUDoCmBIrMptUh02hKnM3uQOx3LLrxNuFF+LhOtq/6yR2YRSOY8KiO37ApJ/U9VuPfMscQa16EnqMqnE3t7ve77w54UG0U1sO3t4m52ErpYs5JefD6InhBKgQ3mVF5ug+JBDjYAv5OqmXVZyym1GoiWavciZ6isUAH3eoHwYOylDG+MTpFNJyE0FspKB3tOdEfwv8GfCRFaeHmXMLZSdIQAy9f6j6G39RZntzL7aif+mwUQzW+ocMQdeWNvh3ycXWn+jJ1TkEsDnZKS6QNNDpohuhjC1XbPZwFNGJ/xHWX0UTkp5i7gU5U2dLl00AP9JWpw383gn2nljipJ/VsZJ4N588NasdLfSXuhFPoVxkx8SwI6ZAeZmezsJTqdfyrKUWzrDJPyOCwlKgq7vxT+PnjN+vv1lPeF1Y+udDSxfbM/a+W236ZhPQvwzRABRCJYF3Hn0oyYCkI0h0/x7/+hqxZzlXDHUIYjC+DbTXh8ABmc0xP2Nqu5vkWw0YIC7vCPMoqKQoxMmnK4PWOkTWYR1IUWte+5/1j+HSZiE6tbseUvy6FJ85L8fvj9qvk+o1GfpMX8nBwSHwo51LGuhZb1jRYTOBw1Fm72XLKIqNAHAcXgir2Z0FxpCuMeYKWOxIR8GCyuTgR9aPRsH53uUzjIEqpIokSFV/+/XzTevdfO9MoVF9Qdjp1u1t5s/x39vE8krOLkhxQRq1qzTRUjpyRD6Of5xOUm8gMNsLIe+axlM2oww32CUXjE18NrolTS7sYUUKEIe28KweHdD//xkqQ/9buv9O0/cOqIrG5s7zR84xSzEb99+nCHfT2doZ8ZARF3YBMWraBITLblgJ10Ll9JSE/de8LlIIlk1A61BwS7yuXyX5ZKjsJRX4FF7PotQeV2JnNrejYMImsLQbQI0NJbIu/ruJvupiI+KmY4l4UAmbJrQsg/GVAFn1R54WAjpY9801lv0JOZEAWfB9UGkqDa+e9acan794anntEjcBCkdlxhqynWTfZm1WZD7HbWsa1sK0wzTZ4c+/QEsp6ctneSxfnHGpGnlWVVGR3g/IMG2rL4+30JCLQ0RjQx+gHwbM1DIkcAikWkXnKrJ7a0X/to09BPKqGfymEmVl5iXXTR5/KBgxzV1vpqcb2knechGnoMoAPkxTEVxICjZ2JwqTvMPshIYQ3snlBhtKSmnVXvxUU0W7kkCzl1U6AY4MjPduR2nkop+

插入符号范围 ^1.2.3 ^0.2.5 ^0.0.4

f4hpPW5YN6Ux4y+MXVg8aeA3j8PKKbxrv1hLeZV1Sv+9FXXtIphluq7nBQmeZrkKeEAz/AYXKjXbrNzRke84NhSEhrc+FCRCvzKvTnOdQ+nmPNVmQwqDop4fqSY1k29t0mxhrLx1x/cVjb5Y98Yv+1qpy7R0dUIobk3/TLxuX57MbrDfCgnV3dXX8PfRwp6tfPoSwxShIJLzx6kGKFOHuYSlC+TPkLKkbBiBS01rw0PFSo4a/M9+gwcbT+dk8Zzk8Itv88SzHF449KrglNYFabXelThWs/4JHUbm0YAm7Fw/+qn8ZgR2cq3m+bFOJTSCndWRqFb78glm/cgifyJ1QyKJSc0xuDJodMfXz/kbwcsQpGur+j0H9z3fqjsqnZUHBxBaeRsBVURScTfaOvXdjg==

BfmQARSdArtJCIMArjqyfa8SC6PsWbgW+RokvHlxXLOXOzbxTQb01glz+CVmeCAvUEhTrTvsbEVdLQxcfsIDPlfaWzWxFrvBKNDMmVDMLRd1fQuuxLeBjASPRw58eu0Zjk5qL9mp/LAvKA7SyNA1Sw==

J2LSRgdHnalPaLa81lmRTB0rrWlbm3VMIhXZajHm1qHN0EjmFPDifgepafGldARRICeCPAeYFBzm2z3AeojL0Jq4jlz+4yiwTE0cas7RJ03YnxkMsMIARB9apRv7iR/cFYeI1Fv3+qMS8/3jAzz5hsw2YLx7miGgZKKHNF/dZ+wG5Rd2umDO9TMnjG6khaiAYKhCLumMH4YcXhePx8+Tn3PNDFFZN5jyJJurbUi3iuM5RSN7XvYa3A+MZ2+4/K7VeZTa7nyBje3+WMFUTMG7ZxsDoB+RfhQnenGmaQl2LyME0cgVCvioA7RSO86kz3goBNJycIC1op2n/ANQ5FgqSfXWjgrQl6Q4dVDGRK6uRaH+VsdL6SItUZ/5iuAaHISN2xJanUp/c5cZHLXDnLY2am/66mpXHsXlDSmlpjvFuCuJ/lG1+fdp9pl/PcRplKlCOCY2TtM+lrapN/UkX17H6w==

    35pd2+g8rDPxVr4Hw/MTq3naxIXxdo7GW8QuFcEzbKdlqaPlPWuO1wsVBG6vWFbJiz8YLqCK9W075gTfkGzREVjPApi8pUUhmw5IXxhGdf6q3OinaFiZY4tcqVGKxXUUl+SOKHLUkAEtORRmPUkpAH7I4lH0CLPJQPobin79C0Xp8MTJNXr2sjor2lQj/flDAthw6TqHeTeoPAkGThfQMCqpR27h0u3CdM3a0TaC8wXYHYq9tCCxJn1gXQi1usCUJcJV2HAo2Yls/801JmVMfceXkh2jq4rz8mhgsjTLmDp6bAX/3Lc2HvGlesz4Rs9T6787D8wt+F90GjOkbjzFoepEFqt9L+XLDWNVEvOuCWe2qePyNgK0yiB2DOEuo2nAFJ2IRB7rjHWTx171HJJTl60DCMb2HaLB0O0dbzrAuOGvn20ZXxb5qNhlrJ2/7BwNzaQT+IAkP07doNWbdyTGQmwnPjO0EZR25/VlQmR5kJkmSYnpd+wRuadEDFRHx8ncByphUhNn3pYPuBN8yuiIOVgv7yeWM6EmRPFopukdtaE4Yviiqj8oOrWuuJ09KZwtiOop+oJ1JkuwqAlC3Cii7et0AV3+8TfEd3h7fFdczh5nEzvUhagGwJrOzt4eYX/0Y04+D6EphKs0Q15PC9JXnu+3HjfCl9t8hBzQX1V8hNQF0x1R07BESAGFHeREHz4k2KGla9yCrmWp4/uCdDuCE8qrAcfwtGZV/mPRjTxIkqvG6ll/CY4y/pFOckUMzE1cKKLn6qZ0lGIJZWAx4GqvSqJhPpPff0sqNRd0XoY5Vi/HFWzSxhM1j3K6d9avqr78ARjrYMX8+c9mTbU//iFl64SUnOxyCCd2T8IddGXuXQJTjWf648Zu13GJDCjpf9XCpnY8KH88uDYgzpfdug8dYiip12Td2gQCoqIkAY6Eufqp8OKzdGHrwzTUYPIwC5NjaqwrlHMWKOtNx/+fKUEIx1K0855PwG5UJbFJzMVGSPerCpDYDmqN8TRqKkuMxN8Yr9X9FDfWRtAu0AFdyDk9tSYGvnJxxMjh633T77awNwDke/Ajb0plkI1ysIeoZ/Dg

UNv+NA+MWs/QI8U5OdZJZY6WZjcV6I+yg6MRZngQxezONlZsA+SCr+vgMvflLtaI0muQwAi6Mgg2hd4olamo84AY5zYVhVcnK6+pTAdrskDItpIL34nmz5i2N70YqPCoSuLODsHtC0lBNOGcClYCgetxet5MhsE7JbRglfiM6xcNRj9dEQD0D4KnUl0nS0zYD8VhwgEUqOXoPX5CUcYkKtE2PRdvjjbYgTOmoPt8Psxd6iz81L8sl8Qvn2KXutlf

    35pd2+g8rDPxVr4Hw/MTqwalI77+ZIGwqe8DTbXXT8ITnNZ5kMTZaXFTOyMJJDdCaCMlTikiPczNUe0rZrRvY6wb0Ez5WibGefUnS2qwUe6bZmM5WSFV2hDJutWoVrR1d/rDz/MBXki8MUBia/BjsSe44Xmpk8lVzAajaHgoTp4wRYMMyoPEf6rZ2FYCQo2hnW0FJBI0fiwmdlChv2VllNqT3b4hNVbDCQVmja0yXjFVcBlLtg1j1/Ff2HPyC4iQddnhdEbtfL8wW9fAeCF3KA==

cMewEyC7Ah8OPVFJaskH1vPOjkNycB5cyzQGIXIZXR4TpSjcU8/r+Wv3B06Euu+S0lKyysGGBwxLFIaTRSkGhEubGXtQS7KiALZKD4UwsymCnkQuKT/AiNJ4v643rBmqCCvDb4TYl9tIEb+cHZh8Gwt1/z90JoXaQZylv9XbY8Dioa31gqPedrl01dLZbt6OdSw7R9yhops/Bm71KOeRMg==

    87GuMEL8xbdtwjnGWG9chyr47uiQk+bSEpi9s26tVq+9/FPlLXI/6xIzQnOVwXfJZfjJv00EZ99dio6QrHYNhX8+4PS+YJhtIEuQ5NfbgWblbmDZTOXLBbd4Fz6dQ8ED1FN3ghVpqq5fDOuAZ3sl5dz+1pxHyrpBRZ1wiPVw43sFrwTU5wk/AP6RnB+wx659

范围语法

5WI3uusYva9EeEDP9yavzPwycrZ8jJzipVIde2EHuOHKbhjHhJBWF8GvI7jGyE5+ju4x5OKt/IXaqpMYmsz/W3PaoTR1k0NL91EozHiuBcHe61Osllw6Q0HhFcGx8oBYW1CUTGsG6bV9PK0/elItkA==

range-set  ::= range ( logical-or range ) *
logical-or ::= ( ' ' ) * '||' ( ' ' ) *
range      ::= hyphen | simple ( ' ' simple ) * | ''
hyphen     ::= partial ' - ' partial
simple     ::= primitive | partial | tilde | caret
primitive  ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
partial    ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
xr         ::= 'x' | 'X' | '*' | nr
nr         ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
tilde      ::= '~' partial
caret      ::= '^' partial
qualifier  ::= ( '-' pre )? ( '+' build )?
pre        ::= parts
build      ::= parts
parts      ::= part ( '.' part ) *
part       ::= nr | [-0-9A-Za-z]+

函数

gUh167tVgCUPf4bMbbSptkfMCJgubV5BbbgmWoJH4+XEpkuIgxMozIezYG7Q81AyUObuw4c+W0oVXuX5+a0EY7XdxBVH7VIj1XHApjFNP1j440H3GljjrrgNhd/J0jTe3Wrn2mAlg45hhcgyVPIocsXSI2AZgRTEpIN1N9HcEIy9H35XCOcSOdhhHM95Ip3GCuXyBVpP88GLJWdt6dfMqA==

    XNL5IbFwynw3kKIY3hsHPsT2hCQWdE7jy5E1AhNlX5wDnYm9nYKp0mq1m67UpJuTpblQfSEGOz7WIkYFn+PeoSDnZKMaGwlT4GhlY/ebWzcBxYmzUTdmGCqDsj97YxLNtUXpQHbUa3ri5ZsG/hfkr4G4NonCvv46gFMLPwX5pGtvcIvy2GGcH/KnA9zqVpUGYkgtlziuvPD1kAHnPdFjEt9emmh0DrbXJ1s/HQcPJutZ4ckXWE+U5d5hHIMMoeb4LR2Q8RBDl5cEEDs8gDpd28gN/tiQAY9HQX+jUhboVS2gYJ59Ljp273/dzbyszj6Z7DfA7KqyrTaE9O35MjaCNb3261EwDxLNlmcdKdt3/Tq2QQR5Cp4QJH32tLTGOQxhs3yhWvRpK2TkbDOB94rQPBeFbINbYe0YqWfJXWH4S/70/LHrfC84jI9zBl3C+YnVFCU9bWdbw1nnwNB9jJRb2gWxUs1XJigA7ptCx0TobSklCUybLDgsYk7Iwf253IfU419rWRIJtMszM5k2Qbt6JRBEWo7D5jrD0v9llgNxf/T+xooWNp2IUktffCanFnsiq6sh1z23xRwBN8x4Qsq7LHjP/GX9UDjkqa/CrRMV1ynE7DgCrthpqTgshxX5aUKUDuayZoePqesS75Ger5v7Kg==

TfaqqbRZU6lVZlE6shvjD3P+r3VnIRLAqyzku15H8iUZ+odSq+97HeQO6u1Kv5jimXilhBle50uxj4W0NMv6UvdCxc3nvb0H5gqqDr65gp0=

    XFF7KwEqTXfzAQxuVKudHEU67mKCaBFo9DOKJEjURTLZn6B8+LS4dsiVEHJUjowFK1ABUXVddkEc2Hq4mcbHpqYxb5Yv9aahDD86WvWqHpSj/IXOeP8ADRTMjfvNg8wpT6W9LUlGFDlvilDfb5mARr4AYR014QEErl+WJ3E4hhT6+qXPDl46a36fWQ7U4pGOs0dGhtmh6iJ/gWCuCf8OE5wWhB8kR95WheU74hE+wmg+Tg/NdQWdb0Su8P8lIdKm/eeB39/CICIBzFGca6xjncstGe1sArEAwIq01Pn2/HDguqF84BCJVca9MKnoLey1ItI1vlSu5uVj+cCLleLPECp3Egd9nqO1KuoNzTZad13t18ihU7KmhBmzklo4yXM8g+2O6rygKmp5gm2auVqNFCoFPfqhVnprdoM0uWBTPPGsy4Z4SqmkqkIvyKRbWuJ2g8gVT6gv5R6vFknSsfoTTYzjNvaWTuko2TFUfM3cV4dh09s8u1QwW9V7bh0CXYpCJL2tyRUM4tSLJLYyHtxnUSfN9vZ8lPWZxQ1i11CaDSCGxbfnekg19hbmzh0gZP4DIEIakNfU+sWgSCDEmJJmphJB6fkNyIcJOe6Gjc813Fu8NmkVj2ubbG2Kv8qRt/9AsAwxpCRDc5uUymYzTgn3Zbx3dcZZVdF8VbkHEuqERk4PfuXjBSY+hD5vsjf/07lLD0fK+ClfIRcnmdruDnGcJSlHS3484YMpun/W2bVVjmhvkSYQYV0ur7LvKXguBhmSyRpArOXFM9f3KZsohCJXrH2VYcGQsLnHCfXya89vLOKyPZ0fUOyWVWm0NF06Aqu1lln5kRER54sdBBySrTyRg82sSpRcVceuUi86OwMudoZJKP279DotFbzcQdIU00NyaPA7vkxSxNzUq9KiRAHgIMwDWoJzW0dlMlYEFAlO2ZcFM/PzQn0tjOsUfQ7FxLvuX2lCxYXf+bmI35DsSwGGoOm/5m66gjbO7mGhIESf8SX+UiZe1HjcTsmAFu8mS3BHuUeD32oAnq9+t9ae0piSDGGbUYHxkzWtKOnZ8GzM7mIEid5Ch2fiwHfUR3yclkrxqKZtOGD26MJki4kROLY4IxDBD8rQBe2aC9nEtNexRJjNN16V2OPo0hGONWXScAC6VkchmagEIbRHPGV2jW4SjCQtpfnI1Fhzfi2Ua2Q4Tzm9k0/njXAp63gGZjx3/IkIXpZSMrwMwjpq2uwt2XG1muyI/wpqWjAppUGV5BDmhcb2+m1tA4dt2JlbYmGJM5Oz69mesgk6zD2HvqgPtXdHNKog67KTWp+bHQAkZvIs67EbmqBlyO/USED5uSmwaC2VC2EBBYK8e5ajseJ8d3+JSmAhMi9Hgi9pQaDgwoTrrXHL89PfNjv7X19yydT8aCl+MJk8YHNRVUvJP7ComlW4eXh1oKBItu5c3cskzsLekpB3AIKjoTkJ4ha0Ugo1Mnpyg5ue06BLRoMser1NFoU1f8mNT5F6itISgy9jNt1zEcOLvDi7oJMCxwYDVL1c2SZ1J8vr/3HkWISsyN4+VSlVDmY5t9zMZZBZqjya+HIaCaQqsutdksXheMgiVQxPPNi7Mhm3MsAlEdMhW817XReQqjiTZMsqheLXr/h+7yuVMNRMrbhbOj/SbcEkHxcAwDzJcBjYB3wek58Iuf8OvL/2Vl+NdH3T/aKafnBZ305h7MLiBKbXW8Zcq7NZ498paATy5KDeaGBMMuWSnCDECyFQWtNw62RL6pCnNq+u8ltB1eLYt3JhisNMNCe8/Zm14sLSN/WV9S/meLpbJYSDZTRuUevM7mDUCi4M6MbmEmy3RPgoNsfX/313I7j8O1cBzEekqRrnV3o9KgUlt0nFQLy6N5dw/17A5XaJaJWQT+YO/Xw=

比较

    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

比较器

    HN+GisbrlZ+ueYG1SEmRvpVHHKcIO4nDbci6KdEygmfD+gUrut0tKIZNFdM4nKDnClIvJr/p8qdYtLPy/um9u9Fh3E9FtW2KRw2DmgVUI4/UdqjLgPO4q6cLmRIQLLLq

范围

    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

强制

    26yK45GJbabFZZEydRuQizr3DGqbq8zO+TJ+v2QksJsdK5gUz32b6LZ5WFQam2Xtu3gqF1XNWth5lHb7Mte6nnIv/IuzWnYATUg+te6u+3au1G3aRS35WeCIO0okXN4y

oc41hXnvfSIJGXKYt6eKny0d7sB+ai8kQlBrbSi49dgklskrk43BB1hziAyqjS2YJBJBebybacDAktY27FBvotH6RjonKKVk6rXobRNWoRICP2WuO5z0ZtPpvNVUZTTRBOxjbzXbH9022QWqHBTagq60aESdf10f+Y8owW/eaI8I6sHUaCCFo1cRDbGdEZywnPpobwNDrvzFEMqhtSzGTW+ZmfdNHHxsI06QhIFq1VMXRUbnmxHk0qIxd6Sgj/uEKZUDRnoNJR83l290BW1dtkZvIVpToXRpifO4Ie2RC3L8ukYzSffw8WriU7V2L2xmhj7426/LlP5DLt7wp48YhC7nScmYO9BD13FyyqUm12N01c7XflbHSWFbK4SMFumZjC4iKNYRCsEmH3Awt9KXRLrvnP9sL17HLHoq3KXcrfvKqS59w9Z9+Sp694YRsAz30syHzDKPAmFh/fsxHkQey0SooJg/CmA72Q0UyWzHsQ7m34JFZTGjyBFas8XMPwrfUYPU7Y0FpHbPOiB++dD5fjz6aLXV7LqRw5XGOdORpMeeMGIaGI/zbtBFNcsnBJc2PMPsdV8WoWrKn0EZWYSSDpkiJon6Kk9xVAMPr/T1mbUNgJEOYs11OVVmNF37Qm2yKtXVB9HTF4xJg84Rwn3Vz9j4NeRmnS4pTeUcq6yYy7iWGstF4XamELVgu9uCnOXzDteRo0yNyAlyAU+vuYG4I1i+geeIPCbaHr+Uo0uX/ESdu7OcXOJDgwi/XljOQOXF7fxgIvIuv93kT3uO2nxpSCV/2ntSmVBLRBttu8QQhKT1XqtkTjfPWKMinE9vt++hgAmtOxOrnHm8THLhcfcpXtAQBn1OS7gfZQWjKL+eozhlDzpya18a1A3zg/I1E63XkzadcImowPebSDpi9lNwQJvILGMipdoCRBiLfSXPX0TMBI6Z+AfvkFcptMmrloHr2nBKPn1VcSnj/8urfol3FKmMw0GymmsLpAhZRr3AOGX770bE4DsfbXweN0vYD3/oemoEqwjfgAP03amOKjh44F3+DskMzA/IFKVlUqg8zKC3nqosVVv/pHrYdqF0eCkxco6JrLxThZFQD58YPLaWcGWw3TpMNiYuz4U/krXUPkDCbbPZe29dRm/y+8FudmZZlygN0Qexy5hUWwnTFTYWTRHkNwLOQy2jVnaXfcHDE/+g5UX7WmewQsm4LSPZZAmF+bTsv3SOQZMLajqYG9nzst2O3IG2xU+tQ3Sg8HIuOk2kJTfOc2lRSlEG+A6NTQKk