├── .gitignore ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── public ├── index.css ├── index.html └── index.js └── src ├── fontHrefs.json ├── fonts.js ├── index.js ├── temp └── placeholder.txt └── zips └── placeholder.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 106 | 107 | # dependencies 108 | /node_modules 109 | /.pnp 110 | .pnp.js 111 | 112 | # testing 113 | /coverage 114 | 115 | # production 116 | /build 117 | 118 | # misc 119 | .DS_Store 120 | .env.local 121 | .env.development.local 122 | .env.test.local 123 | .env.production.local 124 | 125 | npm-debug.log* 126 | yarn-debug.log* 127 | yarn-error.log* 128 | 129 | # trash 130 | /trash -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 max 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Adobe Font Scraper 2 | > Adobe Font Download Utility
3 | Downloads .ttf font files from any Adobe font link. 4 | 5 | ~~Demo: https://adobe-font-scraper.herokuapp.com/~~ 6 | 7 | ~~Hosted on Heroku free tier so it might take a hot minute to spin up server and load.~~ 8 | 9 | GONE. No LINK. GOT DMCAd 10 | 11 | ## How To Run 12 | ```sh 13 | # install dependencies 14 | $ npm install 15 | 16 | # launch server 17 | $ npm start 18 | ``` 19 | 20 | ## How To Scrape All Fonts 21 | 22 | 1. Go to `src/fonts.js`. 23 | 2. Uncomment line 172 and run `node src/fonts.js`. This will create a JSON file which holds all the links. 24 | 3. Comment that line. 25 | 4. Uncomment the block of code below 172 and run `node src/fonts.js`. 26 | 5. In the event that the script breaks, just run it again, it will check against already downloaded files. 27 | 6. Profit. 28 | 29 | ## Dependencies / Environment 30 | 31 | - NodeJS (v14.2.0) 32 | - Express - server 33 | - Puppeteer - scraping 34 | - wawoff2 - decoding WOFF2 files 35 | - opentype.js - getting font details (font family) 36 | 37 | 38 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "adobe-font-scraper", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/node": { 8 | "version": "14.0.27", 9 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", 10 | "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==", 11 | "optional": true 12 | }, 13 | "@types/yauzl": { 14 | "version": "2.9.1", 15 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", 16 | "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", 17 | "optional": true, 18 | "requires": { 19 | "@types/node": "*" 20 | } 21 | }, 22 | "accepts": { 23 | "version": "1.3.7", 24 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 25 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 26 | "requires": { 27 | "mime-types": "~2.1.24", 28 | "negotiator": "0.6.2" 29 | } 30 | }, 31 | "agent-base": { 32 | "version": "5.1.1", 33 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", 34 | "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" 35 | }, 36 | "ajv": { 37 | "version": "6.12.3", 38 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", 39 | "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", 40 | "requires": { 41 | "fast-deep-equal": "^3.1.1", 42 | "fast-json-stable-stringify": "^2.0.0", 43 | "json-schema-traverse": "^0.4.1", 44 | "uri-js": "^4.2.2" 45 | } 46 | }, 47 | "archiver": { 48 | "version": "3.1.1", 49 | "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", 50 | "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", 51 | "requires": { 52 | "archiver-utils": "^2.1.0", 53 | "async": "^2.6.3", 54 | "buffer-crc32": "^0.2.1", 55 | "glob": "^7.1.4", 56 | "readable-stream": "^3.4.0", 57 | "tar-stream": "^2.1.0", 58 | "zip-stream": "^2.1.2" 59 | } 60 | }, 61 | "archiver-utils": { 62 | "version": "2.1.0", 63 | "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", 64 | "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", 65 | "requires": { 66 | "glob": "^7.1.4", 67 | "graceful-fs": "^4.2.0", 68 | "lazystream": "^1.0.0", 69 | "lodash.defaults": "^4.2.0", 70 | "lodash.difference": "^4.5.0", 71 | "lodash.flatten": "^4.4.0", 72 | "lodash.isplainobject": "^4.0.6", 73 | "lodash.union": "^4.6.0", 74 | "normalize-path": "^3.0.0", 75 | "readable-stream": "^2.0.0" 76 | }, 77 | "dependencies": { 78 | "readable-stream": { 79 | "version": "2.3.7", 80 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 81 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 82 | "requires": { 83 | "core-util-is": "~1.0.0", 84 | "inherits": "~2.0.3", 85 | "isarray": "~1.0.0", 86 | "process-nextick-args": "~2.0.0", 87 | "safe-buffer": "~5.1.1", 88 | "string_decoder": "~1.1.1", 89 | "util-deprecate": "~1.0.1" 90 | } 91 | }, 92 | "safe-buffer": { 93 | "version": "5.1.2", 94 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 95 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 96 | }, 97 | "string_decoder": { 98 | "version": "1.1.1", 99 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 100 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 101 | "requires": { 102 | "safe-buffer": "~5.1.0" 103 | } 104 | } 105 | } 106 | }, 107 | "argparse": { 108 | "version": "1.0.10", 109 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 110 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 111 | "requires": { 112 | "sprintf-js": "~1.0.2" 113 | } 114 | }, 115 | "array-flatten": { 116 | "version": "1.1.1", 117 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 118 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 119 | }, 120 | "asn1": { 121 | "version": "0.2.4", 122 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 123 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 124 | "requires": { 125 | "safer-buffer": "~2.1.0" 126 | } 127 | }, 128 | "assert-plus": { 129 | "version": "1.0.0", 130 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 131 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 132 | }, 133 | "async": { 134 | "version": "2.6.3", 135 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 136 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 137 | "requires": { 138 | "lodash": "^4.17.14" 139 | } 140 | }, 141 | "asynckit": { 142 | "version": "0.4.0", 143 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 144 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 145 | }, 146 | "aws-sign2": { 147 | "version": "0.7.0", 148 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 149 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 150 | }, 151 | "aws4": { 152 | "version": "1.10.0", 153 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", 154 | "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" 155 | }, 156 | "balanced-match": { 157 | "version": "1.0.0", 158 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 159 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 160 | }, 161 | "base64-js": { 162 | "version": "1.3.1", 163 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 164 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" 165 | }, 166 | "bcrypt-pbkdf": { 167 | "version": "1.0.2", 168 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 169 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 170 | "requires": { 171 | "tweetnacl": "^0.14.3" 172 | } 173 | }, 174 | "bl": { 175 | "version": "4.0.2", 176 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", 177 | "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", 178 | "requires": { 179 | "buffer": "^5.5.0", 180 | "inherits": "^2.0.4", 181 | "readable-stream": "^3.4.0" 182 | }, 183 | "dependencies": { 184 | "inherits": { 185 | "version": "2.0.4", 186 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 187 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 188 | } 189 | } 190 | }, 191 | "body-parser": { 192 | "version": "1.19.0", 193 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 194 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 195 | "requires": { 196 | "bytes": "3.1.0", 197 | "content-type": "~1.0.4", 198 | "debug": "2.6.9", 199 | "depd": "~1.1.2", 200 | "http-errors": "1.7.2", 201 | "iconv-lite": "0.4.24", 202 | "on-finished": "~2.3.0", 203 | "qs": "6.7.0", 204 | "raw-body": "2.4.0", 205 | "type-is": "~1.6.17" 206 | }, 207 | "dependencies": { 208 | "debug": { 209 | "version": "2.6.9", 210 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 211 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 212 | "requires": { 213 | "ms": "2.0.0" 214 | } 215 | }, 216 | "ms": { 217 | "version": "2.0.0", 218 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 219 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 220 | }, 221 | "qs": { 222 | "version": "6.7.0", 223 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 224 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 225 | } 226 | } 227 | }, 228 | "brace-expansion": { 229 | "version": "1.1.11", 230 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 231 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 232 | "requires": { 233 | "balanced-match": "^1.0.0", 234 | "concat-map": "0.0.1" 235 | } 236 | }, 237 | "buffer": { 238 | "version": "5.6.0", 239 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", 240 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", 241 | "requires": { 242 | "base64-js": "^1.0.2", 243 | "ieee754": "^1.1.4" 244 | } 245 | }, 246 | "buffer-crc32": { 247 | "version": "0.2.13", 248 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 249 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" 250 | }, 251 | "bytes": { 252 | "version": "3.1.0", 253 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 254 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 255 | }, 256 | "caseless": { 257 | "version": "0.12.0", 258 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 259 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 260 | }, 261 | "chownr": { 262 | "version": "1.1.4", 263 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 264 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 265 | }, 266 | "cluster-key-slot": { 267 | "version": "1.1.0", 268 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", 269 | "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" 270 | }, 271 | "combined-stream": { 272 | "version": "1.0.8", 273 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 274 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 275 | "requires": { 276 | "delayed-stream": "~1.0.0" 277 | } 278 | }, 279 | "compress-commons": { 280 | "version": "2.1.1", 281 | "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", 282 | "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", 283 | "requires": { 284 | "buffer-crc32": "^0.2.13", 285 | "crc32-stream": "^3.0.1", 286 | "normalize-path": "^3.0.0", 287 | "readable-stream": "^2.3.6" 288 | }, 289 | "dependencies": { 290 | "readable-stream": { 291 | "version": "2.3.7", 292 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 293 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 294 | "requires": { 295 | "core-util-is": "~1.0.0", 296 | "inherits": "~2.0.3", 297 | "isarray": "~1.0.0", 298 | "process-nextick-args": "~2.0.0", 299 | "safe-buffer": "~5.1.1", 300 | "string_decoder": "~1.1.1", 301 | "util-deprecate": "~1.0.1" 302 | } 303 | }, 304 | "safe-buffer": { 305 | "version": "5.1.2", 306 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 307 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 308 | }, 309 | "string_decoder": { 310 | "version": "1.1.1", 311 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 312 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 313 | "requires": { 314 | "safe-buffer": "~5.1.0" 315 | } 316 | } 317 | } 318 | }, 319 | "concat-map": { 320 | "version": "0.0.1", 321 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 322 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 323 | }, 324 | "content-disposition": { 325 | "version": "0.5.3", 326 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 327 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 328 | "requires": { 329 | "safe-buffer": "5.1.2" 330 | }, 331 | "dependencies": { 332 | "safe-buffer": { 333 | "version": "5.1.2", 334 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 335 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 336 | } 337 | } 338 | }, 339 | "content-type": { 340 | "version": "1.0.4", 341 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 342 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 343 | }, 344 | "cookie": { 345 | "version": "0.4.0", 346 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 347 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 348 | }, 349 | "cookie-signature": { 350 | "version": "1.0.6", 351 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 352 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 353 | }, 354 | "core-util-is": { 355 | "version": "1.0.2", 356 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 357 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 358 | }, 359 | "crc": { 360 | "version": "3.8.0", 361 | "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", 362 | "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", 363 | "requires": { 364 | "buffer": "^5.1.0" 365 | } 366 | }, 367 | "crc32-stream": { 368 | "version": "3.0.1", 369 | "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", 370 | "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", 371 | "requires": { 372 | "crc": "^3.4.4", 373 | "readable-stream": "^3.4.0" 374 | } 375 | }, 376 | "dashdash": { 377 | "version": "1.14.1", 378 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 379 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 380 | "requires": { 381 | "assert-plus": "^1.0.0" 382 | } 383 | }, 384 | "debug": { 385 | "version": "4.1.1", 386 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 387 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 388 | "requires": { 389 | "ms": "^2.1.1" 390 | } 391 | }, 392 | "delayed-stream": { 393 | "version": "1.0.0", 394 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 395 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 396 | }, 397 | "denque": { 398 | "version": "1.4.1", 399 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", 400 | "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" 401 | }, 402 | "depd": { 403 | "version": "1.1.2", 404 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 405 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 406 | }, 407 | "destroy": { 408 | "version": "1.0.4", 409 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 410 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 411 | }, 412 | "devtools-protocol": { 413 | "version": "0.0.781568", 414 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.781568.tgz", 415 | "integrity": "sha512-9Uqnzy6m6zEStluH9iyJ3iHyaQziFnMnLeC8vK0eN6smiJmIx7+yB64d67C2lH/LZra+5cGscJAJsNXO+MdPMg==" 416 | }, 417 | "ecc-jsbn": { 418 | "version": "0.1.2", 419 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 420 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 421 | "requires": { 422 | "jsbn": "~0.1.0", 423 | "safer-buffer": "^2.1.0" 424 | } 425 | }, 426 | "ee-first": { 427 | "version": "1.1.1", 428 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 429 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 430 | }, 431 | "encodeurl": { 432 | "version": "1.0.2", 433 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 434 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 435 | }, 436 | "end-of-stream": { 437 | "version": "1.4.4", 438 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 439 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 440 | "requires": { 441 | "once": "^1.4.0" 442 | } 443 | }, 444 | "escape-html": { 445 | "version": "1.0.3", 446 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 447 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 448 | }, 449 | "etag": { 450 | "version": "1.8.1", 451 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 452 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 453 | }, 454 | "express": { 455 | "version": "4.17.1", 456 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 457 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 458 | "requires": { 459 | "accepts": "~1.3.7", 460 | "array-flatten": "1.1.1", 461 | "body-parser": "1.19.0", 462 | "content-disposition": "0.5.3", 463 | "content-type": "~1.0.4", 464 | "cookie": "0.4.0", 465 | "cookie-signature": "1.0.6", 466 | "debug": "2.6.9", 467 | "depd": "~1.1.2", 468 | "encodeurl": "~1.0.2", 469 | "escape-html": "~1.0.3", 470 | "etag": "~1.8.1", 471 | "finalhandler": "~1.1.2", 472 | "fresh": "0.5.2", 473 | "merge-descriptors": "1.0.1", 474 | "methods": "~1.1.2", 475 | "on-finished": "~2.3.0", 476 | "parseurl": "~1.3.3", 477 | "path-to-regexp": "0.1.7", 478 | "proxy-addr": "~2.0.5", 479 | "qs": "6.7.0", 480 | "range-parser": "~1.2.1", 481 | "safe-buffer": "5.1.2", 482 | "send": "0.17.1", 483 | "serve-static": "1.14.1", 484 | "setprototypeof": "1.1.1", 485 | "statuses": "~1.5.0", 486 | "type-is": "~1.6.18", 487 | "utils-merge": "1.0.1", 488 | "vary": "~1.1.2" 489 | }, 490 | "dependencies": { 491 | "debug": { 492 | "version": "2.6.9", 493 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 494 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 495 | "requires": { 496 | "ms": "2.0.0" 497 | } 498 | }, 499 | "ms": { 500 | "version": "2.0.0", 501 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 502 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 503 | }, 504 | "qs": { 505 | "version": "6.7.0", 506 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 507 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 508 | }, 509 | "safe-buffer": { 510 | "version": "5.1.2", 511 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 512 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 513 | } 514 | } 515 | }, 516 | "express-rate-limit": { 517 | "version": "5.1.3", 518 | "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.1.3.tgz", 519 | "integrity": "sha512-TINcxve5510pXj4n9/1AMupkj3iWxl3JuZaWhCdYDlZeoCPqweGZrxbrlqTCFb1CT5wli7s8e2SH/Qz2c9GorA==" 520 | }, 521 | "extend": { 522 | "version": "3.0.2", 523 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 524 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 525 | }, 526 | "extract-zip": { 527 | "version": "2.0.1", 528 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 529 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 530 | "requires": { 531 | "@types/yauzl": "^2.9.1", 532 | "debug": "^4.1.1", 533 | "get-stream": "^5.1.0", 534 | "yauzl": "^2.10.0" 535 | } 536 | }, 537 | "extsprintf": { 538 | "version": "1.3.0", 539 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 540 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 541 | }, 542 | "fast-deep-equal": { 543 | "version": "3.1.3", 544 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 545 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 546 | }, 547 | "fast-json-stable-stringify": { 548 | "version": "2.1.0", 549 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 550 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 551 | }, 552 | "fd-slicer": { 553 | "version": "1.1.0", 554 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 555 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 556 | "requires": { 557 | "pend": "~1.2.0" 558 | } 559 | }, 560 | "finalhandler": { 561 | "version": "1.1.2", 562 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 563 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 564 | "requires": { 565 | "debug": "2.6.9", 566 | "encodeurl": "~1.0.2", 567 | "escape-html": "~1.0.3", 568 | "on-finished": "~2.3.0", 569 | "parseurl": "~1.3.3", 570 | "statuses": "~1.5.0", 571 | "unpipe": "~1.0.0" 572 | }, 573 | "dependencies": { 574 | "debug": { 575 | "version": "2.6.9", 576 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 577 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 578 | "requires": { 579 | "ms": "2.0.0" 580 | } 581 | }, 582 | "ms": { 583 | "version": "2.0.0", 584 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 585 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 586 | } 587 | } 588 | }, 589 | "find-up": { 590 | "version": "4.1.0", 591 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 592 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 593 | "requires": { 594 | "locate-path": "^5.0.0", 595 | "path-exists": "^4.0.0" 596 | } 597 | }, 598 | "fonteditor-core": { 599 | "version": "2.1.1", 600 | "resolved": "https://registry.npmjs.org/fonteditor-core/-/fonteditor-core-2.1.1.tgz", 601 | "integrity": "sha512-ziEMesYo9PuptQWrzlPQGAqbaeMfkkdrlun09cpiOyJvLmU7uQcZJnuvXeKTO7mvNtEU83eDUFdXDBFx4/Oezw==", 602 | "requires": { 603 | "xmldom": "~0.1.19" 604 | } 605 | }, 606 | "forever-agent": { 607 | "version": "0.6.1", 608 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 609 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 610 | }, 611 | "form-data": { 612 | "version": "2.3.3", 613 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 614 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 615 | "requires": { 616 | "asynckit": "^0.4.0", 617 | "combined-stream": "^1.0.6", 618 | "mime-types": "^2.1.12" 619 | } 620 | }, 621 | "forwarded": { 622 | "version": "0.1.2", 623 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 624 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 625 | }, 626 | "fresh": { 627 | "version": "0.5.2", 628 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 629 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 630 | }, 631 | "fs-constants": { 632 | "version": "1.0.0", 633 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 634 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 635 | }, 636 | "fs.realpath": { 637 | "version": "1.0.0", 638 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 639 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 640 | }, 641 | "get-stream": { 642 | "version": "5.1.0", 643 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", 644 | "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", 645 | "requires": { 646 | "pump": "^3.0.0" 647 | } 648 | }, 649 | "get-urls": { 650 | "version": "9.2.1", 651 | "resolved": "https://registry.npmjs.org/get-urls/-/get-urls-9.2.1.tgz", 652 | "integrity": "sha512-/3TvzO0Na4v5mvTs+6mOGTOz3woxuEcB3TiGzKry6VtKBrqSOm6D33vjYUxU2WD2mPmBPe73oE5d6zx119+DdA==", 653 | "requires": { 654 | "normalize-url": "^4.3.0", 655 | "url-regex": "^5.0.0" 656 | } 657 | }, 658 | "getpass": { 659 | "version": "0.1.7", 660 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 661 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 662 | "requires": { 663 | "assert-plus": "^1.0.0" 664 | } 665 | }, 666 | "glob": { 667 | "version": "7.1.6", 668 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 669 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 670 | "requires": { 671 | "fs.realpath": "^1.0.0", 672 | "inflight": "^1.0.4", 673 | "inherits": "2", 674 | "minimatch": "^3.0.4", 675 | "once": "^1.3.0", 676 | "path-is-absolute": "^1.0.0" 677 | } 678 | }, 679 | "graceful-fs": { 680 | "version": "4.2.4", 681 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 682 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 683 | }, 684 | "har-schema": { 685 | "version": "2.0.0", 686 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 687 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 688 | }, 689 | "har-validator": { 690 | "version": "5.1.5", 691 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 692 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 693 | "requires": { 694 | "ajv": "^6.12.3", 695 | "har-schema": "^2.0.0" 696 | } 697 | }, 698 | "helmet": { 699 | "version": "4.0.0", 700 | "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.0.0.tgz", 701 | "integrity": "sha512-HyoRKKHhWhO6+EBfgRLkuZR4/+NXc1nJB7x0bWwW89i9eoPciK0qUqyZNOA/zowpgrW9C4+J5toqMkZrpBOlkg==" 702 | }, 703 | "http-errors": { 704 | "version": "1.7.2", 705 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 706 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 707 | "requires": { 708 | "depd": "~1.1.2", 709 | "inherits": "2.0.3", 710 | "setprototypeof": "1.1.1", 711 | "statuses": ">= 1.5.0 < 2", 712 | "toidentifier": "1.0.0" 713 | } 714 | }, 715 | "http-signature": { 716 | "version": "1.2.0", 717 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 718 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 719 | "requires": { 720 | "assert-plus": "^1.0.0", 721 | "jsprim": "^1.2.2", 722 | "sshpk": "^1.7.0" 723 | } 724 | }, 725 | "https-proxy-agent": { 726 | "version": "4.0.0", 727 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", 728 | "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", 729 | "requires": { 730 | "agent-base": "5", 731 | "debug": "4" 732 | } 733 | }, 734 | "iconv-lite": { 735 | "version": "0.4.24", 736 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 737 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 738 | "requires": { 739 | "safer-buffer": ">= 2.1.2 < 3" 740 | } 741 | }, 742 | "ieee754": { 743 | "version": "1.1.13", 744 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 745 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" 746 | }, 747 | "inflight": { 748 | "version": "1.0.6", 749 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 750 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 751 | "requires": { 752 | "once": "^1.3.0", 753 | "wrappy": "1" 754 | } 755 | }, 756 | "inherits": { 757 | "version": "2.0.3", 758 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 759 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 760 | }, 761 | "ioredis": { 762 | "version": "4.17.3", 763 | "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.17.3.tgz", 764 | "integrity": "sha512-iRvq4BOYzNFkDnSyhx7cmJNOi1x/HWYe+A4VXHBu4qpwJaGT1Mp+D2bVGJntH9K/Z/GeOM/Nprb8gB3bmitz1Q==", 765 | "requires": { 766 | "cluster-key-slot": "^1.1.0", 767 | "debug": "^4.1.1", 768 | "denque": "^1.1.0", 769 | "lodash.defaults": "^4.2.0", 770 | "lodash.flatten": "^4.4.0", 771 | "redis-commands": "1.5.0", 772 | "redis-errors": "^1.2.0", 773 | "redis-parser": "^3.0.0", 774 | "standard-as-callback": "^2.0.1" 775 | } 776 | }, 777 | "ip-regex": { 778 | "version": "4.1.0", 779 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz", 780 | "integrity": "sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA==" 781 | }, 782 | "ipaddr.js": { 783 | "version": "1.9.1", 784 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 785 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 786 | }, 787 | "is-typedarray": { 788 | "version": "1.0.0", 789 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 790 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 791 | }, 792 | "isarray": { 793 | "version": "1.0.0", 794 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 795 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 796 | }, 797 | "isstream": { 798 | "version": "0.1.2", 799 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 800 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 801 | }, 802 | "jsbn": { 803 | "version": "0.1.1", 804 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 805 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 806 | }, 807 | "json-schema": { 808 | "version": "0.2.3", 809 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 810 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 811 | }, 812 | "json-schema-traverse": { 813 | "version": "0.4.1", 814 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 815 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 816 | }, 817 | "json-stringify-safe": { 818 | "version": "5.0.1", 819 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 820 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 821 | }, 822 | "jsprim": { 823 | "version": "1.4.1", 824 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 825 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 826 | "requires": { 827 | "assert-plus": "1.0.0", 828 | "extsprintf": "1.3.0", 829 | "json-schema": "0.2.3", 830 | "verror": "1.10.0" 831 | } 832 | }, 833 | "lazystream": { 834 | "version": "1.0.0", 835 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", 836 | "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", 837 | "requires": { 838 | "readable-stream": "^2.0.5" 839 | }, 840 | "dependencies": { 841 | "readable-stream": { 842 | "version": "2.3.7", 843 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 844 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 845 | "requires": { 846 | "core-util-is": "~1.0.0", 847 | "inherits": "~2.0.3", 848 | "isarray": "~1.0.0", 849 | "process-nextick-args": "~2.0.0", 850 | "safe-buffer": "~5.1.1", 851 | "string_decoder": "~1.1.1", 852 | "util-deprecate": "~1.0.1" 853 | } 854 | }, 855 | "safe-buffer": { 856 | "version": "5.1.2", 857 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 858 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 859 | }, 860 | "string_decoder": { 861 | "version": "1.1.1", 862 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 863 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 864 | "requires": { 865 | "safe-buffer": "~5.1.0" 866 | } 867 | } 868 | } 869 | }, 870 | "locate-path": { 871 | "version": "5.0.0", 872 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 873 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 874 | "requires": { 875 | "p-locate": "^4.1.0" 876 | } 877 | }, 878 | "lodash": { 879 | "version": "4.17.19", 880 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", 881 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" 882 | }, 883 | "lodash.defaults": { 884 | "version": "4.2.0", 885 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", 886 | "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" 887 | }, 888 | "lodash.difference": { 889 | "version": "4.5.0", 890 | "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", 891 | "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" 892 | }, 893 | "lodash.flatten": { 894 | "version": "4.4.0", 895 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 896 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" 897 | }, 898 | "lodash.isplainobject": { 899 | "version": "4.0.6", 900 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 901 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 902 | }, 903 | "lodash.union": { 904 | "version": "4.6.0", 905 | "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", 906 | "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" 907 | }, 908 | "media-typer": { 909 | "version": "0.3.0", 910 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 911 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 912 | }, 913 | "merge-descriptors": { 914 | "version": "1.0.1", 915 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 916 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 917 | }, 918 | "methods": { 919 | "version": "1.1.2", 920 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 921 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 922 | }, 923 | "mime": { 924 | "version": "2.4.6", 925 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", 926 | "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" 927 | }, 928 | "mime-db": { 929 | "version": "1.44.0", 930 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 931 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 932 | }, 933 | "mime-types": { 934 | "version": "2.1.27", 935 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 936 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 937 | "requires": { 938 | "mime-db": "1.44.0" 939 | } 940 | }, 941 | "minimatch": { 942 | "version": "3.0.4", 943 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 944 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 945 | "requires": { 946 | "brace-expansion": "^1.1.7" 947 | } 948 | }, 949 | "mkdirp-classic": { 950 | "version": "0.5.3", 951 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 952 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 953 | }, 954 | "ms": { 955 | "version": "2.1.2", 956 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 957 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 958 | }, 959 | "negotiator": { 960 | "version": "0.6.2", 961 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 962 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 963 | }, 964 | "normalize-path": { 965 | "version": "3.0.0", 966 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 967 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 968 | }, 969 | "normalize-url": { 970 | "version": "4.5.0", 971 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", 972 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" 973 | }, 974 | "oauth-sign": { 975 | "version": "0.9.0", 976 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 977 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 978 | }, 979 | "on-finished": { 980 | "version": "2.3.0", 981 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 982 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 983 | "requires": { 984 | "ee-first": "1.1.1" 985 | } 986 | }, 987 | "once": { 988 | "version": "1.4.0", 989 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 990 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 991 | "requires": { 992 | "wrappy": "1" 993 | } 994 | }, 995 | "opentype.js": { 996 | "version": "1.3.3", 997 | "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.3.tgz", 998 | "integrity": "sha512-/qIY/+WnKGlPIIPhbeNjynfD2PO15G9lA/xqlX2bDH+4lc3Xz5GCQ68mqxj3DdUv6AJqCeaPvuAoH8mVL0zcuA==", 999 | "requires": { 1000 | "string.prototype.codepointat": "^0.2.1", 1001 | "tiny-inflate": "^1.0.3" 1002 | } 1003 | }, 1004 | "p-limit": { 1005 | "version": "2.3.0", 1006 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1007 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1008 | "requires": { 1009 | "p-try": "^2.0.0" 1010 | } 1011 | }, 1012 | "p-locate": { 1013 | "version": "4.1.0", 1014 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1015 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1016 | "requires": { 1017 | "p-limit": "^2.2.0" 1018 | } 1019 | }, 1020 | "p-try": { 1021 | "version": "2.2.0", 1022 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1023 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 1024 | }, 1025 | "parseurl": { 1026 | "version": "1.3.3", 1027 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1028 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1029 | }, 1030 | "path": { 1031 | "version": "0.12.7", 1032 | "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", 1033 | "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", 1034 | "requires": { 1035 | "process": "^0.11.1", 1036 | "util": "^0.10.3" 1037 | } 1038 | }, 1039 | "path-exists": { 1040 | "version": "4.0.0", 1041 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1042 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 1043 | }, 1044 | "path-is-absolute": { 1045 | "version": "1.0.1", 1046 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1047 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1048 | }, 1049 | "path-to-regexp": { 1050 | "version": "0.1.7", 1051 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1052 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1053 | }, 1054 | "pend": { 1055 | "version": "1.2.0", 1056 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1057 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 1058 | }, 1059 | "performance-now": { 1060 | "version": "2.1.0", 1061 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1062 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 1063 | }, 1064 | "pkg-dir": { 1065 | "version": "4.2.0", 1066 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 1067 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 1068 | "requires": { 1069 | "find-up": "^4.0.0" 1070 | } 1071 | }, 1072 | "process": { 1073 | "version": "0.11.10", 1074 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1075 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 1076 | }, 1077 | "process-nextick-args": { 1078 | "version": "2.0.1", 1079 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1080 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1081 | }, 1082 | "progress": { 1083 | "version": "2.0.3", 1084 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1085 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1086 | }, 1087 | "proxy-addr": { 1088 | "version": "2.0.6", 1089 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 1090 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 1091 | "requires": { 1092 | "forwarded": "~0.1.2", 1093 | "ipaddr.js": "1.9.1" 1094 | } 1095 | }, 1096 | "proxy-from-env": { 1097 | "version": "1.1.0", 1098 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1099 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1100 | }, 1101 | "psl": { 1102 | "version": "1.8.0", 1103 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 1104 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 1105 | }, 1106 | "pump": { 1107 | "version": "3.0.0", 1108 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1109 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1110 | "requires": { 1111 | "end-of-stream": "^1.1.0", 1112 | "once": "^1.3.1" 1113 | } 1114 | }, 1115 | "punycode": { 1116 | "version": "2.1.1", 1117 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1118 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1119 | }, 1120 | "puppeteer": { 1121 | "version": "5.2.1", 1122 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.2.1.tgz", 1123 | "integrity": "sha512-PZoZG7u+T6N1GFWBQmGVG162Ak5MAy8nYSVpeeQrwJK2oYUlDWpHEJPcd/zopyuEMTv7DiztS1blgny1txR2qw==", 1124 | "requires": { 1125 | "debug": "^4.1.0", 1126 | "devtools-protocol": "0.0.781568", 1127 | "extract-zip": "^2.0.0", 1128 | "https-proxy-agent": "^4.0.0", 1129 | "mime": "^2.0.3", 1130 | "pkg-dir": "^4.2.0", 1131 | "progress": "^2.0.1", 1132 | "proxy-from-env": "^1.0.0", 1133 | "rimraf": "^3.0.2", 1134 | "tar-fs": "^2.0.0", 1135 | "unbzip2-stream": "^1.3.3", 1136 | "ws": "^7.2.3" 1137 | } 1138 | }, 1139 | "qs": { 1140 | "version": "6.5.2", 1141 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 1142 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 1143 | }, 1144 | "range-parser": { 1145 | "version": "1.2.1", 1146 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1147 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1148 | }, 1149 | "raw-body": { 1150 | "version": "2.4.0", 1151 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 1152 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 1153 | "requires": { 1154 | "bytes": "3.1.0", 1155 | "http-errors": "1.7.2", 1156 | "iconv-lite": "0.4.24", 1157 | "unpipe": "1.0.0" 1158 | } 1159 | }, 1160 | "readable-stream": { 1161 | "version": "3.6.0", 1162 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1163 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1164 | "requires": { 1165 | "inherits": "^2.0.3", 1166 | "string_decoder": "^1.1.1", 1167 | "util-deprecate": "^1.0.1" 1168 | } 1169 | }, 1170 | "redis-commands": { 1171 | "version": "1.5.0", 1172 | "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz", 1173 | "integrity": "sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==" 1174 | }, 1175 | "redis-errors": { 1176 | "version": "1.2.0", 1177 | "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", 1178 | "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=" 1179 | }, 1180 | "redis-parser": { 1181 | "version": "3.0.0", 1182 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", 1183 | "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", 1184 | "requires": { 1185 | "redis-errors": "^1.0.0" 1186 | } 1187 | }, 1188 | "request": { 1189 | "version": "2.88.2", 1190 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1191 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 1192 | "requires": { 1193 | "aws-sign2": "~0.7.0", 1194 | "aws4": "^1.8.0", 1195 | "caseless": "~0.12.0", 1196 | "combined-stream": "~1.0.6", 1197 | "extend": "~3.0.2", 1198 | "forever-agent": "~0.6.1", 1199 | "form-data": "~2.3.2", 1200 | "har-validator": "~5.1.3", 1201 | "http-signature": "~1.2.0", 1202 | "is-typedarray": "~1.0.0", 1203 | "isstream": "~0.1.2", 1204 | "json-stringify-safe": "~5.0.1", 1205 | "mime-types": "~2.1.19", 1206 | "oauth-sign": "~0.9.0", 1207 | "performance-now": "^2.1.0", 1208 | "qs": "~6.5.2", 1209 | "safe-buffer": "^5.1.2", 1210 | "tough-cookie": "~2.5.0", 1211 | "tunnel-agent": "^0.6.0", 1212 | "uuid": "^3.3.2" 1213 | } 1214 | }, 1215 | "rimraf": { 1216 | "version": "3.0.2", 1217 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1218 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1219 | "requires": { 1220 | "glob": "^7.1.3" 1221 | } 1222 | }, 1223 | "safe-buffer": { 1224 | "version": "5.2.1", 1225 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1226 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1227 | }, 1228 | "safer-buffer": { 1229 | "version": "2.1.2", 1230 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1231 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1232 | }, 1233 | "send": { 1234 | "version": "0.17.1", 1235 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1236 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1237 | "requires": { 1238 | "debug": "2.6.9", 1239 | "depd": "~1.1.2", 1240 | "destroy": "~1.0.4", 1241 | "encodeurl": "~1.0.2", 1242 | "escape-html": "~1.0.3", 1243 | "etag": "~1.8.1", 1244 | "fresh": "0.5.2", 1245 | "http-errors": "~1.7.2", 1246 | "mime": "1.6.0", 1247 | "ms": "2.1.1", 1248 | "on-finished": "~2.3.0", 1249 | "range-parser": "~1.2.1", 1250 | "statuses": "~1.5.0" 1251 | }, 1252 | "dependencies": { 1253 | "debug": { 1254 | "version": "2.6.9", 1255 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1256 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1257 | "requires": { 1258 | "ms": "2.0.0" 1259 | }, 1260 | "dependencies": { 1261 | "ms": { 1262 | "version": "2.0.0", 1263 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1264 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1265 | } 1266 | } 1267 | }, 1268 | "mime": { 1269 | "version": "1.6.0", 1270 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1271 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1272 | }, 1273 | "ms": { 1274 | "version": "2.1.1", 1275 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1276 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 1277 | } 1278 | } 1279 | }, 1280 | "serve-static": { 1281 | "version": "1.14.1", 1282 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1283 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1284 | "requires": { 1285 | "encodeurl": "~1.0.2", 1286 | "escape-html": "~1.0.3", 1287 | "parseurl": "~1.3.3", 1288 | "send": "0.17.1" 1289 | } 1290 | }, 1291 | "setprototypeof": { 1292 | "version": "1.1.1", 1293 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1294 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1295 | }, 1296 | "sprintf-js": { 1297 | "version": "1.0.3", 1298 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1299 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 1300 | }, 1301 | "sshpk": { 1302 | "version": "1.16.1", 1303 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 1304 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 1305 | "requires": { 1306 | "asn1": "~0.2.3", 1307 | "assert-plus": "^1.0.0", 1308 | "bcrypt-pbkdf": "^1.0.0", 1309 | "dashdash": "^1.12.0", 1310 | "ecc-jsbn": "~0.1.1", 1311 | "getpass": "^0.1.1", 1312 | "jsbn": "~0.1.0", 1313 | "safer-buffer": "^2.0.2", 1314 | "tweetnacl": "~0.14.0" 1315 | } 1316 | }, 1317 | "standard-as-callback": { 1318 | "version": "2.0.1", 1319 | "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.0.1.tgz", 1320 | "integrity": "sha512-NQOxSeB8gOI5WjSaxjBgog2QFw55FV8TkS6Y07BiB3VJ8xNTvUYm0wl0s8ObgQ5NhdpnNfigMIKjgPESzgr4tg==" 1321 | }, 1322 | "statuses": { 1323 | "version": "1.5.0", 1324 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1325 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1326 | }, 1327 | "string.prototype.codepointat": { 1328 | "version": "0.2.1", 1329 | "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", 1330 | "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" 1331 | }, 1332 | "string_decoder": { 1333 | "version": "1.3.0", 1334 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1335 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1336 | "requires": { 1337 | "safe-buffer": "~5.2.0" 1338 | }, 1339 | "dependencies": { 1340 | "safe-buffer": { 1341 | "version": "5.2.1", 1342 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1343 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1344 | } 1345 | } 1346 | }, 1347 | "tar-fs": { 1348 | "version": "2.1.0", 1349 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz", 1350 | "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==", 1351 | "requires": { 1352 | "chownr": "^1.1.1", 1353 | "mkdirp-classic": "^0.5.2", 1354 | "pump": "^3.0.0", 1355 | "tar-stream": "^2.0.0" 1356 | } 1357 | }, 1358 | "tar-stream": { 1359 | "version": "2.1.3", 1360 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz", 1361 | "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==", 1362 | "requires": { 1363 | "bl": "^4.0.1", 1364 | "end-of-stream": "^1.4.1", 1365 | "fs-constants": "^1.0.0", 1366 | "inherits": "^2.0.3", 1367 | "readable-stream": "^3.1.1" 1368 | } 1369 | }, 1370 | "through": { 1371 | "version": "2.3.8", 1372 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1373 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1374 | }, 1375 | "tiny-inflate": { 1376 | "version": "1.0.3", 1377 | "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", 1378 | "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" 1379 | }, 1380 | "tlds": { 1381 | "version": "1.207.0", 1382 | "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.207.0.tgz", 1383 | "integrity": "sha512-k7d7Q1LqjtAvhtEOs3yN14EabsNO8ZCoY6RESSJDB9lst3bTx3as/m1UuAeCKzYxiyhR1qq72ZPhpSf+qlqiwg==" 1384 | }, 1385 | "toidentifier": { 1386 | "version": "1.0.0", 1387 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1388 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1389 | }, 1390 | "tough-cookie": { 1391 | "version": "2.5.0", 1392 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 1393 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 1394 | "requires": { 1395 | "psl": "^1.1.28", 1396 | "punycode": "^2.1.1" 1397 | } 1398 | }, 1399 | "tunnel-agent": { 1400 | "version": "0.6.0", 1401 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1402 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1403 | "requires": { 1404 | "safe-buffer": "^5.0.1" 1405 | } 1406 | }, 1407 | "tweetnacl": { 1408 | "version": "0.14.5", 1409 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1410 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 1411 | }, 1412 | "type-is": { 1413 | "version": "1.6.18", 1414 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1415 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1416 | "requires": { 1417 | "media-typer": "0.3.0", 1418 | "mime-types": "~2.1.24" 1419 | } 1420 | }, 1421 | "unbzip2-stream": { 1422 | "version": "1.4.3", 1423 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 1424 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 1425 | "requires": { 1426 | "buffer": "^5.2.1", 1427 | "through": "^2.3.8" 1428 | } 1429 | }, 1430 | "unpipe": { 1431 | "version": "1.0.0", 1432 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1433 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1434 | }, 1435 | "uri-js": { 1436 | "version": "4.2.2", 1437 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1438 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1439 | "requires": { 1440 | "punycode": "^2.1.0" 1441 | } 1442 | }, 1443 | "url-regex": { 1444 | "version": "5.0.0", 1445 | "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-5.0.0.tgz", 1446 | "integrity": "sha512-O08GjTiAFNsSlrUWfqF1jH0H1W3m35ZyadHrGv5krdnmPPoxP27oDTqux/579PtaroiSGm5yma6KT1mHFH6Y/g==", 1447 | "requires": { 1448 | "ip-regex": "^4.1.0", 1449 | "tlds": "^1.203.0" 1450 | } 1451 | }, 1452 | "util": { 1453 | "version": "0.10.4", 1454 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 1455 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 1456 | "requires": { 1457 | "inherits": "2.0.3" 1458 | } 1459 | }, 1460 | "util-deprecate": { 1461 | "version": "1.0.2", 1462 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1463 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1464 | }, 1465 | "utils-merge": { 1466 | "version": "1.0.1", 1467 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1468 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1469 | }, 1470 | "uuid": { 1471 | "version": "3.4.0", 1472 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1473 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 1474 | }, 1475 | "vary": { 1476 | "version": "1.1.2", 1477 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1478 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1479 | }, 1480 | "verror": { 1481 | "version": "1.10.0", 1482 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1483 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1484 | "requires": { 1485 | "assert-plus": "^1.0.0", 1486 | "core-util-is": "1.0.2", 1487 | "extsprintf": "^1.2.0" 1488 | } 1489 | }, 1490 | "wawoff2": { 1491 | "version": "1.0.2", 1492 | "resolved": "https://registry.npmjs.org/wawoff2/-/wawoff2-1.0.2.tgz", 1493 | "integrity": "sha512-qxuTwf5tAP/XojrRc6cmR0hGvqgD3XUxv2fzfzURKPDfE7AeHmtRuankVxdJ4DRdSKXaE5QlyJT49yBis2vb6Q==", 1494 | "requires": { 1495 | "argparse": "^1.0.6" 1496 | } 1497 | }, 1498 | "wrappy": { 1499 | "version": "1.0.2", 1500 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1501 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1502 | }, 1503 | "ws": { 1504 | "version": "7.3.1", 1505 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", 1506 | "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" 1507 | }, 1508 | "xmldom": { 1509 | "version": "0.1.31", 1510 | "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", 1511 | "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" 1512 | }, 1513 | "yauzl": { 1514 | "version": "2.10.0", 1515 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1516 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 1517 | "requires": { 1518 | "buffer-crc32": "~0.2.3", 1519 | "fd-slicer": "~1.1.0" 1520 | } 1521 | }, 1522 | "zip-a-folder": { 1523 | "version": "0.0.12", 1524 | "resolved": "https://registry.npmjs.org/zip-a-folder/-/zip-a-folder-0.0.12.tgz", 1525 | "integrity": "sha512-wZGiWgp3z2TocBlzx3S5tsLgPbT39qG2uIZmn2MhYLVjhKIr2nMhg7i4iPDL4W3XvMDaOEEVU5ZB0Y/Pt6BLvA==", 1526 | "requires": { 1527 | "archiver": "^3.1.1" 1528 | } 1529 | }, 1530 | "zip-stream": { 1531 | "version": "2.1.3", 1532 | "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", 1533 | "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", 1534 | "requires": { 1535 | "archiver-utils": "^2.1.0", 1536 | "compress-commons": "^2.1.1", 1537 | "readable-stream": "^3.4.0" 1538 | } 1539 | } 1540 | } 1541 | } 1542 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "adobe-font-scraper", 3 | "version": "1.0.0", 4 | "description": "adobe ttf font scraper", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node src/index.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/chiumax/adobe-font-scraper.git" 13 | }, 14 | "author": "max", 15 | "license": "MIT", 16 | "bugs": { 17 | "url": "https://github.com/chiumax/adobe-font-scraper/issues" 18 | }, 19 | "homepage": "https://github.com/chiumax/adobe-font-scraper#readme", 20 | "dependencies": { 21 | "express": "^4.17.1", 22 | "express-rate-limit": "^5.1.3", 23 | "get-urls": "^9.2.1", 24 | "helmet": "^4.0.0", 25 | "ioredis": "^4.17.3", 26 | "opentype.js": "^1.3.3", 27 | "path": "^0.12.7", 28 | "puppeteer": "^5.2.1", 29 | "request": "^2.88.2", 30 | "rimraf": "^3.0.2", 31 | "wawoff2": "^1.0.2", 32 | "zip-a-folder": "0.0.12" 33 | }, 34 | "engines": { 35 | "node": "14.2.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /public/index.css: -------------------------------------------------------------------------------- 1 | html { 2 | text-align: center; 3 | color: white; 4 | background-color: black; 5 | font-size: 105%; 6 | font-family: "PT Sans", sans-serif; 7 | } 8 | h1 { 9 | font-size: 300%; 10 | } 11 | .body { 12 | display: flex; 13 | flex-direction: column; 14 | justify-content: center; 15 | align-items: center; 16 | height: 100vh; 17 | overflow-x: hidden; 18 | } 19 | 20 | .form { 21 | margin-top: 50px; 22 | margin-bottom: 50px; 23 | } 24 | 25 | form { 26 | display: flex; 27 | flex-direction: column; 28 | align-items: center; 29 | width: 400px; 30 | } 31 | 32 | form > * { 33 | width: 450px; 34 | margin-top: 10px; 35 | } 36 | 37 | form > label { 38 | text-align: left; 39 | } 40 | 41 | footer { 42 | flex-direction: column; 43 | align-items: center; 44 | justify-content: center; 45 | } 46 | 47 | footer > p { 48 | text-align: center; 49 | margin-left: 100px; 50 | margin-right: 100px; 51 | } 52 | input { 53 | background-color: #000000; 54 | border-color: white; 55 | border-top-color: white; 56 | color: white; 57 | border-style: solid; 58 | border-radius: 4px; 59 | padding: 10px; 60 | max-width: 600px; 61 | /* outline: none; */ 62 | } 63 | /* .submit { 64 | box-sizing: border-box; 65 | width: 100px; 66 | padding-top: 10px; 67 | padding-bottom: 10px; 68 | } */ 69 | 70 | .submit:hover, 71 | .submit:focus { 72 | /* background-color: white; */ 73 | transform: scale(1.08); 74 | cursor: pointer; 75 | } 76 | 77 | .submit { 78 | display: inline-block; 79 | padding: 0.35em 1.2em; 80 | border: 0.1em solid #ffffff; 81 | margin: 20px 0.3em 0.3em 0; 82 | border-radius: 0.12em; 83 | box-sizing: border-box; 84 | text-decoration: none; 85 | font-family: "Roboto", sans-serif; 86 | font-weight: 300; 87 | color: #ffffff; 88 | text-align: center; 89 | transition: all 0.2s; 90 | width: 200px; 91 | background-color: #000000; 92 | } 93 | .submit:hover { 94 | background-color: #000000; 95 | color: #ffffff; 96 | } 97 | @media all and (max-width: 30em) { 98 |  .submit { 99 | display: block; 100 | margin: 0.4em auto; 101 | } 102 | } 103 | a { 104 | color: white; 105 | } 106 | a:active { 107 | color: white; 108 | } 109 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Adobe Font Scraper 7 | 8 | 14 | 18 | 19 | 23 | 24 | 25 | 26 | 27 |
28 | 29 |
30 |

31 | Adobe Font Download Utility 32 |

33 |

Downloads .ttf font files from any Adobe font link.

34 |
35 |
36 |
37 | 38 | 45 | 46 | 47 |
48 |
49 | 50 | 51 | 84 | 85 | 86 | 88 |
89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /public/index.js: -------------------------------------------------------------------------------- 1 | const form = document.getElementById("fontUrl"); 2 | 3 | form.addEventListener("input", function (event) { 4 | const font = "https://fonts.adobe.com/fonts/"; 5 | const fontCollection = "https://fonts.adobe.com/collections/"; 6 | 7 | if (form.validity.typeMismatch) { 8 | form.setCustomValidity("Please enter a URL."); 9 | } else if (form.value.length <= 30) { 10 | form.setCustomValidity("This URL does not point to a font."); 11 | } else if ( 12 | !form.value.includes(font) && 13 | !form.value.includes(fontCollection) 14 | ) { 15 | form.setCustomValidity("This URL does not point to Adobe Fonts."); 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /src/fontHrefs.json: -------------------------------------------------------------------------------- 1 | {"fontArray":["https://fonts.adobe.com/fonts/aaux-next","https://fonts.adobe.com/fonts/abadi","https://fonts.adobe.com/fonts/abigail","https://fonts.adobe.com/fonts/abolition","https://fonts.adobe.com/fonts/abril","https://fonts.adobe.com/fonts/abril-titling","https://fonts.adobe.com/fonts/acier-bat","https://fonts.adobe.com/fonts/acme-gothic","https://fonts.adobe.com/fonts/acroterionjf","https://fonts.adobe.com/fonts/active","https://fonts.adobe.com/fonts/acumin","https://fonts.adobe.com/fonts/acuta","https://fonts.adobe.com/fonts/adage-script-jf","https://fonts.adobe.com/fonts/adaptive-mono","https://fonts.adobe.com/fonts/address-sans","https://fonts.adobe.com/fonts/adelle","https://fonts.adobe.com/fonts/adelle-sans","https://fonts.adobe.com/fonts/adelle-sans-arabic","https://fonts.adobe.com/fonts/adhesive-nr-seven","https://fonts.adobe.com/fonts/adobe-arabic","https://fonts.adobe.com/fonts/adobe-bengali","https://fonts.adobe.com/fonts/adobe-caslon","https://fonts.adobe.com/fonts/adobe-devanagari","https://fonts.adobe.com/fonts/adobe-fan-heiti","https://fonts.adobe.com/fonts/adobe-fangsong","https://fonts.adobe.com/fonts/adobe-garamond","https://fonts.adobe.com/fonts/adobe-gothic","https://fonts.adobe.com/fonts/adobe-gujarati","https://fonts.adobe.com/fonts/adobe-gurmukhi","https://fonts.adobe.com/fonts/adobe-handwriting","https://fonts.adobe.com/fonts/adobe-hebrew","https://fonts.adobe.com/fonts/adobe-heiti","https://fonts.adobe.com/fonts/adobe-jenson","https://fonts.adobe.com/fonts/adobe-kaiti","https://fonts.adobe.com/fonts/adobe-kannada","https://fonts.adobe.com/fonts/adobe-ming","https://fonts.adobe.com/fonts/adobe-myungjo","https://fonts.adobe.com/fonts/adobe-naskh","https://fonts.adobe.com/fonts/adobe-song","https://fonts.adobe.com/fonts/adobe-tamil","https://fonts.adobe.com/fonts/adobe-telugu","https://fonts.adobe.com/fonts/adobe-text","https://fonts.adobe.com/fonts/adobe-thai","https://fonts.adobe.com/fonts/adonis","https://fonts.adobe.com/fonts/adorn","https://fonts.adobe.com/fonts/adorn-engraved","https://fonts.adobe.com/fonts/adorn-ornaments","https://fonts.adobe.com/fonts/adorn-sans","https://fonts.adobe.com/fonts/adorn-serif","https://fonts.adobe.com/fonts/adorn-slab-serif","https://fonts.adobe.com/fonts/adorn-smooth","https://fonts.adobe.com/fonts/adriane-text","https://fonts.adobe.com/fonts/adrianna","https://fonts.adobe.com/fonts/adso","https://fonts.adobe.com/fonts/adventure","https://fonts.adobe.com/fonts/agenda","https://fonts.adobe.com/fonts/aglet-sans","https://fonts.adobe.com/fonts/aglet-slab","https://fonts.adobe.com/fonts/aileron","https://fonts.adobe.com/fonts/ainsdale","https://fonts.adobe.com/fonts/ainslie-sans","https://fonts.adobe.com/fonts/aisha","https://fonts.adobe.com/fonts/akagi","https://fonts.adobe.com/fonts/aktiv-grotesk","https://fonts.adobe.com/fonts/al-fresco","https://fonts.adobe.com/fonts/alana","https://fonts.adobe.com/fonts/alana-smooth","https://fonts.adobe.com/fonts/alber-new","https://fonts.adobe.com/fonts/albertan","https://fonts.adobe.com/fonts/albiona","https://fonts.adobe.com/fonts/alda","https://fonts.adobe.com/fonts/alegreya","https://fonts.adobe.com/fonts/alegreya-sans","https://fonts.adobe.com/fonts/alex-brush","https://fonts.adobe.com/fonts/alexa","https://fonts.adobe.com/fonts/rtf-alexander-quill","https://fonts.adobe.com/fonts/alhambra","https://fonts.adobe.com/fonts/alibaba-puhuiti","https://fonts.adobe.com/fonts/alibaba-sans","https://fonts.adobe.com/fonts/alisha","https://fonts.adobe.com/fonts/alize","https://fonts.adobe.com/fonts/all-round-gothic","https://fonts.adobe.com/fonts/aller","https://fonts.adobe.com/fonts/aller-display","https://fonts.adobe.com/fonts/allumi","https://fonts.adobe.com/fonts/allura","https://fonts.adobe.com/fonts/almaq","https://fonts.adobe.com/fonts/alphatier","https://fonts.adobe.com/fonts/alpine-script","https://fonts.adobe.com/fonts/alta-california","https://fonts.adobe.com/fonts/alternate-gothic","https://fonts.adobe.com/fonts/altivo","https://fonts.adobe.com/fonts/alverata","https://fonts.adobe.com/fonts/alwyn-new","https://fonts.adobe.com/fonts/amador","https://fonts.adobe.com/fonts/amaranth","https://fonts.adobe.com/fonts/amatic","https://fonts.adobe.com/fonts/amboy","https://fonts.adobe.com/fonts/ambroise","https://fonts.adobe.com/fonts/american-scribe","https://fonts.adobe.com/fonts/americane","https://fonts.adobe.com/fonts/amoretta","https://fonts.adobe.com/fonts/anago","https://fonts.adobe.com/fonts/anca","https://fonts.adobe.com/fonts/angie-sans","https://fonts.adobe.com/fonts/anisette","https://fonts.adobe.com/fonts/aniuk","https://fonts.adobe.com/fonts/anivers","https://fonts.adobe.com/fonts/anjali-old-lipi","https://fonts.adobe.com/fonts/annabelle","https://fonts.adobe.com/fonts/annabelle-jf","https://fonts.adobe.com/fonts/anonymous","https://fonts.adobe.com/fonts/antarctican","https://fonts.adobe.com/fonts/antiquarian","https://fonts.adobe.com/fonts/antiquarian-scribe","https://fonts.adobe.com/fonts/antique-olive","https://fonts.adobe.com/fonts/anton","https://fonts.adobe.com/fonts/anugrom","https://fonts.adobe.com/fonts/anzeigen-grotesk","https://fonts.adobe.com/fonts/anziano","https://fonts.adobe.com/fonts/apertura","https://fonts.adobe.com/fonts/aphrosine","https://fonts.adobe.com/fonts/apolline","https://fonts.adobe.com/fonts/ar-fangxinshuh7b5std","https://fonts.adobe.com/fonts/ar-fangxinshuh7gbstd","https://fonts.adobe.com/fonts/ar-mingb5std","https://fonts.adobe.com/fonts/ar-shulinsonggbstd","https://fonts.adobe.com/fonts/ar-udjingxiheib5pro","https://fonts.adobe.com/fonts/ar-udjingxiheigbstd","https://fonts.adobe.com/fonts/ar-weibeib5std","https://fonts.adobe.com/fonts/ar-weibeigbstd","https://fonts.adobe.com/fonts/ar-yuanb5std","https://fonts.adobe.com/fonts/ar-yuangbstd","https://fonts.adobe.com/fonts/arbitrary","https://fonts.adobe.com/fonts/arboria","https://fonts.adobe.com/fonts/arbotek","https://fonts.adobe.com/fonts/archetype","https://fonts.adobe.com/fonts/archivo-black","https://fonts.adobe.com/fonts/ardoise","https://fonts.adobe.com/fonts/arek","https://fonts.adobe.com/fonts/argumentum","https://fonts.adobe.com/fonts/aria-text","https://fonts.adobe.com/fonts/ariana","https://fonts.adobe.com/fonts/arimo","https://fonts.adobe.com/fonts/arlette","https://fonts.adobe.com/fonts/arlette-thai","https://fonts.adobe.com/fonts/armada","https://fonts.adobe.com/fonts/armstrong","https://fonts.adobe.com/fonts/arno","https://fonts.adobe.com/fonts/arpona","https://fonts.adobe.com/fonts/arpona-sans","https://fonts.adobe.com/fonts/array","https://fonts.adobe.com/fonts/artigo","https://fonts.adobe.com/fonts/artigo-display","https://fonts.adobe.com/fonts/arvo","https://fonts.adobe.com/fonts/arya","https://fonts.adobe.com/fonts/arzachel","https://fonts.adobe.com/fonts/asap","https://fonts.adobe.com/fonts/ashemore","https://fonts.adobe.com/fonts/asimovsans","https://fonts.adobe.com/fonts/asphalt","https://fonts.adobe.com/fonts/astoria","https://fonts.adobe.com/fonts/astoria-sans","https://fonts.adobe.com/fonts/astounder-squared-bb","https://fonts.adobe.com/fonts/atf-alternate-gothic","https://fonts.adobe.com/fonts/atf-alternate-gothic-compressed","https://fonts.adobe.com/fonts/atf-alternate-gothic-condensed","https://fonts.adobe.com/fonts/atf-alternate-gothic-extra-condensed","https://fonts.adobe.com/fonts/atf-brush","https://fonts.adobe.com/fonts/atf-franklin-gothic","https://fonts.adobe.com/fonts/atf-garamond-micro","https://fonts.adobe.com/fonts/atf-garamond-subhead","https://fonts.adobe.com/fonts/atf-garamond-text","https://fonts.adobe.com/fonts/atf-headline-gothic","https://fonts.adobe.com/fonts/atf-livermore-script","https://fonts.adobe.com/fonts/atf-poster-gothic","https://fonts.adobe.com/fonts/atf-poster-gothic-condensed","https://fonts.adobe.com/fonts/atf-poster-gothic-extra-condensed","https://fonts.adobe.com/fonts/atf-poster-gothic-round","https://fonts.adobe.com/fonts/atf-poster-gothic-round-condensed","https://fonts.adobe.com/fonts/atf-poster-gothic-round-extra-condensed","https://fonts.adobe.com/fonts/atf-railroad-gothic","https://fonts.adobe.com/fonts/atf-wedding-gothic","https://fonts.adobe.com/fonts/atf-wedding-gothic-wide","https://fonts.adobe.com/fonts/athelas","https://fonts.adobe.com/fonts/athelas-arabic","https://fonts.adobe.com/fonts/atrament","https://fonts.adobe.com/fonts/attic-antique","https://fonts.adobe.com/fonts/aurea-ultra","https://fonts.adobe.com/fonts/auster","https://fonts.adobe.com/fonts/austin-pen","https://fonts.adobe.com/fonts/auto","https://fonts.adobe.com/fonts/automate","https://fonts.adobe.com/fonts/avalanche","https://fonts.adobe.com/fonts/avalon","https://fonts.adobe.com/fonts/avebury","https://fonts.adobe.com/fonts/aviano","https://fonts.adobe.com/fonts/aviano-didone","https://fonts.adobe.com/fonts/aviano-flare","https://fonts.adobe.com/fonts/aviano-future","https://fonts.adobe.com/fonts/aviano-royale","https://fonts.adobe.com/fonts/aviano-sans","https://fonts.adobe.com/fonts/aviano-serif","https://fonts.adobe.com/fonts/aviano-slab","https://fonts.adobe.com/fonts/aviano-wedge","https://fonts.adobe.com/fonts/avory","https://fonts.adobe.com/fonts/aw-conqueror-carved","https://fonts.adobe.com/fonts/aw-conqueror-didot","https://fonts.adobe.com/fonts/aw-conqueror-inline","https://fonts.adobe.com/fonts/aw-conqueror","https://fonts.adobe.com/fonts/aw-conqueror-slab","https://fonts.adobe.com/fonts/awanzaman","https://fonts.adobe.com/fonts/axia","https://fonts.adobe.com/fonts/aya-script","https://fonts.adobe.com/fonts/azo-sans","https://fonts.adobe.com/fonts/azote","https://fonts.adobe.com/fonts/backspacer","https://fonts.adobe.com/fonts/badaboom","https://fonts.adobe.com/fonts/baddog","https://fonts.adobe.com/fonts/badtyp","https://fonts.adobe.com/fonts/bagatela","https://fonts.adobe.com/fonts/baileywick-jf-gothic","https://fonts.adobe.com/fonts/baker-signet","https://fonts.adobe.com/fonts/balboa","https://fonts.adobe.com/fonts/balboa-plus","https://fonts.adobe.com/fonts/ballers-delight","https://fonts.adobe.com/fonts/ballinger","https://fonts.adobe.com/fonts/ballinger-condensed","https://fonts.adobe.com/fonts/ballinger-mono","https://fonts.adobe.com/fonts/ballinger-x-condensed","https://fonts.adobe.com/fonts/balloon-urw","https://fonts.adobe.com/fonts/baltica","https://fonts.adobe.com/fonts/balzano","https://fonts.adobe.com/fonts/banana","https://fonts.adobe.com/fonts/banshee","https://fonts.adobe.com/fonts/barbieri","https://fonts.adobe.com/fonts/barge","https://fonts.adobe.com/fonts/baroque-text-jf","https://fonts.adobe.com/fonts/barricada","https://fonts.adobe.com/fonts/barteldes","https://fonts.adobe.com/fonts/base-9-12","https://fonts.adobe.com/fonts/base-900","https://fonts.adobe.com/fonts/base-mono","https://fonts.adobe.com/fonts/basel-neue","https://fonts.adobe.com/fonts/basic-sans","https://fonts.adobe.com/fonts/baskerville-pt","https://fonts.adobe.com/fonts/baskerville-urw","https://fonts.adobe.com/fonts/battery-park","https://fonts.adobe.com/fonts/battlefin","https://fonts.adobe.com/fonts/battleslab","https://fonts.adobe.com/fonts/battlestation","https://fonts.adobe.com/fonts/baucher-gothic-urw","https://fonts.adobe.com/fonts/bc-alphapipe","https://fonts.adobe.com/fonts/bd-brick","https://fonts.adobe.com/fonts/bd-colonius","https://fonts.adobe.com/fonts/bd-geminis","https://fonts.adobe.com/fonts/bd-jupiter","https://fonts.adobe.com/fonts/bd-nippori","https://fonts.adobe.com/fonts/bd-plakatbau","https://fonts.adobe.com/fonts/bd-retrocentric","https://fonts.adobe.com/fonts/bd-viewmaster","https://fonts.adobe.com/fonts/bdr-a3mik","https://fonts.adobe.com/fonts/bdr-mono","https://fonts.adobe.com/fonts/beastly","https://fonts.adobe.com/fonts/bebas-kai","https://fonts.adobe.com/fonts/bebas-neue","https://fonts.adobe.com/fonts/bebas-neue-by-fontfabric-based-on-v14","https://fonts.adobe.com/fonts/bebas-neue-pro","https://fonts.adobe.com/fonts/bebas-neue-rounded","https://fonts.adobe.com/fonts/bebas-neue-semirounded","https://fonts.adobe.com/fonts/bebas-neue-v14-deprecated","https://fonts.adobe.com/fonts/bee","https://fonts.adobe.com/fonts/belda","https://fonts.adobe.com/fonts/bell-centennial-std","https://fonts.adobe.com/fonts/bello","https://fonts.adobe.com/fonts/beloved","https://fonts.adobe.com/fonts/bely","https://fonts.adobe.com/fonts/bennet-banner","https://fonts.adobe.com/fonts/bennet-display","https://fonts.adobe.com/fonts/bennet-text","https://fonts.adobe.com/fonts/bernhard-gothic-urw","https://fonts.adobe.com/fonts/bickham-script","https://fonts.adobe.com/fonts/bicyclette","https://fonts.adobe.com/fonts/big-cheese","https://fonts.adobe.com/fonts/big-city-grotesque","https://fonts.adobe.com/fonts/bigfish","https://fonts.adobe.com/fonts/bigsmalls","https://fonts.adobe.com/fonts/bilo","https://fonts.adobe.com/fonts/bio-sans","https://fonts.adobe.com/fonts/birch","https://fonts.adobe.com/fonts/birra","https://fonts.adobe.com/fonts/bistro-script","https://fonts.adobe.com/fonts/bitter","https://fonts.adobe.com/fonts/blackbeard","https://fonts.adobe.com/fonts/blackcurrant","https://fonts.adobe.com/fonts/blackoak","https://fonts.adobe.com/fonts/blakely","https://fonts.adobe.com/fonts/blambot","https://fonts.adobe.com/fonts/blambot-casual","https://fonts.adobe.com/fonts/blambot-fx","https://fonts.adobe.com/fonts/blenny","https://fonts.adobe.com/fonts/bligh","https://fonts.adobe.com/fonts/blockhead","https://fonts.adobe.com/fonts/blockhead-illustrations","https://fonts.adobe.com/fonts/blonde-fraktur","https://fonts.adobe.com/fonts/blow-up","https://fonts.adobe.com/fonts/blue-goblet","https://fonts.adobe.com/fonts/bluemlein-script-collection","https://fonts.adobe.com/fonts/bodega-sans","https://fonts.adobe.com/fonts/bodega-serif","https://fonts.adobe.com/fonts/bodoni-urw","https://fonts.adobe.com/fonts/bombarda","https://fonts.adobe.com/fonts/bookeyed","https://fonts.adobe.com/fonts/bookman-jf","https://fonts.adobe.com/fonts/bookmania","https://fonts.adobe.com/fonts/boreal","https://fonts.adobe.com/fonts/botanika","https://fonts.adobe.com/fonts/botanika-mono","https://fonts.adobe.com/fonts/boucherie-block","https://fonts.adobe.com/fonts/boucherie-cursive","https://fonts.adobe.com/fonts/boucherie-flared","https://fonts.adobe.com/fonts/boucherie-sans","https://fonts.adobe.com/fonts/bouffant","https://fonts.adobe.com/fonts/bounce-script","https://fonts.adobe.com/fonts/bourbon","https://fonts.adobe.com/fonts/bowman","https://fonts.adobe.com/fonts/braisetto","https://fonts.adobe.com/fonts/brandon-grotesque","https://fonts.adobe.com/fonts/breakers","https://fonts.adobe.com/fonts/breakers-slab","https://fonts.adobe.com/fonts/bree","https://fonts.adobe.com/fonts/bree-serif","https://fonts.adobe.com/fonts/bremen","https://fonts.adobe.com/fonts/bressay","https://fonts.adobe.com/fonts/brevia","https://fonts.adobe.com/fonts/brevier","https://fonts.adobe.com/fonts/brigade","https://fonts.adobe.com/fonts/briller","https://fonts.adobe.com/fonts/brim-narrow","https://fonts.adobe.com/fonts/brim-narrow-combined","https://fonts.adobe.com/fonts/brioso","https://fonts.adobe.com/fonts/brix-slab","https://fonts.adobe.com/fonts/broadsheet","https://fonts.adobe.com/fonts/bronson-gothic-jf","https://fonts.adobe.com/fonts/brother-1816","https://fonts.adobe.com/fonts/brothers","https://fonts.adobe.com/fonts/brush-script","https://fonts.adobe.com/fonts/brushland","https://fonts.adobe.com/fonts/bubblegum-pop","https://fonts.adobe.com/fonts/buckboard","https://fonts.adobe.com/fonts/buckley","https://fonts.adobe.com/fonts/buena-park-jf","https://fonts.adobe.com/fonts/bufalino","https://fonts.adobe.com/fonts/bungee","https://fonts.adobe.com/fonts/bunyan","https://fonts.adobe.com/fonts/burnaby","https://fonts.adobe.com/fonts/byker","https://fonts.adobe.com/fonts/cabazon","https://fonts.adobe.com/fonts/cabrito","https://fonts.adobe.com/fonts/cabrito-didone","https://fonts.adobe.com/fonts/cabrito-sans","https://fonts.adobe.com/fonts/cadogan","https://fonts.adobe.com/fonts/cafeteria","https://fonts.adobe.com/fonts/caflisch-script","https://fonts.adobe.com/fonts/cairo","https://fonts.adobe.com/fonts/calder","https://fonts.adobe.com/fonts/calendula","https://fonts.adobe.com/fonts/caliban","https://fonts.adobe.com/fonts/calibri","https://fonts.adobe.com/fonts/calling-code","https://fonts.adobe.com/fonts/calluna","https://fonts.adobe.com/fonts/calluna-sans","https://fonts.adobe.com/fonts/calmetta","https://fonts.adobe.com/fonts/campaign","https://fonts.adobe.com/fonts/campaign-slab","https://fonts.adobe.com/fonts/cantarell","https://fonts.adobe.com/fonts/cantiga","https://fonts.adobe.com/fonts/canto","https://fonts.adobe.com/fonts/cantoni","https://fonts.adobe.com/fonts/capitol","https://fonts.adobe.com/fonts/capitolina","https://fonts.adobe.com/fonts/capitolium-2","https://fonts.adobe.com/fonts/caprizant","https://fonts.adobe.com/fonts/captain-comic","https://fonts.adobe.com/fonts/capucine","https://fonts.adobe.com/fonts/carbon","https://fonts.adobe.com/fonts/cardea","https://fonts.adobe.com/fonts/cardigan","https://fonts.adobe.com/fonts/cardo","https://fonts.adobe.com/fonts/carilliantine","https://fonts.adobe.com/fonts/carta-marina","https://fonts.adobe.com/fonts/casablanca-urw","https://fonts.adobe.com/fonts/casey","https://fonts.adobe.com/fonts/catalpa","https://fonts.adobe.com/fonts/catamaran","https://fonts.adobe.com/fonts/catnip","https://fonts.adobe.com/fonts/catseye","https://fonts.adobe.com/fonts/catwing","https://fonts.adobe.com/fonts/cc-biff-bam-boom","https://fonts.adobe.com/fonts/cc-clobberin-time","https://fonts.adobe.com/fonts/cc-meanwhile","https://fonts.adobe.com/fonts/cc-monster-mash","https://fonts.adobe.com/fonts/cc-sign-language","https://fonts.adobe.com/fonts/century-gothic","https://fonts.adobe.com/fonts/century-old-style","https://fonts.adobe.com/fonts/chainprinter","https://fonts.adobe.com/fonts/chalfont","https://fonts.adobe.com/fonts/chalky","https://fonts.adobe.com/fonts/chaloops","https://fonts.adobe.com/fonts/chandler-42","https://fonts.adobe.com/fonts/changeling-neo","https://fonts.adobe.com/fonts/chantal","https://fonts.adobe.com/fonts/chaparral","https://fonts.adobe.com/fonts/chapman","https://fonts.adobe.com/fonts/charbroiled","https://fonts.adobe.com/fonts/charcuterie","https://fonts.adobe.com/fonts/charcuterie-block","https://fonts.adobe.com/fonts/charcuterie-contrast","https://fonts.adobe.com/fonts/charcuterie-cursive","https://fonts.adobe.com/fonts/charcuterie-ornaments","https://fonts.adobe.com/fonts/charcuterie-sans","https://fonts.adobe.com/fonts/charcuterie-serif","https://fonts.adobe.com/fonts/charlemagne","https://fonts.adobe.com/fonts/chauncy","https://fonts.adobe.com/fonts/cheap-pine","https://fonts.adobe.com/fonts/cheee","https://fonts.adobe.com/fonts/chelsea-market","https://fonts.adobe.com/fonts/chennai","https://fonts.adobe.com/fonts/chennai-slab","https://fonts.adobe.com/fonts/chevin-pro","https://fonts.adobe.com/fonts/chiavettieri","https://fonts.adobe.com/fonts/chilanka","https://fonts.adobe.com/fonts/chinchilla","https://fonts.adobe.com/fonts/chinese-rocks","https://fonts.adobe.com/fonts/chippewa-falls","https://fonts.adobe.com/fonts/cholla","https://fonts.adobe.com/fonts/chowdown","https://fonts.adobe.com/fonts/chuck","https://fonts.adobe.com/fonts/chunder","https://fonts.adobe.com/fonts/chypre","https://fonts.adobe.com/fonts/cinque-donne","https://fonts.adobe.com/fonts/circe","https://fonts.adobe.com/fonts/circe-slab","https://fonts.adobe.com/fonts/citadel","https://fonts.adobe.com/fonts/citizen","https://fonts.adobe.com/fonts/civane","https://fonts.adobe.com/fonts/clarendon-text","https://fonts.adobe.com/fonts/clarendon-urw","https://fonts.adobe.com/fonts/clarendon-wide","https://fonts.adobe.com/fonts/classic-comic","https://fonts.adobe.com/fonts/classica","https://fonts.adobe.com/fonts/classico-urw","https://fonts.adobe.com/fonts/clavo","https://fonts.adobe.com/fonts/click-clack","https://fonts.adobe.com/fonts/clicker","https://fonts.adobe.com/fonts/clone-rounded","https://fonts.adobe.com/fonts/co","https://fonts.adobe.com/fonts/code-saver","https://fonts.adobe.com/fonts/coldsmith","https://fonts.adobe.com/fonts/collector-comic","https://fonts.adobe.com/fonts/collier","https://fonts.adobe.com/fonts/colosseum","https://fonts.adobe.com/fonts/colt","https://fonts.adobe.com/fonts/colt-soft","https://fonts.adobe.com/fonts/columbia-titling","https://fonts.adobe.com/fonts/comenia-sans","https://fonts.adobe.com/fonts/commerce","https://fonts.adobe.com/fonts/commuters-sans","https://fonts.adobe.com/fonts/como","https://fonts.adobe.com/fonts/concave-tuscan","https://fonts.adobe.com/fonts/conceal","https://fonts.adobe.com/fonts/condor","https://fonts.adobe.com/fonts/congenial","https://fonts.adobe.com/fonts/conglomerate","https://fonts.adobe.com/fonts/coniferous","https://fonts.adobe.com/fonts/continuo","https://fonts.adobe.com/fonts/coolvetica","https://fonts.adobe.com/fonts/cooper-black","https://fonts.adobe.com/fonts/copacabana","https://fonts.adobe.com/fonts/copal","https://fonts.adobe.com/fonts/copperplate","https://fonts.adobe.com/fonts/copse","https://fonts.adobe.com/fonts/coquette","https://fonts.adobe.com/fonts/cora","https://fonts.adobe.com/fonts/coranto-2","https://fonts.adobe.com/fonts/cordale","https://fonts.adobe.com/fonts/cormorant-garamond","https://fonts.adobe.com/fonts/corndog","https://fonts.adobe.com/fonts/corner-store-jf","https://fonts.adobe.com/fonts/coronette","https://fonts.adobe.com/fonts/corporate-a","https://fonts.adobe.com/fonts/corporate-e","https://fonts.adobe.com/fonts/corporate-s","https://fonts.adobe.com/fonts/corpulent","https://fonts.adobe.com/fonts/cortado","https://fonts.adobe.com/fonts/corundum-text","https://fonts.adobe.com/fonts/cosmopolitan","https://fonts.adobe.com/fonts/costa","https://fonts.adobe.com/fonts/cotton","https://fonts.adobe.com/fonts/cottonwood","https://fonts.adobe.com/fonts/council","https://fonts.adobe.com/fonts/countach","https://fonts.adobe.com/fonts/courier","https://fonts.adobe.com/fonts/courier-prime","https://fonts.adobe.com/fonts/covik-sans","https://fonts.adobe.com/fonts/covik-sans-mono","https://fonts.adobe.com/fonts/cowboyslang","https://fonts.adobe.com/fonts/crackly","https://fonts.adobe.com/fonts/crassula","https://fonts.adobe.com/fonts/craw-modern-urw","https://fonts.adobe.com/fonts/cresta","https://fonts.adobe.com/fonts/crete","https://fonts.adobe.com/fonts/critter","https://fonts.adobe.com/fonts/cronos","https://fonts.adobe.com/fonts/cubano","https://fonts.adobe.com/fonts/cuisine","https://fonts.adobe.com/fonts/curve","https://fonts.adobe.com/fonts/custard","https://fonts.adobe.com/fonts/cy","https://fonts.adobe.com/fonts/dalliance","https://fonts.adobe.com/fonts/dapifer","https://fonts.adobe.com/fonts/davis","https://fonts.adobe.com/fonts/davis-sans","https://fonts.adobe.com/fonts/dazzle-unicase","https://fonts.adobe.com/fonts/ddt","https://fonts.adobe.com/fonts/dead-history","https://fonts.adobe.com/fonts/dederon","https://fonts.adobe.com/fonts/dederon-sans","https://fonts.adobe.com/fonts/dedica","https://fonts.adobe.com/fonts/default-gothic","https://fonts.adobe.com/fonts/degular","https://fonts.adobe.com/fonts/dejarip","https://fonts.adobe.com/fonts/delaney","https://fonts.adobe.com/fonts/delicato","https://fonts.adobe.com/fonts/delittle-chromatic","https://fonts.adobe.com/fonts/delve-hand","https://fonts.adobe.com/fonts/democratica","https://fonts.adobe.com/fonts/demos-next","https://fonts.adobe.com/fonts/depot-new","https://fonts.adobe.com/fonts/despina","https://fonts.adobe.com/fonts/dessert-script","https://fonts.adobe.com/fonts/deva-ideal","https://fonts.adobe.com/fonts/dharma-gothic","https://fonts.adobe.com/fonts/diavlo","https://fonts.adobe.com/fonts/dicsans","https://fonts.adobe.com/fonts/didoni-urw","https://fonts.adobe.com/fonts/dienstag","https://fonts.adobe.com/fonts/dimensions","https://fonts.adobe.com/fonts/din-1451-pro","https://fonts.adobe.com/fonts/din-2014","https://fonts.adobe.com/fonts/din-condensed","https://fonts.adobe.com/fonts/dinosaur","https://fonts.adobe.com/fonts/dirtstorm","https://fonts.adobe.com/fonts/dirty-bakers-dozen","https://fonts.adobe.com/fonts/discourse","https://fonts.adobe.com/fonts/district","https://fonts.adobe.com/fonts/dita","https://fonts.adobe.com/fonts/ditch","https://fonts.adobe.com/fonts/divenire","https://fonts.adobe.com/fonts/divulge","https://fonts.adobe.com/fonts/dogma","https://fonts.adobe.com/fonts/dolce","https://fonts.adobe.com/fonts/dolly","https://fonts.adobe.com/fonts/domlovesmary","https://fonts.adobe.com/fonts/domyouji","https://fonts.adobe.com/fonts/donguri","https://fonts.adobe.com/fonts/downtempo","https://fonts.adobe.com/fonts/droid-sans","https://fonts.adobe.com/fonts/droid-sans-mono","https://fonts.adobe.com/fonts/droid-serif","https://fonts.adobe.com/fonts/drunk-cowboy","https://fonts.adobe.com/fonts/dry-cowboy","https://fonts.adobe.com/fonts/duality","https://fonts.adobe.com/fonts/dublin","https://fonts.adobe.com/fonts/duende","https://fonts.adobe.com/fonts/dulcian","https://fonts.adobe.com/fonts/dunbar","https://fonts.adobe.com/fonts/duos","https://fonts.adobe.com/fonts/duper","https://fonts.adobe.com/fonts/dutch-mediaeval","https://fonts.adobe.com/fonts/eb-garamond","https://fonts.adobe.com/fonts/ebony","https://fonts.adobe.com/fonts/eckmannpsych","https://fonts.adobe.com/fonts/eco","https://fonts.adobe.com/fonts/economica","https://fonts.adobe.com/fonts/ecru","https://fonts.adobe.com/fonts/eds-market","https://fonts.adobe.com/fonts/edita","https://fonts.adobe.com/fonts/effra","https://fonts.adobe.com/fonts/egizio-urw","https://fonts.adobe.com/fonts/eidetic-neo","https://fonts.adobe.com/fonts/eigerdals","https://fonts.adobe.com/fonts/eldwin-script","https://fonts.adobe.com/fonts/elektrix","https://fonts.adobe.com/fonts/elevon","https://fonts.adobe.com/fonts/elido","https://fonts.adobe.com/fonts/elina","https://fonts.adobe.com/fonts/elliots","https://fonts.adobe.com/fonts/eloquent-jf","https://fonts.adobe.com/fonts/embryo","https://fonts.adobe.com/fonts/embury-text","https://fonts.adobe.com/fonts/emily-austin","https://fonts.adobe.com/fonts/emploi","https://fonts.adobe.com/fonts/enchanted","https://fonts.adobe.com/fonts/english-grotesque","https://fonts.adobe.com/fonts/epitaph","https://fonts.adobe.com/fonts/erbaum","https://fonts.adobe.com/fonts/escoffier-capitaux","https://fonts.adobe.com/fonts/eskapade","https://fonts.adobe.com/fonts/eskorte","https://fonts.adobe.com/fonts/essay-text","https://fonts.adobe.com/fonts/essential-pragmatapro","https://fonts.adobe.com/fonts/essonnes","https://fonts.adobe.com/fonts/ethnocentric","https://fonts.adobe.com/fonts/europa","https://fonts.adobe.com/fonts/eurostile","https://fonts.adobe.com/fonts/exo-soft","https://fonts.adobe.com/fonts/exocet","https://fonts.adobe.com/fonts/expo-sans","https://fonts.adobe.com/fonts/expo-serif","https://fonts.adobe.com/fonts/export","https://fonts.adobe.com/fonts/expressway","https://fonts.adobe.com/fonts/facto","https://fonts.adobe.com/fonts/factoria","https://fonts.adobe.com/fonts/fairplex","https://fonts.adobe.com/fonts/fairwater","https://fonts.adobe.com/fonts/fairwater-sans","https://fonts.adobe.com/fonts/fairwater-script","https://fonts.adobe.com/fonts/fairway","https://fonts.adobe.com/fonts/fairweather","https://fonts.adobe.com/fonts/fairy-tale-jf","https://fonts.adobe.com/fonts/fakir","https://fonts.adobe.com/fonts/falcon-script","https://fonts.adobe.com/fonts/faricy-new","https://fonts.adobe.com/fonts/farmhand","https://fonts.adobe.com/fonts/farmhand-sans","https://fonts.adobe.com/fonts/fatfrank","https://fonts.adobe.com/fonts/fave","https://fonts.adobe.com/fonts/felt-tip","https://fonts.adobe.com/fonts/feltro","https://fonts.adobe.com/fonts/fenway-park-jf","https://fonts.adobe.com/fonts/fenwick","https://fonts.adobe.com/fonts/fertigo","https://fonts.adobe.com/fonts/fertigo-script","https://fonts.adobe.com/fonts/ff-amman-sans","https://fonts.adobe.com/fonts/ff-amman-serif","https://fonts.adobe.com/fonts/ff-angie","https://fonts.adobe.com/fonts/ff-attribute-mono","https://fonts.adobe.com/fonts/ff-attribute-text","https://fonts.adobe.com/fonts/ff-avance","https://fonts.adobe.com/fonts/ff-basic-gothic","https://fonts.adobe.com/fonts/ff-brokenscript","https://fonts.adobe.com/fonts/ff-carina","https://fonts.adobe.com/fonts/ff-casus","https://fonts.adobe.com/fonts/ff-chambers-sans","https://fonts.adobe.com/fonts/ff-cocon","https://fonts.adobe.com/fonts/ff-dagny","https://fonts.adobe.com/fonts/ff-dax","https://fonts.adobe.com/fonts/ff-enzo","https://fonts.adobe.com/fonts/ff-ernestine","https://fonts.adobe.com/fonts/ff-folk","https://fonts.adobe.com/fonts/ff-ginger","https://fonts.adobe.com/fonts/ff-good","https://fonts.adobe.com/fonts/ff-good-headline","https://fonts.adobe.com/fonts/ff-info","https://fonts.adobe.com/fonts/ff-karbid","https://fonts.adobe.com/fonts/ff-karbid-slab","https://fonts.adobe.com/fonts/ff-kava","https://fonts.adobe.com/fonts/ff-mach","https://fonts.adobe.com/fonts/ff-market","https://fonts.adobe.com/fonts/ff-meta","https://fonts.adobe.com/fonts/ff-meta-headline","https://fonts.adobe.com/fonts/ff-meta-serif","https://fonts.adobe.com/fonts/ff-more","https://fonts.adobe.com/fonts/ff-nexus-mix","https://fonts.adobe.com/fonts/ff-nexus-sans","https://fonts.adobe.com/fonts/ff-nexus-serif","https://fonts.adobe.com/fonts/ff-nexus-typewriter","https://fonts.adobe.com/fonts/ff-nort","https://fonts.adobe.com/fonts/ff-nuvo","https://fonts.adobe.com/fonts/ff-nuvo-mono","https://fonts.adobe.com/fonts/ff-prater","https://fonts.adobe.com/fonts/ff-providence","https://fonts.adobe.com/fonts/ff-providence-sans","https://fonts.adobe.com/fonts/ff-real","https://fonts.adobe.com/fonts/ff-scala","https://fonts.adobe.com/fonts/ff-scala-sans","https://fonts.adobe.com/fonts/ff-seria","https://fonts.adobe.com/fonts/ff-seria-sans","https://fonts.adobe.com/fonts/ff-speak","https://fonts.adobe.com/fonts/ff-spinoza","https://fonts.adobe.com/fonts/ff-tisa","https://fonts.adobe.com/fonts/ff-tisa-sans","https://fonts.adobe.com/fonts/ff-typestar","https://fonts.adobe.com/fonts/ff-uberhand","https://fonts.adobe.com/fonts/ff-unit","https://fonts.adobe.com/fonts/ff-unit-rounded","https://fonts.adobe.com/fonts/ff-unit-slab","https://fonts.adobe.com/fonts/ff-utility","https://fonts.adobe.com/fonts/ff-zwo","https://fonts.adobe.com/fonts/fieldwork","https://fonts.adobe.com/fonts/fight-to-the-finish-bb","https://fonts.adobe.com/fonts/filosofia","https://fonts.adobe.com/fonts/filson","https://fonts.adobe.com/fonts/fino","https://fonts.adobe.com/fonts/fino-sans","https://fonts.adobe.com/fonts/fira-mono","https://fonts.adobe.com/fonts/fira-sans","https://fonts.adobe.com/fonts/fit","https://fonts.adobe.com/fonts/fleisch","https://fonts.adobe.com/fonts/flood","https://fonts.adobe.com/fonts/flower-power","https://fonts.adobe.com/fonts/p22-eaglefeather","https://fonts.adobe.com/fonts/flyswim","https://fonts.adobe.com/fonts/foco","https://fonts.adobe.com/fonts/forgotten-futurist","https://fonts.adobe.com/fonts/forma-djr-banner","https://fonts.adobe.com/fonts/forma-djr-deck","https://fonts.adobe.com/fonts/forma-djr-display","https://fonts.adobe.com/fonts/forma-djr-micro","https://fonts.adobe.com/fonts/forma-djr-text","https://fonts.adobe.com/fonts/fp-dancer","https://fonts.adobe.com/fonts/fp-dancer-serif","https://fonts.adobe.com/fonts/fp-head","https://fonts.adobe.com/fonts/fragile-bombers","https://fonts.adobe.com/fonts/franklin-gothic-urw","https://fonts.adobe.com/fonts/fredericka-the-greatest","https://fonts.adobe.com/fonts/freehouse","https://fonts.adobe.com/fonts/freight","https://fonts.adobe.com/fonts/freight-neo","https://fonts.adobe.com/fonts/freight-sans","https://fonts.adobe.com/fonts/freight-text","https://fonts.adobe.com/fonts/french-octagon","https://fonts.adobe.com/fonts/french-roast","https://fonts.adobe.com/fonts/fresno","https://fonts.adobe.com/fonts/freude","https://fonts.adobe.com/fonts/funkydori","https://fonts.adobe.com/fonts/fusaka","https://fonts.adobe.com/fonts/futura-pt","https://fonts.adobe.com/fonts/gala","https://fonts.adobe.com/fonts/galahad","https://fonts.adobe.com/fonts/galette","https://fonts.adobe.com/fonts/ganache","https://fonts.adobe.com/fonts/garage-gothic","https://fonts.adobe.com/fonts/garamond-premier","https://fonts.adobe.com/fonts/garvis","https://fonts.adobe.com/fonts/gastromond","https://fonts.adobe.com/fonts/gaultier","https://fonts.adobe.com/fonts/gautreaux","https://fonts.adobe.com/fonts/gelo","https://fonts.adobe.com/fonts/gemeli-mono","https://fonts.adobe.com/fonts/geneo","https://fonts.adobe.com/fonts/geographica","https://fonts.adobe.com/fonts/geom-graphic","https://fonts.adobe.com/fonts/germania-one","https://fonts.adobe.com/fonts/gesta","https://fonts.adobe.com/fonts/gibbs","https://fonts.adobe.com/fonts/gibson","https://fonts.adobe.com/fonts/giddyup","https://fonts.adobe.com/fonts/gigalypse","https://fonts.adobe.com/fonts/gilbert","https://fonts.adobe.com/fonts/gill-sans-nova","https://fonts.adobe.com/fonts/gimlet-display","https://fonts.adobe.com/fonts/gimlet-micro","https://fonts.adobe.com/fonts/gimlet-text","https://fonts.adobe.com/fonts/gin","https://fonts.adobe.com/fonts/gineso","https://fonts.adobe.com/fonts/gioviale","https://fonts.adobe.com/fonts/gira-sans","https://fonts.adobe.com/fonts/gitan","https://fonts.adobe.com/fonts/giulia","https://fonts.adobe.com/fonts/givry","https://fonts.adobe.com/fonts/gizmo","https://fonts.adobe.com/fonts/gloria-hallelujah","https://fonts.adobe.com/fonts/gloss-drop","https://fonts.adobe.com/fonts/gnuolane","https://fonts.adobe.com/fonts/goldenbook","https://fonts.adobe.com/fonts/gomme-sans","https://fonts.adobe.com/fonts/good-bad-man","https://fonts.adobe.com/fonts/good-times","https://fonts.adobe.com/fonts/gooddog-new","https://fonts.adobe.com/fonts/goodkitty","https://fonts.adobe.com/fonts/goodlife","https://fonts.adobe.com/fonts/gopher","https://fonts.adobe.com/fonts/gothicus","https://fonts.adobe.com/fonts/goudy-bookletter-1911","https://fonts.adobe.com/fonts/goudy-old-style","https://fonts.adobe.com/fonts/grad","https://fonts.adobe.com/fonts/graffiti","https://fonts.adobe.com/fonts/grafolita-script","https://fonts.adobe.com/fonts/grand-central","https://fonts.adobe.com/fonts/grandma","https://fonts.adobe.com/fonts/grange","https://fonts.adobe.com/fonts/granville","https://fonts.adobe.com/fonts/graphie","https://fonts.adobe.com/fonts/graphite","https://fonts.adobe.com/fonts/gratitude-script","https://fonts.adobe.com/fonts/graveblade","https://fonts.adobe.com/fonts/gravesend-sans","https://fonts.adobe.com/fonts/great-vibes","https://fonts.adobe.com/fonts/grecian-light-face","https://fonts.adobe.com/fonts/griffith-gothic","https://fonts.adobe.com/fonts/griffith-gothic-condensed","https://fonts.adobe.com/fonts/griffon","https://fonts.adobe.com/fonts/grover","https://fonts.adobe.com/fonts/grover-slab","https://fonts.adobe.com/fonts/grueber","https://fonts.adobe.com/fonts/guanabara-sans","https://fonts.adobe.com/fonts/guapa","https://fonts.adobe.com/fonts/gunplay","https://fonts.adobe.com/fonts/gurkner","https://fonts.adobe.com/fonts/gyparody","https://fonts.adobe.com/fonts/haboro","https://fonts.adobe.com/fonts/haboro-contrast","https://fonts.adobe.com/fonts/haboro-serif","https://fonts.adobe.com/fonts/haboro-soft","https://fonts.adobe.com/fonts/hack","https://fonts.adobe.com/fonts/hackman","https://fonts.adobe.com/fonts/halcom","https://fonts.adobe.com/fonts/halogen","https://fonts.adobe.com/fonts/halyard","https://fonts.adobe.com/fonts/handel-gothic","https://fonts.adobe.com/fonts/harfang","https://fonts.adobe.com/fonts/harlean","https://fonts.adobe.com/fonts/harri","https://fonts.adobe.com/fonts/harvester","https://fonts.adobe.com/fonts/hatch","https://fonts.adobe.com/fonts/hayate","https://fonts.adobe.com/fonts/headlight","https://fonts.adobe.com/fonts/hedley-new","https://fonts.adobe.com/fonts/heebo","https://fonts.adobe.com/fonts/heimat-didone","https://fonts.adobe.com/fonts/heimat-display","https://fonts.adobe.com/fonts/heimat-mono","https://fonts.adobe.com/fonts/heimat-sans","https://fonts.adobe.com/fonts/heimat-stencil","https://fonts.adobe.com/fonts/hellenic-wide-jf","https://fonts.adobe.com/fonts/hello-my-love","https://fonts.adobe.com/fonts/henderson-sans","https://fonts.adobe.com/fonts/henderson-slab","https://fonts.adobe.com/fonts/henriette","https://fonts.adobe.com/fonts/herencia","https://fonts.adobe.com/fonts/hidden-treasures","https://fonts.adobe.com/fonts/hightower","https://fonts.adobe.com/fonts/hilde-sharp","https://fonts.adobe.com/fonts/hind","https://fonts.adobe.com/fonts/hind-siliguri","https://fonts.adobe.com/fonts/hit","https://fonts.adobe.com/fonts/hobeaux","https://fonts.adobe.com/fonts/hobeaux-rococeaux","https://fonts.adobe.com/fonts/hobeaux-rococeaux-borders","https://fonts.adobe.com/fonts/hobo","https://fonts.adobe.com/fonts/hoffmann","https://fonts.adobe.com/fonts/homemade-apple-pro","https://fonts.adobe.com/fonts/hooligan-jf","https://fonts.adobe.com/fonts/hoosier-daddy","https://fonts.adobe.com/fonts/hotel","https://fonts.adobe.com/fonts/hothouse","https://fonts.adobe.com/fonts/houschka-pro","https://fonts.adobe.com/fonts/houschka-rounded","https://fonts.adobe.com/fonts/house-of-cards","https://fonts.adobe.com/fonts/hoverunit","https://fonts.adobe.com/fonts/ht-neon","https://fonts.adobe.com/fonts/hucklebuckjf","https://fonts.adobe.com/fonts/hummingbird","https://fonts.adobe.com/fonts/hvd-bodedo","https://fonts.adobe.com/fonts/hvd-comic-serif","https://fonts.adobe.com/fonts/hvd-edding-780","https://fonts.adobe.com/fonts/hvd-poster-clean","https://fonts.adobe.com/fonts/hvd-rowdy","https://fonts.adobe.com/fonts/hvd-steinzeit","https://fonts.adobe.com/fonts/hwt-aetna","https://fonts.adobe.com/fonts/hwt-american","https://fonts.adobe.com/fonts/hwt-antique-tuscan-9","https://fonts.adobe.com/fonts/hwt-arabesque","https://fonts.adobe.com/fonts/hwt-archimedes-pro","https://fonts.adobe.com/fonts/hwt-artz","https://fonts.adobe.com/fonts/hwt-bon-air","https://fonts.adobe.com/fonts/hwt-borders-one","https://fonts.adobe.com/fonts/hwt-brylski","https://fonts.adobe.com/fonts/hwt-bulletin-script","https://fonts.adobe.com/fonts/hwt-catchwords","https://fonts.adobe.com/fonts/hwt-geometric","https://fonts.adobe.com/fonts/hwt-gothic-round","https://fonts.adobe.com/fonts/hwt-lustig-elements","https://fonts.adobe.com/fonts/hwt-mardell","https://fonts.adobe.com/fonts/hwt-republic-gothic","https://fonts.adobe.com/fonts/hwt-roman-extended","https://fonts.adobe.com/fonts/hwt-slab","https://fonts.adobe.com/fonts/hwt-star-ornaments","https://fonts.adobe.com/fonts/hwt-tuscan-extended","https://fonts.adobe.com/fonts/hwt-unit-gothic","https://fonts.adobe.com/fonts/hwt-vanlanen","https://fonts.adobe.com/fonts/hydrophilia","https://fonts.adobe.com/fonts/hypatia-sans","https://fonts.adobe.com/fonts/hypocrite","https://fonts.adobe.com/fonts/ibm-plex-arabic","https://fonts.adobe.com/fonts/ibm-plex-devanagari","https://fonts.adobe.com/fonts/ibm-plex-mono","https://fonts.adobe.com/fonts/ibm-plex-sans","https://fonts.adobe.com/fonts/ibm-plex-sans-hebrew","https://fonts.adobe.com/fonts/ibm-plex-sans-thai-looped","https://fonts.adobe.com/fonts/ibm-plex-serif","https://fonts.adobe.com/fonts/ibm-plex-thai","https://fonts.adobe.com/fonts/im-fell-double-pica","https://fonts.adobe.com/fonts/im-fell-dw-pica","https://fonts.adobe.com/fonts/im-fell-english","https://fonts.adobe.com/fonts/im-fell-french-canon","https://fonts.adobe.com/fonts/im-fell-great-primer","https://fonts.adobe.com/fonts/imaginaryfriend-bb","https://fonts.adobe.com/fonts/immi-five-o-five","https://fonts.adobe.com/fonts/imperial-urw","https://fonts.adobe.com/fonts/impetus","https://fonts.adobe.com/fonts/indie-flower","https://fonts.adobe.com/fonts/industry","https://fonts.adobe.com/fonts/industry-inc","https://fonts.adobe.com/fonts/informa","https://fonts.adobe.com/fonts/ingeborg","https://fonts.adobe.com/fonts/ingra","https://fonts.adobe.com/fonts/input-mono","https://fonts.adobe.com/fonts/input-sans","https://fonts.adobe.com/fonts/input-serif","https://fonts.adobe.com/fonts/interface","https://fonts.adobe.com/fonts/interstate","https://fonts.adobe.com/fonts/interstate-mono","https://fonts.adobe.com/fonts/interstate-pi","https://fonts.adobe.com/fonts/ironstrike","https://fonts.adobe.com/fonts/ironwood","https://fonts.adobe.com/fonts/iskra","https://fonts.adobe.com/fonts/isonorm","https://fonts.adobe.com/fonts/itc-american-typewriter","https://fonts.adobe.com/fonts/itc-avant-garde-gothic","https://fonts.adobe.com/fonts/itc-benguiat","https://fonts.adobe.com/fonts/itc-fenice","https://fonts.adobe.com/fonts/itc-flora","https://fonts.adobe.com/fonts/itc-franklin-gothic","https://fonts.adobe.com/fonts/itc-galliard","https://fonts.adobe.com/fonts/itc-giovanni","https://fonts.adobe.com/fonts/itc-officina-sans","https://fonts.adobe.com/fonts/itc-slimbach","https://fonts.adobe.com/fonts/itc-zapf-international","https://fonts.adobe.com/fonts/ivy-journal","https://fonts.adobe.com/fonts/ivy-style-sans","https://fonts.adobe.com/fonts/ivy-style-tw","https://fonts.adobe.com/fonts/ivymode","https://fonts.adobe.com/fonts/ivypresto-display","https://fonts.adobe.com/fonts/ivypresto-headline","https://fonts.adobe.com/fonts/ivypresto-text","https://fonts.adobe.com/fonts/jaf-bernini","https://fonts.adobe.com/fonts/jaf-domus","https://fonts.adobe.com/fonts/jaf-domus-titling","https://fonts.adobe.com/fonts/jaf-facit","https://fonts.adobe.com/fonts/jaf-herb","https://fonts.adobe.com/fonts/jaf-johannes","https://fonts.adobe.com/fonts/jaf-lapture","https://fonts.adobe.com/fonts/jaf-mashine","https://fonts.adobe.com/fonts/jaf-peacock","https://fonts.adobe.com/fonts/jaf-zalamander","https://fonts.adobe.com/fonts/jakob","https://fonts.adobe.com/fonts/jana-thork","https://fonts.adobe.com/fonts/jay-gothic-urw","https://fonts.adobe.com/fonts/jeanne-moderno","https://fonts.adobe.com/fonts/jeff-script","https://fonts.adobe.com/fonts/jesaya","https://fonts.adobe.com/fonts/jinky","https://fonts.adobe.com/fonts/joanna-nova","https://fonts.adobe.com/fonts/joanna-sans-nova","https://fonts.adobe.com/fonts/johndoe","https://fonts.adobe.com/fonts/joost","https://fonts.adobe.com/fonts/josefin-sans","https://fonts.adobe.com/fonts/josefin-slab","https://fonts.adobe.com/fonts/journal","https://fonts.adobe.com/fonts/jubilat","https://fonts.adobe.com/fonts/jumble","https://fonts.adobe.com/fonts/junegull","https://fonts.adobe.com/fonts/juniper","https://fonts.adobe.com/fonts/justus","https://fonts.adobe.com/fonts/kade","https://fonts.adobe.com/fonts/kadwa","https://fonts.adobe.com/fonts/kaffeesatz","https://fonts.adobe.com/fonts/kallisto","https://fonts.adobe.com/fonts/kandal","https://fonts.adobe.com/fonts/kandin","https://fonts.adobe.com/fonts/kaneda-gothic","https://fonts.adobe.com/fonts/kanit","https://fonts.adobe.com/fonts/kapelka-new","https://fonts.adobe.com/fonts/kari","https://fonts.adobe.com/fonts/karmina","https://fonts.adobe.com/fonts/karmina-sans","https://fonts.adobe.com/fonts/karumbi","https://fonts.adobe.com/fonts/katarine","https://fonts.adobe.com/fonts/kautiva-pro","https://fonts.adobe.com/fonts/kazimir","https://fonts.adobe.com/fonts/kazimir-text","https://fonts.adobe.com/fonts/keedy-sans","https://fonts.adobe.com/fonts/kegger","https://fonts.adobe.com/fonts/kelvingrove","https://fonts.adobe.com/fonts/kepler","https://fonts.adobe.com/fonts/keraleeyam","https://fonts.adobe.com/fonts/kestrel-script","https://fonts.adobe.com/fonts/kewl-script","https://fonts.adobe.com/fonts/khula","https://fonts.adobe.com/fonts/kinescope","https://fonts.adobe.com/fonts/kinesis","https://fonts.adobe.com/fonts/kings-caslon","https://fonts.adobe.com/fonts/kiro","https://fonts.adobe.com/fonts/kobenhavn","https://fonts.adobe.com/fonts/kobenhavn-c","https://fonts.adobe.com/fonts/kobenhavn-c-stencil","https://fonts.adobe.com/fonts/kobenhavn-cs","https://fonts.adobe.com/fonts/kobenhavn-sans","https://fonts.adobe.com/fonts/kobenhavn-sans-stencil","https://fonts.adobe.com/fonts/kobenhavn-stencil","https://fonts.adobe.com/fonts/komet","https://fonts.adobe.com/fonts/komu","https://fonts.adobe.com/fonts/kon-tiki-aloha-jf","https://fonts.adobe.com/fonts/kon-tiki-lounge-jf","https://fonts.adobe.com/fonts/kopius","https://fonts.adobe.com/fonts/korolev","https://fonts.adobe.com/fonts/kremlin","https://fonts.adobe.com/fonts/krete","https://fonts.adobe.com/fonts/krok","https://fonts.adobe.com/fonts/kulturista","https://fonts.adobe.com/fonts/kumlien","https://fonts.adobe.com/fonts/kyrial","https://fonts.adobe.com/fonts/laca","https://fonts.adobe.com/fonts/laca-text","https://fonts.adobe.com/fonts/lady-dodo","https://fonts.adobe.com/fonts/lakeside","https://fonts.adobe.com/fonts/lamar-pen","https://fonts.adobe.com/fonts/landa","https://fonts.adobe.com/fonts/larabiefont","https://fonts.adobe.com/fonts/laski-sans","https://fonts.adobe.com/fonts/laski-slab","https://fonts.adobe.com/fonts/latex","https://fonts.adobe.com/fonts/latienne","https://fonts.adobe.com/fonts/latinaires","https://fonts.adobe.com/fonts/latino-urw","https://fonts.adobe.com/fonts/lato","https://fonts.adobe.com/fonts/lavigne","https://fonts.adobe.com/fonts/le-havre","https://fonts.adobe.com/fonts/le-monde-courrier","https://fonts.adobe.com/fonts/le-monde-journal","https://fonts.adobe.com/fonts/le-monde-livre","https://fonts.adobe.com/fonts/le-monde-livre-classic","https://fonts.adobe.com/fonts/le-monde-sans","https://fonts.adobe.com/fonts/league-gothic","https://fonts.adobe.com/fonts/leander-script","https://fonts.adobe.com/fonts/learning-curve","https://fonts.adobe.com/fonts/leather","https://fonts.adobe.com/fonts/legitima","https://fonts.adobe.com/fonts/leksa","https://fonts.adobe.com/fonts/leksa-sans","https://fonts.adobe.com/fonts/lemance","https://fonts.adobe.com/fonts/lemongrass","https://fonts.adobe.com/fonts/leo","https://fonts.adobe.com/fonts/letter-gothic","https://fonts.adobe.com/fonts/lexia","https://fonts.adobe.com/fonts/lexia-mono","https://fonts.adobe.com/fonts/lft-etica","https://fonts.adobe.com/fonts/lft-etica-mono","https://fonts.adobe.com/fonts/lft-iro-sans","https://fonts.adobe.com/fonts/liam","https://fonts.adobe.com/fonts/liana","https://fonts.adobe.com/fonts/liberation-sans","https://fonts.adobe.com/fonts/liberation-serif","https://fonts.adobe.com/fonts/libertad","https://fonts.adobe.com/fonts/liberteen","https://fonts.adobe.com/fonts/libre-franklin","https://fonts.adobe.com/fonts/liebedoni","https://fonts.adobe.com/fonts/liebeerika","https://fonts.adobe.com/fonts/liebegerda","https://fonts.adobe.com/fonts/lieberuth","https://fonts.adobe.com/fonts/ligurino","https://fonts.adobe.com/fonts/linden-hill","https://fonts.adobe.com/fonts/linotype-didot","https://fonts.adobe.com/fonts/lint-mccree","https://fonts.adobe.com/fonts/lipa-agate","https://fonts.adobe.com/fonts/liquorstore","https://fonts.adobe.com/fonts/lisbeth","https://fonts.adobe.com/fonts/litania","https://fonts.adobe.com/fonts/lithos","https://fonts.adobe.com/fonts/livory","https://fonts.adobe.com/fonts/liza","https://fonts.adobe.com/fonts/lo-res","https://fonts.adobe.com/fonts/look-script","https://fonts.adobe.com/fonts/lora","https://fonts.adobe.com/fonts/lorimer-no-2","https://fonts.adobe.com/fonts/los-feliz","https://fonts.adobe.com/fonts/loslana-niu-pro","https://fonts.adobe.com/fonts/lourdes","https://fonts.adobe.com/fonts/louvette-banner","https://fonts.adobe.com/fonts/louvette-deck","https://fonts.adobe.com/fonts/louvette-display","https://fonts.adobe.com/fonts/louvette-text","https://fonts.adobe.com/fonts/ltc-bodoni-175","https://fonts.adobe.com/fonts/ltc-broadway","https://fonts.adobe.com/fonts/ltc-caslon-pro","https://fonts.adobe.com/fonts/ltc-globe-gothic","https://fonts.adobe.com/fonts/ltc-goudy-oldstyle-pro","https://fonts.adobe.com/fonts/ltc-goudy-ornate","https://fonts.adobe.com/fonts/ltc-hess-monoblack","https://fonts.adobe.com/fonts/ltc-italian-old-style","https://fonts.adobe.com/fonts/ltc-kennerley","https://fonts.adobe.com/fonts/ltc-pabst-oldstyle","https://fonts.adobe.com/fonts/ltc-squareface","https://fonts.adobe.com/fonts/luminance","https://fonts.adobe.com/fonts/lunatix","https://fonts.adobe.com/fonts/lush","https://fonts.adobe.com/fonts/lust","https://fonts.adobe.com/fonts/lust-script","https://fonts.adobe.com/fonts/luxus-brut","https://fonts.adobe.com/fonts/luxus-brut-sparkling","https://fonts.adobe.com/fonts/lynda","https://fonts.adobe.com/fonts/macha","https://fonts.adobe.com/fonts/macho","https://fonts.adobe.com/fonts/machomodular","https://fonts.adobe.com/fonts/madawaska","https://fonts.adobe.com/fonts/madre-script","https://fonts.adobe.com/fonts/madrone","https://fonts.adobe.com/fonts/maecenas","https://fonts.adobe.com/fonts/magallanes","https://fonts.adobe.com/fonts/magasin","https://fonts.adobe.com/fonts/magion","https://fonts.adobe.com/fonts/magistral","https://fonts.adobe.com/fonts/magneta","https://fonts.adobe.com/fonts/magneto","https://fonts.adobe.com/fonts/magpie","https://fonts.adobe.com/fonts/mahalia","https://fonts.adobe.com/fonts/maiola","https://fonts.adobe.com/fonts/malaga","https://fonts.adobe.com/fonts/mama-script","https://fonts.adobe.com/fonts/mandevilla","https://fonts.adobe.com/fonts/mandrel","https://fonts.adobe.com/fonts/manicotti","https://fonts.adobe.com/fonts/manjari","https://fonts.adobe.com/fonts/manometer","https://fonts.adobe.com/fonts/manometer-sans","https://fonts.adobe.com/fonts/manteiga-gorda","https://fonts.adobe.com/fonts/maple","https://fonts.adobe.com/fonts/marcia","https://fonts.adobe.com/fonts/marco","https://fonts.adobe.com/fonts/marshmallow-positype","https://fonts.adobe.com/fonts/marvin","https://fonts.adobe.com/fonts/maryam","https://fonts.adobe.com/fonts/marydale","https://fonts.adobe.com/fonts/mason-sans","https://fonts.adobe.com/fonts/mason-serif","https://fonts.adobe.com/fonts/masqualero","https://fonts.adobe.com/fonts/mati","https://fonts.adobe.com/fonts/matrix-ii","https://fonts.adobe.com/fonts/mattb","https://fonts.adobe.com/fonts/mauritius","https://fonts.adobe.com/fonts/maxular","https://fonts.adobe.com/fonts/mayence","https://fonts.adobe.com/fonts/meatball","https://fonts.adobe.com/fonts/meera","https://fonts.adobe.com/fonts/megrim","https://fonts.adobe.com/fonts/meloche","https://fonts.adobe.com/fonts/memimas-pro","https://fonts.adobe.com/fonts/memoriam","https://fonts.adobe.com/fonts/mencken","https://fonts.adobe.com/fonts/menco","https://fonts.adobe.com/fonts/meno-banner","https://fonts.adobe.com/fonts/meno-display","https://fonts.adobe.com/fonts/meno-text","https://fonts.adobe.com/fonts/mentone","https://fonts.adobe.com/fonts/merel","https://fonts.adobe.com/fonts/merengue-script","https://fonts.adobe.com/fonts/merriweather","https://fonts.adobe.com/fonts/mesquite","https://fonts.adobe.com/fonts/metalista","https://fonts.adobe.com/fonts/metallophile-sp8","https://fonts.adobe.com/fonts/metronic-slab","https://fonts.adobe.com/fonts/mezz","https://fonts.adobe.com/fonts/mic-32-new","https://fonts.adobe.com/fonts/might-makes-right-bb","https://fonts.adobe.com/fonts/mighty-slab","https://fonts.adobe.com/fonts/milibus","https://fonts.adobe.com/fonts/milk-script","https://fonts.adobe.com/fonts/milka","https://fonts.adobe.com/fonts/millesime","https://fonts.adobe.com/fonts/millettre","https://fonts.adobe.com/fonts/milonguita","https://fonts.adobe.com/fonts/mina","https://fonts.adobe.com/fonts/minerva-modern","https://fonts.adobe.com/fonts/mingler","https://fonts.adobe.com/fonts/minion","https://fonts.adobe.com/fonts/minion-3","https://fonts.adobe.com/fonts/minion-3-caption","https://fonts.adobe.com/fonts/minion-3-display","https://fonts.adobe.com/fonts/minion-3-subhead","https://fonts.adobe.com/fonts/ministry","https://fonts.adobe.com/fonts/mislab","https://fonts.adobe.com/fonts/missionary","https://fonts.adobe.com/fonts/mitigate","https://fonts.adobe.com/fonts/mittwoch","https://fonts.adobe.com/fonts/mobley-sans","https://fonts.adobe.com/fonts/mobley-sans-condensed","https://fonts.adobe.com/fonts/mobley-serif","https://fonts.adobe.com/fonts/mobley-serif-condensed","https://fonts.adobe.com/fonts/moby","https://fonts.adobe.com/fonts/modesto","https://fonts.adobe.com/fonts/modish","https://fonts.adobe.com/fonts/modula","https://fonts.adobe.com/fonts/modula-round","https://fonts.adobe.com/fonts/mojito","https://fonts.adobe.com/fonts/mokoko","https://fonts.adobe.com/fonts/molto","https://fonts.adobe.com/fonts/monarcha","https://fonts.adobe.com/fonts/mongoose","https://fonts.adobe.com/fonts/mono45-headline","https://fonts.adobe.com/fonts/monotalic","https://fonts.adobe.com/fonts/monotype-grotesque","https://fonts.adobe.com/fonts/monotype-modern-display","https://fonts.adobe.com/fonts/monsal-gothic","https://fonts.adobe.com/fonts/montag","https://fonts.adobe.com/fonts/montana","https://fonts.adobe.com/fonts/montserrat","https://fonts.adobe.com/fonts/moret","https://fonts.adobe.com/fonts/mortise","https://fonts.adobe.com/fonts/mostra-nuova","https://fonts.adobe.com/fonts/motion","https://fonts.adobe.com/fonts/motiva-sans","https://fonts.adobe.com/fonts/motor","https://fonts.adobe.com/fonts/mr-darcy","https://fonts.adobe.com/fonts/mr-eaves-sans","https://fonts.adobe.com/fonts/mr-eaves-xl","https://fonts.adobe.com/fonts/mrs-eaves","https://fonts.adobe.com/fonts/mrs-eaves-xl","https://fonts.adobe.com/fonts/mufferaw","https://fonts.adobe.com/fonts/muffin","https://fonts.adobe.com/fonts/muli","https://fonts.adobe.com/fonts/multi-display","https://fonts.adobe.com/fonts/multi-text","https://fonts.adobe.com/fonts/muscle","https://fonts.adobe.com/fonts/museo","https://fonts.adobe.com/fonts/museo-sans","https://fonts.adobe.com/fonts/museo-slab","https://fonts.adobe.com/fonts/mvb-aunt-mildred","https://fonts.adobe.com/fonts/mvb-bossa-nova","https://fonts.adobe.com/fonts/mvb-bovine","https://fonts.adobe.com/fonts/mvb-cafe-mimi","https://fonts.adobe.com/fonts/mvb-calliope","https://fonts.adobe.com/fonts/mvb-celestia-antiqua","https://fonts.adobe.com/fonts/mvb-chanson-damour","https://fonts.adobe.com/fonts/mvb-diazo","https://fonts.adobe.com/fonts/mvb-dovetail","https://fonts.adobe.com/fonts/mvb-embarcadero-pro","https://fonts.adobe.com/fonts/mvb-embarcadero-pro-condensed","https://fonts.adobe.com/fonts/mvb-emmascript","https://fonts.adobe.com/fonts/mvb-fantabular","https://fonts.adobe.com/fonts/mvb-fantabular-sans","https://fonts.adobe.com/fonts/mvb-grenadine","https://fonts.adobe.com/fonts/mvb-greymantle","https://fonts.adobe.com/fonts/mvb-gryphius","https://fonts.adobe.com/fonts/mvb-hotsy-totsy","https://fonts.adobe.com/fonts/mvb-magnesium","https://fonts.adobe.com/fonts/mvb-magnolia","https://fonts.adobe.com/fonts/mvb-margin","https://fonts.adobe.com/fonts/mvb-mascot","https://fonts.adobe.com/fonts/mv-peccadillo","https://fonts.adobe.com/fonts/mvb-pedestria","https://fonts.adobe.com/fonts/mvb-pedestria-pict","https://fonts.adobe.com/fonts/mvb-pinecone","https://fonts.adobe.com/fonts/mvb-sacre-bleu","https://fonts.adobe.com/fonts/mvb-sirenne","https://fonts.adobe.com/fonts/mvb-solano-gothic-pro","https://fonts.adobe.com/fonts/mvb-solitaire-pro","https://fonts.adobe.com/fonts/mvb-verdigris-pro","https://fonts.adobe.com/fonts/myriad","https://fonts.adobe.com/fonts/myriad-arabic","https://fonts.adobe.com/fonts/myriad-bengali","https://fonts.adobe.com/fonts/myriad-devanagari","https://fonts.adobe.com/fonts/myriad-hebrew","https://fonts.adobe.com/fonts/myriad-wild","https://fonts.adobe.com/fonts/mythos","https://fonts.adobe.com/fonts/nagomi","https://fonts.adobe.com/fonts/nanum-brush-script","https://fonts.adobe.com/fonts/nanum-gothic","https://fonts.adobe.com/fonts/nanum-gothic-coding","https://fonts.adobe.com/fonts/nanum-myeongjo","https://fonts.adobe.com/fonts/nanum-pen-script","https://fonts.adobe.com/fonts/naresuan","https://fonts.adobe.com/fonts/narly","https://fonts.adobe.com/fonts/nasalization","https://fonts.adobe.com/fonts/nassim","https://fonts.adobe.com/fonts/natalya","https://fonts.adobe.com/fonts/natura","https://fonts.adobe.com/fonts/nautica","https://fonts.adobe.com/fonts/navigo","https://fonts.adobe.com/fonts/nazare","https://fonts.adobe.com/fonts/neil-bold","https://fonts.adobe.com/fonts/nelson","https://fonts.adobe.com/fonts/neo-sans","https://fonts.adobe.com/fonts/neonoir","https://fonts.adobe.com/fonts/neonstream","https://fonts.adobe.com/fonts/neplus","https://fonts.adobe.com/fonts/neue-aachen","https://fonts.adobe.com/fonts/neue-haas-grotesk","https://fonts.adobe.com/fonts/neue-haas-unica","https://fonts.adobe.com/fonts/neue-kabel","https://fonts.adobe.com/fonts/neuropol","https://fonts.adobe.com/fonts/neusa-next","https://fonts.adobe.com/fonts/neuzeit-grotesk","https://fonts.adobe.com/fonts/neuzon","https://fonts.adobe.com/fonts/new-atten","https://fonts.adobe.com/fonts/new-atten-round","https://fonts.adobe.com/fonts/farm-new","https://fonts.adobe.com/fonts/frank-new","https://fonts.adobe.com/fonts/new-hero","https://fonts.adobe.com/fonts/new-reason","https://fonts.adobe.com/fonts/new-rubrik","https://fonts.adobe.com/fonts/new-rubrik-edge","https://fonts.adobe.com/fonts/zen-new","https://fonts.adobe.com/fonts/newbery-sans","https://fonts.adobe.com/fonts/newcomen","https://fonts.adobe.com/fonts/news-gothic","https://fonts.adobe.com/fonts/niagara","https://fonts.adobe.com/fonts/nimbus-roman","https://fonts.adobe.com/fonts/nimbus-sans","https://fonts.adobe.com/fonts/nimbus-sans-devanagari","https://fonts.adobe.com/fonts/niveau-grotesk","https://fonts.adobe.com/fonts/noam-text","https://fonts.adobe.com/fonts/nobel","https://fonts.adobe.com/fonts/nocturne-serif","https://fonts.adobe.com/fonts/noort","https://fonts.adobe.com/fonts/notcaslon","https://fonts.adobe.com/fonts/nothing","https://fonts.adobe.com/fonts/noto-sans","https://fonts.adobe.com/fonts/noto-sans-cjk-kr","https://fonts.adobe.com/fonts/noto-sans-display","https://fonts.adobe.com/fonts/noto-serif","https://fonts.adobe.com/fonts/nouvelle-vague","https://fonts.adobe.com/fonts/nove","https://fonts.adobe.com/fonts/novecento-carved","https://fonts.adobe.com/fonts/novecento-sans","https://fonts.adobe.com/fonts/novecento-slab","https://fonts.adobe.com/fonts/novel","https://fonts.adobe.com/fonts/novel-display","https://fonts.adobe.com/fonts/novel-mono","https://fonts.adobe.com/fonts/novel-sans","https://fonts.adobe.com/fonts/novel-sans-hair","https://fonts.adobe.com/fonts/nubb","https://fonts.adobe.com/fonts/nudista","https://fonts.adobe.com/fonts/nueva","https://fonts.adobe.com/fonts/number-five","https://fonts.adobe.com/fonts/nunito","https://fonts.adobe.com/fonts/nunito-sans","https://fonts.adobe.com/fonts/nutcracker","https://fonts.adobe.com/fonts/objektiv","https://fonts.adobe.com/fonts/obliqua-sans","https://fonts.adobe.com/fonts/oblong","https://fonts.adobe.com/fonts/obvia","https://fonts.adobe.com/fonts/obviously","https://fonts.adobe.com/fonts/ocr-a","https://fonts.adobe.com/fonts/ocr-b","https://fonts.adobe.com/fonts/octin","https://fonts.adobe.com/fonts/octynaz","https://fonts.adobe.com/fonts/ode","https://fonts.adobe.com/fonts/odile","https://fonts.adobe.com/fonts/odisseia","https://fonts.adobe.com/fonts/ofl-sorts-mill-goudy","https://fonts.adobe.com/fonts/ohno-blazeface","https://fonts.adobe.com/fonts/ohno-fatface","https://fonts.adobe.com/fonts/old-man-eloquent","https://fonts.adobe.com/fonts/old-standard","https://fonts.adobe.com/fonts/olicana","https://fonts.adobe.com/fonts/olidia","https://fonts.adobe.com/fonts/omnes","https://fonts.adobe.com/fonts/omnes-arabic","https://fonts.adobe.com/fonts/omnes-cyrillic","https://fonts.adobe.com/fonts/omnium","https://fonts.adobe.com/fonts/omnium-tagline","https://fonts.adobe.com/fonts/opake","https://fonts.adobe.com/fonts/open-sans","https://fonts.adobe.com/fonts/operetta","https://fonts.adobe.com/fonts/orator","https://fonts.adobe.com/fonts/orbe","https://fonts.adobe.com/fonts/orbitron","https://fonts.adobe.com/fonts/orgovan","https://fonts.adobe.com/fonts/origin-super-condensed","https://fonts.adobe.com/fonts/origins","https://fonts.adobe.com/fonts/orpheus","https://fonts.adobe.com/fonts/oscine","https://fonts.adobe.com/fonts/oskar","https://fonts.adobe.com/fonts/oskar-inline","https://fonts.adobe.com/fonts/oswald","https://fonts.adobe.com/fonts/ottomat","https://fonts.adobe.com/fonts/outwest","https://fonts.adobe.com/fonts/oxtail","https://fonts.adobe.com/fonts/oxygen","https://fonts.adobe.com/fonts/p22-aragon","https://fonts.adobe.com/fonts/p22-arts-and-crafts","https://fonts.adobe.com/fonts/p22-brass-script-pro","https://fonts.adobe.com/fonts/p22-cezanne","https://fonts.adobe.com/fonts/p22-dearest","https://fonts.adobe.com/fonts/p22-flw-exhibition","https://fonts.adobe.com/fonts/p22-flw-midway","https://fonts.adobe.com/fonts/p22-flw-terracotta","https://fonts.adobe.com/fonts/p22-franklin-caslon","https://fonts.adobe.com/fonts/p22-hopper","https://fonts.adobe.com/fonts/p22-klauss-kursiv","https://fonts.adobe.com/fonts/p22-lucilee-pro","https://fonts.adobe.com/fonts/p22-mackinac","https://fonts.adobe.com/fonts/p22-marcel","https://fonts.adobe.com/fonts/p22-muschamp-pro","https://fonts.adobe.com/fonts/p22-pooper-black","https://fonts.adobe.com/fonts/p22-pouty-pro","https://fonts.adobe.com/fonts/p22-sneaky-pro","https://fonts.adobe.com/fonts/p22-stanyan","https://fonts.adobe.com/fonts/p22-stickley","https://fonts.adobe.com/fonts/p22-sweepy-pro","https://fonts.adobe.com/fonts/p22-underground","https://fonts.adobe.com/fonts/p22-zaner","https://fonts.adobe.com/fonts/pacifico","https://fonts.adobe.com/fonts/paganini","https://fonts.adobe.com/fonts/pakenham","https://fonts.adobe.com/fonts/paralucent","https://fonts.adobe.com/fonts/parisine","https://fonts.adobe.com/fonts/parisine-office","https://fonts.adobe.com/fonts/parisine-plus","https://fonts.adobe.com/fonts/park-lane","https://fonts.adobe.com/fonts/parkside","https://fonts.adobe.com/fonts/parkway","https://fonts.adobe.com/fonts/parppim","https://fonts.adobe.com/fonts/pauline","https://fonts.adobe.com/fonts/peachy-keen-jf","https://fonts.adobe.com/fonts/pelago","https://fonts.adobe.com/fonts/pepperwood","https://fonts.adobe.com/fonts/peregroy-jf","https://fonts.adobe.com/fonts/permanent-marker","https://fonts.adobe.com/fonts/permanent-marker-pro","https://fonts.adobe.com/fonts/pesto-fresco","https://fonts.adobe.com/fonts/petala","https://fonts.adobe.com/fonts/petersburg","https://fonts.adobe.com/fonts/philosopher","https://fonts.adobe.com/fonts/phoreus-cherokee","https://fonts.adobe.com/fonts/piepie","https://fonts.adobe.com/fonts/pika-ultra-script","https://fonts.adobe.com/fonts/pilar","https://fonts.adobe.com/fonts/pill-gothic","https://fonts.adobe.com/fonts/pilsner","https://fonts.adobe.com/fonts/pinot-grigio-modern","https://fonts.adobe.com/fonts/pirulen","https://fonts.adobe.com/fonts/pitch","https://fonts.adobe.com/fonts/pitchfork","https://fonts.adobe.com/fonts/plantin","https://fonts.adobe.com/fonts/platelet","https://fonts.adobe.com/fonts/plau","https://fonts.adobe.com/fonts/playfair","https://fonts.adobe.com/fonts/plume","https://fonts.adobe.com/fonts/plumeroscript","https://fonts.adobe.com/fonts/pmn-caecilia","https://fonts.adobe.com/fonts/pmn-caecilia-sans","https://fonts.adobe.com/fonts/poetica","https://fonts.adobe.com/fonts/poiret-one","https://fonts.adobe.com/fonts/poleno","https://fonts.adobe.com/fonts/politica","https://fonts.adobe.com/fonts/pollen","https://fonts.adobe.com/fonts/ponderosa-std","https://fonts.adobe.com/fonts/poplar","https://fonts.adobe.com/fonts/poppi","https://fonts.adobe.com/fonts/poppins","https://fonts.adobe.com/fonts/portada","https://fonts.adobe.com/fonts/postino","https://fonts.adobe.com/fonts/powerlift","https://fonts.adobe.com/fonts/pragmatapro-fraktur","https://fonts.adobe.com/fonts/pragmatica","https://fonts.adobe.com/fonts/pragmatica-slabserif","https://fonts.adobe.com/fonts/praxis-next","https://fonts.adobe.com/fonts/prenton","https://fonts.adobe.com/fonts/presicav","https://fonts.adobe.com/fonts/presley-slab","https://fonts.adobe.com/fonts/pressio","https://fonts.adobe.com/fonts/pressio-compressed","https://fonts.adobe.com/fonts/pressio-condensed","https://fonts.adobe.com/fonts/pressio-x-compressed","https://fonts.adobe.com/fonts/prestige-elite","https://fonts.adobe.com/fonts/primot","https://fonts.adobe.com/fonts/printf","https://fonts.adobe.com/fonts/priori-acute","https://fonts.adobe.com/fonts/priori-sans","https://fonts.adobe.com/fonts/priori-serif","https://fonts.adobe.com/fonts/private-sans","https://fonts.adobe.com/fonts/productus","https://fonts.adobe.com/fonts/professor","https://fonts.adobe.com/fonts/professor-minty","https://fonts.adobe.com/fonts/profile","https://fonts.adobe.com/fonts/proforma","https://fonts.adobe.com/fonts/program","https://fonts.adobe.com/fonts/prohibition","https://fonts.adobe.com/fonts/prometo","https://fonts.adobe.com/fonts/prosaic","https://fonts.adobe.com/fonts/protipo","https://fonts.adobe.com/fonts/proxima-nova","https://fonts.adobe.com/fonts/proxima-soft","https://fonts.adobe.com/fonts/ps-fournier","https://fonts.adobe.com/fonts/pt-mono","https://fonts.adobe.com/fonts/pt-sans","https://fonts.adobe.com/fonts/pt-sans-pro","https://fonts.adobe.com/fonts/pt-serif","https://fonts.adobe.com/fonts/pt-serif-pro","https://fonts.adobe.com/fonts/pulpo","https://fonts.adobe.com/fonts/pulpo-rust","https://fonts.adobe.com/fonts/pupcat","https://fonts.adobe.com/fonts/purista","https://fonts.adobe.com/fonts/quador","https://fonts.adobe.com/fonts/quador-display","https://fonts.adobe.com/fonts/quagmire","https://fonts.adobe.com/fonts/quake","https://fonts.adobe.com/fonts/quara","https://fonts.adobe.com/fonts/quasimoda","https://fonts.adobe.com/fonts/quatro","https://fonts.adobe.com/fonts/quatro-slab","https://fonts.adobe.com/fonts/questa","https://fonts.adobe.com/fonts/questa-grande","https://fonts.adobe.com/fonts/questa-sans","https://fonts.adobe.com/fonts/questa-slab","https://fonts.adobe.com/fonts/quiche-display","https://fonts.adobe.com/fonts/quiche-sans","https://fonts.adobe.com/fonts/quiche-text","https://fonts.adobe.com/fonts/quicksand","https://fonts.adobe.com/fonts/quiet-sans","https://fonts.adobe.com/fonts/quimby","https://fonts.adobe.com/fonts/quire-sans","https://fonts.adobe.com/fonts/quiroh","https://fonts.adobe.com/fonts/quita","https://fonts.adobe.com/fonts/raceway","https://fonts.adobe.com/fonts/rachana","https://fonts.adobe.com/fonts/rad","https://fonts.adobe.com/fonts/rajdhani","https://fonts.adobe.com/fonts/raleway","https://fonts.adobe.com/fonts/raleway-v20-deprecated","https://fonts.adobe.com/fonts/rama-gothic","https://fonts.adobe.com/fonts/rama-slab","https://fonts.adobe.com/fonts/rasa","https://fonts.adobe.com/fonts/ratio","https://fonts.adobe.com/fonts/ratio-modern","https://fonts.adobe.com/fonts/reagan","https://fonts.adobe.com/fonts/realist","https://fonts.adobe.com/fonts/recherche","https://fonts.adobe.com/fonts/reenie-beanie","https://fonts.adobe.com/fonts/refrigerator-deluxe","https://fonts.adobe.com/fonts/regulator-nova","https://fonts.adobe.com/fonts/reiner-script","https://fonts.adobe.com/fonts/reklame-script","https://fonts.adobe.com/fonts/relation","https://fonts.adobe.com/fonts/remedy","https://fonts.adobe.com/fonts/remora-sans","https://fonts.adobe.com/fonts/renata","https://fonts.adobe.com/fonts/report","https://fonts.adobe.com/fonts/report-school","https://fonts.adobe.com/fonts/republic","https://fonts.adobe.com/fonts/restore","https://fonts.adobe.com/fonts/retiro","https://fonts.adobe.com/fonts/revolution-gothic","https://fonts.adobe.com/fonts/rexlia","https://fonts.adobe.com/fonts/rialto-df","https://fonts.adobe.com/fonts/rieven-uncial","https://fonts.adobe.com/fonts/rift","https://fonts.adobe.com/fonts/rift-soft","https://fonts.adobe.com/fonts/rig-shaded","https://fonts.adobe.com/fonts/rig-solid","https://fonts.adobe.com/fonts/rigatoni","https://fonts.adobe.com/fonts/rigid-square","https://fonts.adobe.com/fonts/rinse","https://fonts.adobe.com/fonts/rival","https://fonts.adobe.com/fonts/rival-sans","https://fonts.adobe.com/fonts/rizado-script","https://fonts.adobe.com/fonts/roboto","https://fonts.adobe.com/fonts/roboto-slab","https://fonts.adobe.com/fonts/roc-grotesk","https://fonts.adobe.com/fonts/rochester-pro","https://fonts.adobe.com/fonts/rock-salt-pro","https://fonts.adobe.com/fonts/rocket","https://fonts.adobe.com/fonts/rockwell","https://fonts.adobe.com/fonts/rockwell-nova","https://fonts.adobe.com/fonts/rodchenko","https://fonts.adobe.com/fonts/rogliano","https://fonts.adobe.com/fonts/rogue-sans","https://fonts.adobe.com/fonts/rogue-serif","https://fonts.adobe.com/fonts/rokkitt","https://fonts.adobe.com/fonts/rollerscript","https://fonts.adobe.com/fonts/roma","https://fonts.adobe.com/fonts/ronnia","https://fonts.adobe.com/fonts/rooney","https://fonts.adobe.com/fonts/rooney-sans","https://fonts.adobe.com/fonts/ropa-mix","https://fonts.adobe.com/fonts/ropa-sans","https://fonts.adobe.com/fonts/ropa-soft","https://fonts.adobe.com/fonts/rosarian","https://fonts.adobe.com/fonts/rosario","https://fonts.adobe.com/fonts/rosella","https://fonts.adobe.com/fonts/rosewood","https://fonts.adobe.com/fonts/rubik","https://fonts.adobe.com/fonts/rucksack","https://fonts.adobe.com/fonts/rufina","https://fonts.adobe.com/fonts/rufina-stencil","https://fonts.adobe.com/fonts/rukou","https://fonts.adobe.com/fonts/rumba","https://fonts.adobe.com/fonts/runda","https://fonts.adobe.com/fonts/sabbath-black","https://fonts.adobe.com/fonts/saber","https://fonts.adobe.com/fonts/sabon","https://fonts.adobe.com/fonts/saffran","https://fonts.adobe.com/fonts/sail","https://fonts.adobe.com/fonts/salden","https://fonts.adobe.com/fonts/salsbury","https://fonts.adobe.com/fonts/salvation","https://fonts.adobe.com/fonts/samantha","https://fonts.adobe.com/fonts/san-rafael","https://fonts.adobe.com/fonts/santino","https://fonts.adobe.com/fonts/sanvito","https://fonts.adobe.com/fonts/sarah-script","https://fonts.adobe.com/fonts/sarina","https://fonts.adobe.com/fonts/satisfy","https://fonts.adobe.com/fonts/saucy-millionaire","https://fonts.adobe.com/fonts/sauna-pro","https://fonts.adobe.com/fonts/savanna-script","https://fonts.adobe.com/fonts/scarlet","https://fonts.adobe.com/fonts/scarlet-script","https://fonts.adobe.com/fonts/scarlet-wood","https://fonts.adobe.com/fonts/scheme","https://fonts.adobe.com/fonts/schnebel-sans","https://fonts.adobe.com/fonts/schnebel-sans-me","https://fonts.adobe.com/fonts/schoolbell-pro","https://fonts.adobe.com/fonts/schoolbook","https://fonts.adobe.com/fonts/schwager-sans","https://fonts.adobe.com/fonts/scriptorama-markdown-jf","https://fonts.adobe.com/fonts/scriptorama-tradeshow-jf","https://fonts.adobe.com/fonts/scrivano","https://fonts.adobe.com/fonts/seasoned-hostess","https://fonts.adobe.com/fonts/seaweed-script-pro","https://fonts.adobe.com/fonts/semplicita","https://fonts.adobe.com/fonts/senator","https://fonts.adobe.com/fonts/september","https://fonts.adobe.com/fonts/serenity","https://fonts.adobe.com/fonts/serifa","https://fonts.adobe.com/fonts/servus-slab","https://fonts.adobe.com/fonts/setimo","https://fonts.adobe.com/fonts/sewn","https://fonts.adobe.com/fonts/shabby-chic","https://fonts.adobe.com/fonts/shackleton","https://fonts.adobe.com/fonts/shadows-into-light","https://fonts.adobe.com/fonts/sharik-sans","https://fonts.adobe.com/fonts/sharktooth","https://fonts.adobe.com/fonts/sheepman","https://fonts.adobe.com/fonts/sheila","https://fonts.adobe.com/fonts/shelby","https://fonts.adobe.com/fonts/shimano","https://fonts.adobe.com/fonts/shiva","https://fonts.adobe.com/fonts/shlop","https://fonts.adobe.com/fonts/shogun","https://fonts.adobe.com/fonts/shrub","https://fonts.adobe.com/fonts/shuriken-boy","https://fonts.adobe.com/fonts/signo","https://fonts.adobe.com/fonts/silicone","https://fonts.adobe.com/fonts/silverstein","https://fonts.adobe.com/fonts/sinter","https://fonts.adobe.com/fonts/sirba","https://fonts.adobe.com/fonts/sirin-stencil","https://fonts.adobe.com/fonts/siruca","https://fonts.adobe.com/fonts/sister-frisky","https://fonts.adobe.com/fonts/six-hands","https://fonts.adobe.com/fonts/sketchnote","https://fonts.adobe.com/fonts/skippy-sharp","https://fonts.adobe.com/fonts/skolar","https://fonts.adobe.com/fonts/skolar-sans","https://fonts.adobe.com/fonts/slabo","https://fonts.adobe.com/fonts/slack-casual","https://fonts.adobe.com/fonts/sloop-script","https://fonts.adobe.com/fonts/smoothy","https://fonts.adobe.com/fonts/sneakers","https://fonts.adobe.com/fonts/sneakers-script","https://fonts.adobe.com/fonts/snicker","https://fonts.adobe.com/fonts/sniglet","https://fonts.adobe.com/fonts/soap","https://fonts.adobe.com/fonts/social-gothic","https://fonts.adobe.com/fonts/soda-script","https://fonts.adobe.com/fonts/sofachrome","https://fonts.adobe.com/fonts/sofia","https://fonts.adobe.com/fonts/sol","https://fonts.adobe.com/fonts/soleil","https://fonts.adobe.com/fonts/soleto","https://fonts.adobe.com/fonts/solex","https://fonts.adobe.com/fonts/solitas-serif","https://fonts.adobe.com/fonts/sommet","https://fonts.adobe.com/fonts/sommet-slab","https://fonts.adobe.com/fonts/sophisto","https://fonts.adobe.com/fonts/source-code-pro","https://fonts.adobe.com/fonts/source-han-sans-cjk-hong-kong","https://fonts.adobe.com/fonts/source-han-sans-cjk-korean","https://fonts.adobe.com/fonts/source-han-sans-cjk-simplified-chinese","https://fonts.adobe.com/fonts/source-han-sans-cjk-traditional-chinese","https://fonts.adobe.com/fonts/source-han-sans-hong-kong","https://fonts.adobe.com/fonts/source-han-sans-korean","https://fonts.adobe.com/fonts/source-han-sans-simplified-chinese","https://fonts.adobe.com/fonts/source-han-sans-traditional-chinese","https://fonts.adobe.com/fonts/source-han-serif-korean","https://fonts.adobe.com/fonts/source-han-serif-simplified-chinese","https://fonts.adobe.com/fonts/source-han-serif-traditional-chinese","https://fonts.adobe.com/fonts/source-sans","https://fonts.adobe.com/fonts/source-serif","https://fonts.adobe.com/fonts/sovba","https://fonts.adobe.com/fonts/spade","https://fonts.adobe.com/fonts/span","https://fonts.adobe.com/fonts/spartacus","https://fonts.adobe.com/fonts/spumante","https://fonts.adobe.com/fonts/stack","https://fonts.adobe.com/fonts/stalemate","https://fonts.adobe.com/fonts/stencil","https://fonts.adobe.com/fonts/stencil-creek","https://fonts.adobe.com/fonts/stenciletta","https://fonts.adobe.com/fonts/stereo","https://fonts.adobe.com/fonts/rtf-stern-pro","https://fonts.adobe.com/fonts/stevie-sans","https://fonts.adobe.com/fonts/stix","https://fonts.adobe.com/fonts/stolzl","https://fonts.adobe.com/fonts/story-tales","https://fonts.adobe.com/fonts/stratos","https://fonts.adobe.com/fonts/streamline","https://fonts.adobe.com/fonts/strenuous","https://fonts.adobe.com/fonts/stroudley","https://fonts.adobe.com/fonts/strumpf","https://fonts.adobe.com/fonts/stud","https://fonts.adobe.com/fonts/study","https://fonts.adobe.com/fonts/stymie","https://fonts.adobe.com/fonts/suave-script-pro","https://fonts.adobe.com/fonts/suburban","https://fonts.adobe.com/fonts/subway","https://fonts.adobe.com/fonts/sudestada","https://fonts.adobe.com/fonts/sui-generis","https://fonts.adobe.com/fonts/sukhumvit-dot","https://fonts.adobe.com/fonts/summa","https://fonts.adobe.com/fonts/sunflower","https://fonts.adobe.com/fonts/sunshine","https://fonts.adobe.com/fonts/superclarendon","https://fonts.adobe.com/fonts/supria-sans","https://fonts.adobe.com/fonts/surce-sns-missing-types","https://fonts.adobe.com/fonts/suruma","https://fonts.adobe.com/fonts/susan","https://fonts.adobe.com/fonts/sutro","https://fonts.adobe.com/fonts/sutturah","https://fonts.adobe.com/fonts/sweater-school","https://fonts.adobe.com/fonts/sweet-fancy-script","https://fonts.adobe.com/fonts/sweet-gothic","https://fonts.adobe.com/fonts/sweet-gothic-serif","https://fonts.adobe.com/fonts/sweet-sans-pro","https://fonts.adobe.com/fonts/sweet-square-pro","https://fonts.adobe.com/fonts/sweet-titling","https://fonts.adobe.com/fonts/sweet-upright-script","https://fonts.adobe.com/fonts/swing-king","https://fonts.adobe.com/fonts/swing-king-icons","https://fonts.adobe.com/fonts/swingdancer","https://fonts.adobe.com/fonts/swister","https://fonts.adobe.com/fonts/sybarite","https://fonts.adobe.com/fonts/synthemesc","https://fonts.adobe.com/fonts/synthese","https://fonts.adobe.com/fonts/sys","https://fonts.adobe.com/fonts/sysfalso","https://fonts.adobe.com/fonts/t26-carbon","https://fonts.adobe.com/fonts/tablet-gothic","https://fonts.adobe.com/fonts/taboo","https://fonts.adobe.com/fonts/tachyon","https://fonts.adobe.com/fonts/tacitus","https://fonts.adobe.com/fonts/talon","https://fonts.adobe.com/fonts/tamarillo-jf","https://fonts.adobe.com/fonts/tandelle","https://fonts.adobe.com/fonts/tangelo","https://fonts.adobe.com/fonts/tangerine","https://fonts.adobe.com/fonts/tangier","https://fonts.adobe.com/fonts/tangly","https://fonts.adobe.com/fonts/tannakone","https://fonts.adobe.com/fonts/tarzana","https://fonts.adobe.com/fonts/tasman","https://fonts.adobe.com/fonts/taurunum","https://fonts.adobe.com/fonts/taurunum-ferrum","https://fonts.adobe.com/fonts/teeshirt","https://fonts.adobe.com/fonts/teimer","https://fonts.adobe.com/fonts/tejuela","https://fonts.adobe.com/fonts/teko","https://fonts.adobe.com/fonts/tekton","https://fonts.adobe.com/fonts/temeraire","https://fonts.adobe.com/fonts/template-gothic","https://fonts.adobe.com/fonts/ten-oldstyle","https://fonts.adobe.com/fonts/tenby","https://fonts.adobe.com/fonts/tenez","https://fonts.adobe.com/fonts/tenon","https://fonts.adobe.com/fonts/tenso","https://fonts.adobe.com/fonts/tephra","https://fonts.adobe.com/fonts/terfens","https://fonts.adobe.com/fonts/termina","https://fonts.adobe.com/fonts/termtem","https://fonts.adobe.com/fonts/texas-hero","https://fonts.adobe.com/fonts/textbook-new","https://fonts.adobe.com/fonts/the-becker-gothics","https://fonts.adobe.com/fonts/tipoteca-series","https://fonts.adobe.com/fonts/thingbat","https://fonts.adobe.com/fonts/thonglor","https://fonts.adobe.com/fonts/thongterm","https://fonts.adobe.com/fonts/thunderhouse","https://fonts.adobe.com/fonts/tight","https://fonts.adobe.com/fonts/tilden-sans","https://fonts.adobe.com/fonts/timberline","https://fonts.adobe.com/fonts/tinos","https://fonts.adobe.com/fonts/titillium-web","https://fonts.adobe.com/fonts/titular","https://fonts.adobe.com/fonts/tomarik","https://fonts.adobe.com/fonts/tomarik-display","https://fonts.adobe.com/fonts/tondo","https://fonts.adobe.com/fonts/tornac","https://fonts.adobe.com/fonts/totally-glyphic","https://fonts.adobe.com/fonts/totally-gothic","https://fonts.adobe.com/fonts/trade-gothic-next","https://fonts.adobe.com/fonts/trailmade","https://fonts.adobe.com/fonts/trajan","https://fonts.adobe.com/fonts/trajan-color","https://fonts.adobe.com/fonts/trajan-sans","https://fonts.adobe.com/fonts/transat","https://fonts.adobe.com/fonts/transat-text","https://fonts.adobe.com/fonts/transmute","https://fonts.adobe.com/fonts/trasandina","https://fonts.adobe.com/fonts/trevor","https://fonts.adobe.com/fonts/tribute","https://fonts.adobe.com/fonts/trilby","https://fonts.adobe.com/fonts/triplex-sans","https://fonts.adobe.com/fonts/triplex-serif","https://fonts.adobe.com/fonts/tripper-pro","https://fonts.adobe.com/fonts/trump","https://fonts.adobe.com/fonts/turbinado","https://fonts.adobe.com/fonts/turnip","https://fonts.adobe.com/fonts/turnip-re","https://fonts.adobe.com/fonts/turquoise","https://fonts.adobe.com/fonts/tussilago","https://fonts.adobe.com/fonts/twentyfourninetyone","https://fonts.adobe.com/fonts/typeka","https://fonts.adobe.com/fonts/tzimmes","https://fonts.adobe.com/fonts/ubuntu","https://fonts.adobe.com/fonts/ubuntu-mono","https://fonts.adobe.com/fonts/ultra","https://fonts.adobe.com/fonts/unibody-8","https://fonts.adobe.com/fonts/unitext","https://fonts.adobe.com/fonts/univia-pro","https://fonts.adobe.com/fonts/uniwars","https://fonts.adobe.com/fonts/upgrade","https://fonts.adobe.com/fonts/uppercut-angle","https://fonts.adobe.com/fonts/urbana","https://fonts.adobe.com/fonts/urbane","https://fonts.adobe.com/fonts/urbane-adscript","https://fonts.adobe.com/fonts/urbane-rounded","https://fonts.adobe.com/fonts/uroob","https://fonts.adobe.com/fonts/urw-antiqua","https://fonts.adobe.com/fonts/urw-din","https://fonts.adobe.com/fonts/urw-form","https://fonts.adobe.com/fonts/usual","https://fonts.adobe.com/fonts/usurp","https://fonts.adobe.com/fonts/utile","https://fonts.adobe.com/fonts/utile-display","https://fonts.adobe.com/fonts/utopia","https://fonts.adobe.com/fonts/vaccine","https://fonts.adobe.com/fonts/vag-rundschrift-d","https://fonts.adobe.com/fonts/variex","https://fonts.adobe.com/fonts/vatican","https://fonts.adobe.com/fonts/vectora","https://fonts.adobe.com/fonts/vektra","https://fonts.adobe.com/fonts/vendetta","https://fonts.adobe.com/fonts/verveine","https://fonts.adobe.com/fonts/vibro","https://fonts.adobe.com/fonts/victorian-orchid","https://fonts.adobe.com/fonts/vidange","https://fonts.adobe.com/fonts/video","https://fonts.adobe.com/fonts/viktor-script","https://fonts.adobe.com/fonts/viktorie","https://fonts.adobe.com/fonts/vincente","https://fonts.adobe.com/fonts/vintage-deco","https://fonts.adobe.com/fonts/vinyl","https://fonts.adobe.com/fonts/virna","https://fonts.adobe.com/fonts/vista-sans","https://fonts.adobe.com/fonts/vista-slab","https://fonts.adobe.com/fonts/viva","https://fonts.adobe.com/fonts/vm74","https://fonts.adobe.com/fonts/volina","https://fonts.adobe.com/fonts/vollkorn","https://fonts.adobe.com/fonts/voltage","https://fonts.adobe.com/fonts/voluta-script","https://fonts.adobe.com/fonts/vortice","https://fonts.adobe.com/fonts/vox","https://fonts.adobe.com/fonts/wak","https://fonts.adobe.com/fonts/walnut","https://fonts.adobe.com/fonts/warnock","https://fonts.adobe.com/fonts/westsac","https://fonts.adobe.com/fonts/whomp","https://fonts.adobe.com/fonts/wigwag","https://fonts.adobe.com/fonts/willow","https://fonts.adobe.com/fonts/winco","https://fonts.adobe.com/fonts/winsome","https://fonts.adobe.com/fonts/wordy-diva","https://fonts.adobe.com/fonts/work-sans","https://fonts.adobe.com/fonts/worker","https://fonts.adobe.com/fonts/worker-3d","https://fonts.adobe.com/fonts/worthington-arcade","https://fonts.adobe.com/fonts/wreath","https://fonts.adobe.com/fonts/wtr-fatboy","https://fonts.adobe.com/fonts/wtr-french-clarendon-ornamented","https://fonts.adobe.com/fonts/wtr-gothic-open-shaded","https://fonts.adobe.com/fonts/wtr-roycroft","https://fonts.adobe.com/fonts/xenara","https://fonts.adobe.com/fonts/yana","https://fonts.adobe.com/fonts/yantramanav","https://fonts.adobe.com/fonts/yellowtail","https://fonts.adobe.com/fonts/yorkten-slab","https://fonts.adobe.com/fonts/youngblood","https://fonts.adobe.com/fonts/yrsa","https://fonts.adobe.com/fonts/ysans","https://fonts.adobe.com/fonts/ysans-mondrian","https://fonts.adobe.com/fonts/zalderdash","https://fonts.adobe.com/fonts/zebrawood","https://fonts.adobe.com/fonts/zeitguys","https://fonts.adobe.com/fonts/zeitung","https://fonts.adobe.com/fonts/zekton","https://fonts.adobe.com/fonts/zenon","https://fonts.adobe.com/fonts/zipline","https://fonts.adobe.com/fonts/zooja","https://fonts.adobe.com/fonts/zsazsa-galore","https://fonts.adobe.com/fonts/zubilo","https://fonts.adobe.com/fonts/a-otf-futo-go-b101-pr6n","https://fonts.adobe.com/fonts/a-otf-futo-min-a101-pr6n","https://fonts.adobe.com/fonts/a-otf-gothic-bbb-pr6n","https://fonts.adobe.com/fonts/a-otf-jun-pro","https://fonts.adobe.com/fonts/a-otf-midashi-go-mb31-pr6n","https://fonts.adobe.com/fonts/a-otf-midashi-mi-ma31-pr6n","https://fonts.adobe.com/fonts/a-otf-ryumin-pr6n","https://fonts.adobe.com/fonts/a-otf-ud-reimin-pr6n","https://fonts.adobe.com/fonts/a-otf-ud-shin-go-pr6n","https://fonts.adobe.com/fonts/a-otf-ud-shin-maru-go-pr6n","https://fonts.adobe.com/fonts/dnp-shuei-4go-std","https://fonts.adobe.com/fonts/dnp-shuei-4gob-std","https://fonts.adobe.com/fonts/dnp-shuei-anti-std","https://fonts.adobe.com/fonts/dnp-shuei-gothic-gin-std","https://fonts.adobe.com/fonts/dnp-shuei-gothic-kin-std","https://fonts.adobe.com/fonts/dnp-shuei-mgothic-std","https://fonts.adobe.com/fonts/dnp-shuei-mincho-pr6","https://fonts.adobe.com/fonts/dnp-shuei-mincho-pr6n","https://fonts.adobe.com/fonts/dnp-shuei-shogomincho-std","https://fonts.adobe.com/fonts/dnp-shuei-ymincho-std","https://fonts.adobe.com/fonts/donguri-kana","https://fonts.adobe.com/fonts/fot-cezanne-pron","https://fonts.adobe.com/fonts/fot-klee-pro","https://fonts.adobe.com/fonts/fot-matisse-pron","https://fonts.adobe.com/fonts/fot-rodin-pron","https://fonts.adobe.com/fonts/fot-seurat-pron","https://fonts.adobe.com/fonts/fot-tsukuardgothic-std","https://fonts.adobe.com/fonts/fot-tsukubrdgothic-std","https://fonts.adobe.com/fonts/fot-udkakugo-large-pr6n","https://fonts.adobe.com/fonts/fot-udmarugo-large-pr6n","https://fonts.adobe.com/fonts/heisei-kaku-gothic-std","https://fonts.adobe.com/fonts/heisei-kaku-gothic-stdn","https://fonts.adobe.com/fonts/heisei-maru-gothic-std","https://fonts.adobe.com/fonts/heisei-mincho-std","https://fonts.adobe.com/fonts/heisei-mincho-stdn","https://fonts.adobe.com/fonts/iroha-32sakura-kana","https://fonts.adobe.com/fonts/kan412typos-std","https://fonts.adobe.com/fonts/kan415typos-std","https://fonts.adobe.com/fonts/kan48typos-std","https://fonts.adobe.com/fonts/kazuraki-sp2n","https://fonts.adobe.com/fonts/kozuka-gothic-pr6n","https://fonts.adobe.com/fonts/kozuka-gothic-pro","https://fonts.adobe.com/fonts/kozuka-mincho-pr6n","https://fonts.adobe.com/fonts/kozuka-mincho-pro","https://fonts.adobe.com/fonts/noto-sans-cjk-jp","https://fonts.adobe.com/fonts/ro-brush-std","https://fonts.adobe.com/fonts/ro-nikkatsu-sei-kai-std","https://fonts.adobe.com/fonts/ro-san-std","https://fonts.adobe.com/fonts/ro-shino-std","https://fonts.adobe.com/fonts/ryo-display-plusn","https://fonts.adobe.com/fonts/ryo-gothic-plusn","https://fonts.adobe.com/fonts/ryo-text-plusn","https://fonts.adobe.com/fonts/source-han-sans-cjk-japanese","https://fonts.adobe.com/fonts/source-han-sans-japanese","https://fonts.adobe.com/fonts/source-han-serif-japanese","https://fonts.adobe.com/fonts/ta-candy","https://fonts.adobe.com/fonts/ta-f1blockline","https://fonts.adobe.com/fonts/ta-houdate-m500","https://fonts.adobe.com/fonts/ta-hougan-k500","https://fonts.adobe.com/fonts/ta-kai","https://fonts.adobe.com/fonts/ta-kotodama","https://fonts.adobe.com/fonts/ta-kouran","https://fonts.adobe.com/fonts/ta-rb","https://fonts.adobe.com/fonts/tbcgothic-std","https://fonts.adobe.com/fonts/tbchibirgothicplusk-pro","https://fonts.adobe.com/fonts/tbcinergothic-std","https://fonts.adobe.com/fonts/tbnpgothic-std","https://fonts.adobe.com/fonts/tbnpmincho-std","https://fonts.adobe.com/fonts/tbudgothic-std","https://fonts.adobe.com/fonts/tbudmincho-std","https://fonts.adobe.com/fonts/tbudrgothic-std","https://fonts.adobe.com/fonts/ten-mincho","https://fonts.adobe.com/fonts/ten-mincho-text","https://fonts.adobe.com/fonts/toppan-bunkyu-gothic-pr6n","https://fonts.adobe.com/fonts/toppan-bunkyu-midashi-go-std","https://fonts.adobe.com/fonts/toppan-bunkyu-midashi-go-stdn","https://fonts.adobe.com/fonts/toppan-bunkyu-midashi-min-std","https://fonts.adobe.com/fonts/toppan-bunkyu-midashi-min-stdn","https://fonts.adobe.com/fonts/toppan-bunkyu-mincho-pr6n","https://fonts.adobe.com/fonts/vdl-admin","https://fonts.adobe.com/fonts/vdl-gigag","https://fonts.adobe.com/fonts/vdl-gigajr","https://fonts.adobe.com/fonts/vdl-gigamaru","https://fonts.adobe.com/fonts/vdl-gigamarujr","https://fonts.adobe.com/fonts/vdl-kyosensya","https://fonts.adobe.com/fonts/vdl-lineg","https://fonts.adobe.com/fonts/vdl-linegr","https://fonts.adobe.com/fonts/vdl-logog","https://fonts.adobe.com/fonts/vdl-logojr","https://fonts.adobe.com/fonts/vdl-logojrblack","https://fonts.adobe.com/fonts/vdl-logomaru","https://fonts.adobe.com/fonts/vdl-logomaru-jr","https://fonts.adobe.com/fonts/vdl-logona","https://fonts.adobe.com/fonts/vdl-megag","https://fonts.adobe.com/fonts/vdl-megamaru","https://fonts.adobe.com/fonts/vdl-pengentle","https://fonts.adobe.com/fonts/vdl-penlady","https://fonts.adobe.com/fonts/vdl-petag","https://fonts.adobe.com/fonts/vdl-terag","https://fonts.adobe.com/fonts/vdl-v7gothic","https://fonts.adobe.com/fonts/vdl-v7marugothic","https://fonts.adobe.com/fonts/vdl-v7mincho","https://fonts.adobe.com/fonts/vdl-yotag","https://fonts.adobe.com/fonts/yu-minchotai-36-pt-kana-r-2nd-ed","https://fonts.adobe.com/fonts/yu-minchotai-5-go-kana-r-2nd-ed","https://fonts.adobe.com/fonts/yu-minchotai-pr6-r","https://fonts.adobe.com/fonts/yu-minchotai-pr6n-r"]} -------------------------------------------------------------------------------- /src/fonts.js: -------------------------------------------------------------------------------- 1 | const puppeteer = require("puppeteer"); 2 | const path = require("path"); 3 | const getUrls = require("get-urls"); 4 | const request = require("request"); 5 | const opentype = require("opentype.js"); 6 | // const opentype = require("opentype/src/opentype.js"); 7 | // const woff2 = require(path.join(__dirname, "woff2", "src", "woff2.js")); 8 | const woff2 = require("wawoff2"); 9 | const { zip } = require("zip-a-folder"); 10 | const fs = require("fs"); 11 | const rimraf = require("rimraf"); 12 | 13 | // global stuff... 14 | let fontFamily; 15 | let fontHrefCache = []; 16 | 17 | let fontBrowseUrl = ``; 18 | const browserMode = ["default", "japanese"]; 19 | 20 | let fontMetaData = {}; 21 | 22 | // scrape outer page for all font links to json 23 | const scrapeForFontLinks = async (link) => { 24 | const browser = await puppeteer.launch({ 25 | headless: true, 26 | args: ["--no-sandbox", "--disable-setuid-sandbox"], 27 | }); 28 | const page = await browser.newPage(); 29 | 30 | for (browseMode of browserMode) { 31 | let hrefs; 32 | let fontPages; 33 | let unique; 34 | let pageNum = 1; 35 | console.log(browseMode); 36 | fontMetaData[browseMode] = {}; 37 | 38 | fontBrowseUrl = `https://fonts.adobe.com/fonts?browse_mode=${browseMode}&page=${pageNum}&sort=alpha`; 39 | await page.goto(fontBrowseUrl); 40 | const fontCount = await page.evaluate(() => { 41 | return document.querySelector("div[data-id='family-count-message']") 42 | .innerText; 43 | }); 44 | fontMetaData[browseMode].count = fontCount; 45 | console.log(fontMetaData); 46 | 47 | do { 48 | fontBrowseUrl = `https://fonts.adobe.com/fonts?browse_mode=${browseMode}&page=${pageNum}&sort=alpha`; 49 | await page.goto(fontBrowseUrl); 50 | // all links on page 51 | hrefs = await page.$$eval("a", (as) => as.map((a) => a.href)); 52 | // all links to fonts 53 | fontPages = hrefs.filter((href) => { 54 | splitHref = href.split("/"); 55 | return splitHref[splitHref.length - 2] == "fonts"; 56 | }); 57 | // all unique links to fonts 58 | unique = [...new Set(fontPages)]; 59 | fontHrefCache = fontHrefCache.concat(unique); 60 | // console.log(fontHrefCache); 61 | console.log("scraped ", unique.length, "fonts"); 62 | pageNum++; 63 | } while (unique.length > 0); 64 | } 65 | 66 | await browser.close(); 67 | 68 | console.log( 69 | "There are a total of: " + 70 | fontMetaData.default.count + 71 | fontMetaData.japanese.count + 72 | "fonts" 73 | ); 74 | console.log("We recorded a total of: " + fontHrefCache.length + "fonts"); 75 | 76 | // write font links to json 77 | let temp = { fontArray: fontHrefCache }; 78 | const jsonString = JSON.stringify(temp); 79 | fs.writeFileSync(path.join(__dirname, "fontHrefs.json"), jsonString); 80 | }; 81 | 82 | const scrapeFonts = async (link) => { 83 | let fontWritten = false; 84 | linkArr = link.split("/"); 85 | fontFamily = linkArr[linkArr.length - 1]; 86 | 87 | if (fs.existsSync(path.join(__dirname, "zips", fontFamily + ".zip"))) { 88 | console.log(fontFamily, "exists! \nSkipping..."); 89 | return true; 90 | } 91 | 92 | const browser = await puppeteer.launch({ 93 | headless: true, 94 | args: ["--no-sandbox", "--disable-setuid-sandbox"], 95 | }); 96 | const page = await browser.newPage(); 97 | // scrape fonts from font link here 98 | await page.goto(link); 99 | 100 | // Executing code in the DOM 101 | const fonts = await page.evaluate(() => { 102 | let temp = window.Typekit.fonts.fonts; 103 | let fonts = []; 104 | temp.forEach((font) => { 105 | fonts.push({ family: font.w.family, source: font.source }); 106 | }); 107 | 108 | return fonts; 109 | }); 110 | await browser.close(); 111 | 112 | const formattedFontArr = parseFonts(fonts); 113 | while (!fontWritten) { 114 | try { 115 | fontWritten = await writeFonts(formattedFontArr); 116 | } catch (err) { 117 | await writeFonts(formattedFontArr); 118 | fontWritten = true; 119 | console.log("uh-oh"); 120 | console.log(err); 121 | } 122 | } 123 | }; 124 | 125 | // Filters out adobe fonts and returns an array with links to WOFF2 fonts 126 | const parseFonts = (fonts) => { 127 | const filteredFonts = fonts.filter((font) => { 128 | return !font.family.includes("adobe"); 129 | }); 130 | const fontURLs = filteredFonts.map((font) => { 131 | return { family: font.family, source: Array.from(getUrls(font.source))[0] }; 132 | }); 133 | return fontURLs; 134 | }; 135 | 136 | // Write and convert WOFF2 to TTF fonts to file 137 | const writeFonts = async (fonts) => { 138 | rimraf.sync(path.join(__dirname, "temp")); 139 | fs.mkdirSync(path.join(__dirname, "temp")); 140 | for (url of fonts) { 141 | await new Promise((resolve) => 142 | request(url.source) 143 | .pipe(fs.createWriteStream(path.join(__dirname, "out.woff2"))) 144 | .on("finish", () => { 145 | resolve(); 146 | }) 147 | ); 148 | let buffer = fs.readFileSync(path.join(__dirname, "out.woff2")); 149 | let ttfBuffer = await woff2.decompress(buffer); 150 | // let ttfBuffer = woff2.decode(buffer); 151 | fs.writeFileSync(path.join(__dirname, "out.ttf"), ttfBuffer); 152 | // Opentype can ONLY parse TTFs, not WOFF2s 153 | let metadata = opentype.loadSync(path.join(__dirname, "out.ttf")).names; 154 | fs.writeFileSync( 155 | path.join(__dirname, "temp", metadata.postScriptName.en + ".ttf"), 156 | ttfBuffer 157 | ); 158 | } 159 | await zip( 160 | path.join(__dirname, "temp"), 161 | path.join(__dirname, "zips", fontFamily + ".zip") 162 | ); 163 | 164 | console.log(fontFamily, "scraped and zipped"); 165 | return true; 166 | }; 167 | 168 | // scrapeFonts("https://fonts.adobe.com/fonts/fira-sans"); 169 | 170 | // run one time only, scrapes all the font links from adobe. This will generate a fontHrefs.json 171 | 172 | // await scrapeForFontLinks("https://fonts.adobe.com/fonts?browse_mode=default"); 173 | // const scrapedFontLinks = fs.readFileSync("fontHrefs.json"); 174 | // let fontArray = JSON.parse(scrapedFontLinks).fontArray; 175 | // (async () => { 176 | // try { 177 | // for (href of fontArray) { 178 | // await scrapeFonts(href); 179 | // } 180 | // } catch (e) { 181 | // console.log(e); 182 | // } 183 | // })(); 184 | 185 | ////////////////////////// 186 | 187 | module.exports = scrapeFonts; 188 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const scrapeFonts = require("./fonts.js"); 2 | 3 | const express = require("express"); 4 | const rateLimit = require("express-rate-limit"); 5 | const Redis = require("ioredis"); 6 | const helmet = require("helmet"); 7 | const path = require("path"); 8 | 9 | // setup redis 10 | 11 | // express, middleware? 12 | const PORT = process.env.PORT || 8080; 13 | const app = express(); 14 | 15 | app.use(helmet()); 16 | app.use(express.urlencoded({ extended: false })); 17 | app.use(express.static(path.resolve(__dirname, "..", "public"))); 18 | 19 | // Rate limiting: 30 requests / 1 min 20 | app.set("trust proxy", 1); 21 | app.use( 22 | rateLimit({ 23 | windowMs: 60 * 1000, 24 | max: 30, 25 | }) 26 | ); 27 | 28 | // app.get("/", async (req, res) => { 29 | // let fontLink = "https://fonts.adobe.com/fonts/azo-sans"; 30 | // res.send("Hello World!"); 31 | // }); 32 | 33 | app.post("/", async (req, res) => { 34 | let { fontUrl } = req.body; 35 | let linkArr = fontUrl.split("/"); 36 | let fontFamily = linkArr[linkArr.length - 1]; 37 | 38 | try { 39 | await scrapeFonts(fontUrl); 40 | res.download( 41 | path.join(__dirname, "zips", fontFamily + ".zip"), 42 | fontFamily + ".zip" 43 | ); 44 | } catch (err) { 45 | console.log(err); 46 | res.json({ 47 | error: err, 48 | message: 49 | "Oops! Looks like something went wrong... Try getting the font again.", 50 | }); 51 | } 52 | 53 | console.log("font downloaded"); 54 | }); 55 | 56 | console.log(`[i] Server listening on port: ${PORT}`); 57 | app.listen(PORT); 58 | -------------------------------------------------------------------------------- /src/temp/placeholder.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiumax/adobe-font-scraper/c62a4436f2cbeb9ec9469fb368ca3bda79b54f8e/src/temp/placeholder.txt -------------------------------------------------------------------------------- /src/zips/placeholder.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiumax/adobe-font-scraper/c62a4436f2cbeb9ec9469fb368ca3bda79b54f8e/src/zips/placeholder.txt --------------------------------------------------------------------------------