├── .eslintrc.js ├── .gitignore ├── README.md ├── index.js ├── lib ├── SessionManager.js ├── abema.js ├── constants.js ├── customXMLHttpRequest.dec.js └── utils.js ├── package.json ├── poc ├── package.json ├── poc-dump-with-cdp.js └── yarn.lock └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "parserOptions": { 3 | "ecmaVersion": 6, 4 | }, 5 | 6 | "extends": "google", 7 | 8 | "rules": { 9 | "require-jsdoc": 0, 10 | "max-len": [1, 120] 11 | } 12 | }; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | test/ 2 | node_modules/ 3 | downloads/ 4 | tsdump/ 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PLEASE STOP USE THIS SCRIPT FOR NOW 2 | # IT WILL CAUSE YOUR IP ADDRESS BEING BANNED 3 | 4 | 5 | # abema-hls-dl 6 | 7 | abemaTV的下载工具, 需要 nodejs > 6.4 8 | 9 | ### 安装 10 | 11 | ``` 12 | # 下载代码并安装依赖库 13 | git clone https://github.com/larvata/abema-hls-dl.git 14 | cd abema-hls-dl 15 | npm install 16 | ``` 17 | 18 | ### 参数列表 19 | 20 | ``` 21 | > node . --help 22 | 23 | Usage: abema-hls-dl [options] 24 | 25 | Options: 26 | 27 | -h, --help output usage information 28 | -V, --version output the version number 29 | -l, --list list all of the available channels 30 | -c, --channel channel id for recording, default: abema-news 31 | -d, --duration recording duration(minute) default: 30 32 | -p, --proxy proxy setting, default: null 33 | -s, --savecache save origin ts file for backup 34 | -r, --resolution video resolution, one of 360/480/720/1080, default: 1080 35 | -o, --output output file name 36 | 37 | ``` 38 | 39 | 40 | ### 使用方法 41 | 42 | ``` 43 | # 获取频道Id 44 | > node . --list 45 | 46 | 47 | # 下载2分钟480p的分辨率的麻将 国内下载需自备代理 任意日本IP即可 48 | > node . -c mahjong -d 2 -r 480 -p socks://127.0.0.1:8484 49 | 50 | ``` 51 | 52 | ### 已知问题 53 | 54 | + 目前没有实现Dash模块 部分频道无法录制 55 | + 遇到录档无法剪辑的情况 可能需要对其remux 56 | 57 | `ffmpeg -i in.ts -c copy output.mp4` 58 | 59 | 60 | ### 关于abemaTV的区域限制 61 | 62 | 2016年12月 abemaTV对访问的IP实行了严格的限制 屏蔽了绝大部分日本vps的IP 导致即使用日本代理访问也无法观看番组 63 | 如果仅仅是希望绕过这一限制 可以使用这个油猴脚本 64 | 65 | https://openuserjs.org/scripts/Larvata/AbemaTV_region_free -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const program = require('commander'); 2 | const pkg = require('./package'); 3 | const {createUserDevice} = require('./lib/utils'); 4 | const { 5 | getUserDetailsPromise, 6 | registUserDevicePromise, 7 | getMediaTokenPromise, 8 | scheduleDumpPromise, 9 | getMediaDetailsPromise, 10 | setProxy, 11 | } = require('./lib/abema'); 12 | 13 | program 14 | .version(pkg.version) 15 | .option('-l, --list', 'list all of the available channels') 16 | .option('-c, --channel ', 'channel id for recording, default: abema-news') 17 | .option('-d, --duration ', 'recording duration(minute) default: 30') 18 | .option('-p, --proxy ', 'proxy setting, default: null') 19 | .option('-s, --savecache', 'save origin ts file for backup') 20 | .option('-r, --resolution ', 'video resolution, one of [360, 480, 720, 1080], default: 1080') 21 | .option('-o, --output ', 'output file name') 22 | .parse(process.argv); 23 | 24 | if (!process.argv.slice(2).length) { 25 | console.log('Usage: ', 'node . --channel mahjong --duration 10 -r 1080 --output mahjong-10-minutes-1090p.ts'); 26 | program.outputHelp(); 27 | } 28 | else if (program.list) { 29 | const deviceInfo = createUserDevice(); 30 | const {deviceId, applicationKeySecret} = deviceInfo; 31 | 32 | // set proxy 33 | if (program.proxy) { 34 | setProxy(program.proxy); 35 | } 36 | 37 | registUserDevicePromise(deviceId, applicationKeySecret) 38 | .then(getUserDetailsPromise) 39 | .then(getMediaDetailsPromise) 40 | .then((ret) => { 41 | require('fs').writeFileSync('program-list.json', JSON.stringify(ret, null, 2)); 42 | const padding = 8; 43 | const { channels } = ret; 44 | const maxLength = channels.reduce((a, b)=>{ 45 | if (a === 0) { 46 | return b.id.length; 47 | } 48 | if (a < b.id.length) { 49 | return b.id.length; 50 | } 51 | return a; 52 | }, 0); 53 | 54 | console.log(`Id${' '.repeat(maxLength-2+padding)}Name`); 55 | ret.channels.forEach((c) => { 56 | console.log(`${c.id}${' '.repeat(maxLength-c.id.length+padding)}${c.name}`); 57 | }); 58 | }); 59 | } 60 | else { 61 | const scheduleOptions = { 62 | channelId: 'abema-news', 63 | recordDuration: 30, 64 | // proxy: 'socks://127.0.0.1:8484', 65 | }; 66 | // todo: add an option for schedule recording 67 | const d = new Date(); 68 | scheduleOptions.recordStart = d; 69 | 70 | if (program.channel) { 71 | scheduleOptions.channelId = program.channel; 72 | } 73 | if (program.duration) { 74 | scheduleOptions.recordDuration = program.duration; 75 | } 76 | if (program.savecache) { 77 | scheduleOptions.saveCacheFile = program.savecache; 78 | } 79 | if (program.resolution) { 80 | scheduleOptions.resolution = program.resolution; 81 | } 82 | if (program.output) { 83 | scheduleOptions.outputFileName = program.output; 84 | } 85 | 86 | // set proxy 87 | if (program.proxy) { 88 | setProxy(program.proxy); 89 | } 90 | 91 | const deviceInfo = createUserDevice(); 92 | const {deviceId, applicationKeySecret} = deviceInfo; 93 | registUserDevicePromise(deviceId, applicationKeySecret) 94 | .then(getUserDetailsPromise) 95 | .then(getMediaDetailsPromise) 96 | .then(getMediaTokenPromise) 97 | .then(scheduleDumpPromise.bind(null, scheduleOptions)) 98 | .then((result) => { 99 | // console.log('all done, the log file has been saved as last_playlist.json'); 100 | }) 101 | .catch((err) =>{ 102 | console.log(err); 103 | }); 104 | } 105 | -------------------------------------------------------------------------------- /lib/SessionManager.js: -------------------------------------------------------------------------------- 1 | const {CACHE_MILLISECONDS} = require('./constants'); 2 | 3 | // todo code for validate the options 4 | // ... 5 | class SessionManager { 6 | constructor({agent, mediaToken}) { 7 | this.agent = agent; 8 | this.userToken = null; 9 | this.userId = null; 10 | this.mediaToken = mediaToken; 11 | this.segmentList = []; 12 | this.isRecording = false; 13 | this.startTime = null; 14 | this.cachedTime = null; 15 | this.proxy = null; 16 | this.isRecording = false; 17 | } 18 | 19 | setProxy(proxy) { 20 | this.proxy = proxy; 21 | } 22 | 23 | setScheduledTimeEnd(scheduledTimeEnd) { 24 | this.scheduledTimeEnd = scheduledTimeEnd; 25 | } 26 | 27 | recordingStart(scheduledTimeEnd) { 28 | this.isRecording = true; 29 | this.startTime = new Date().getTime(); 30 | this.scheduledTimeEnd = scheduledTimeEnd; 31 | } 32 | 33 | feedCacheDuration(duration) { 34 | if (!this.cachedTime) { 35 | this.cachedTime = new Date().getTime(); 36 | } 37 | this.cachedTime = this.cachedTime + duration; 38 | } 39 | 40 | shouldContinueRecord() { 41 | return this.cachedTime < this.scheduledTimeEnd; 42 | } 43 | 44 | getCacheDuration() { 45 | let waitMilliSeconds = this.cachedTime - new Date().getTime() - CACHE_MILLISECONDS; 46 | return waitMilliSeconds; 47 | } 48 | 49 | getCacheWaitTime() { 50 | let result = this.getCacheDuration(); 51 | if (result < 0) { 52 | result = 0; 53 | } 54 | return result; 55 | } 56 | }; 57 | 58 | module.exports = SessionManager; 59 | -------------------------------------------------------------------------------- /lib/abema.js: -------------------------------------------------------------------------------- 1 | process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; 2 | 3 | const { 4 | DEFAULT_TIMEOUT, 5 | RETRY_INTERVAL, 6 | PLAYLIST_FETCH_INTERVAL, 7 | TS_DUMP_CACHE_PATH, 8 | TS_DOWNLOAD_PATH, 9 | DOMAINS, 10 | } = require('./constants'); 11 | 12 | const fs = require('fs'); 13 | const crypto = require('crypto'); 14 | const leftPad = require('left-pad'); 15 | const m3u8 = require('m3u8-parser'); 16 | const moment = require('moment'); 17 | 18 | const request = require('superagent'); 19 | require('superagent-proxy')(request); 20 | 21 | // add a feature that proxy() can accept an invalid proxy url 22 | request.Request.prototype._proxy = request.Request.prototype.proxy; 23 | request.Request.prototype.proxy = function(proxyUrl) { 24 | if (proxyUrl) { 25 | return this._proxy(proxyUrl); 26 | } 27 | return this; 28 | }; 29 | 30 | const { 31 | getMediaToken, 32 | getChannelPlaylist, 33 | decodeAbemaURIPromise, 34 | } = require('./utils'); 35 | 36 | 37 | const SessionManager = require('./SessionManager'); 38 | const session = new SessionManager({ 39 | agent: request.agent(), 40 | mediaToken: getMediaToken(), 41 | }); 42 | 43 | const fileStreamWritePromise = (fstream, data) => { 44 | return new Promise((resolve, reject) => { 45 | fstream.write(data, ()=>{ 46 | return resolve(); 47 | }); 48 | }); 49 | }; 50 | 51 | const setTimeoutPromise = (timeout) => { 52 | return new Promise((resolve, reject) => { 53 | setTimeout(()=>{ 54 | return resolve(); 55 | }, timeout); 56 | }); 57 | }; 58 | 59 | const _updateUserInfo = (userInfo) => { 60 | const {token, profile} = userInfo; 61 | session.userToken = token; 62 | session.profile = profile; 63 | return Promise.resolve(userInfo); 64 | }; 65 | 66 | const _updateMediaToken = (mediaToken) => { 67 | const {token} = mediaToken; 68 | session.mediaToken = token; 69 | return Promise.resolve(mediaToken); 70 | }; 71 | 72 | const responseJSONHandler = (res) => { 73 | if (res.status !== 200) { 74 | return Promise.reject(`parse JSON failed: ${res.text}`); 75 | } 76 | else { 77 | return Promise.resolve(res.body); 78 | } 79 | }; 80 | 81 | const responseM3U8Handler = (res) => { 82 | if (res.status !== 200) { 83 | return Promise.reject(`failed to get response: ${res.text}`); 84 | } 85 | else { 86 | const parser = new m3u8.Parser(); 87 | parser.push(res.text); 88 | parser.end(); 89 | const result = parser.manifest; 90 | return Promise.resolve(result); 91 | } 92 | }; 93 | 94 | const createRequest = (endpoint, method, payload) => { 95 | const isFullUrl = /^http/.test(endpoint); 96 | const url = isFullUrl ? endpoint : `${DOMAINS.api}/${endpoint}`; 97 | 98 | let baseRequest = session.agent; 99 | if (method === 'GET') { 100 | baseRequest = session.agent.get(url).query(payload); 101 | } 102 | else if(method = 'POST') { 103 | baseRequest = session.agent.post(url).send(payload); 104 | } 105 | else if(method === 'OPTIONS') { 106 | baseRequest = session.agent.options(url); 107 | } 108 | else { 109 | return Promise.reject(`Unknown http method: ${method}`); 110 | } 111 | 112 | const {userToken} = session; 113 | if (userToken) { 114 | // if userToken available set to the request 115 | baseRequest.set('authorization', `bearer ${userToken}`); 116 | } 117 | 118 | baseRequest.proxy(session.proxy).timeout(DEFAULT_TIMEOUT); 119 | return baseRequest; 120 | }; 121 | 122 | const setProxy = (proxyUrl) => { 123 | session.setProxy(proxyUrl); 124 | } 125 | 126 | const registUserDevicePromise = (deviceId, applicationKeySecret) => { 127 | const url = 'v1/users'; 128 | const method = 'POST'; 129 | const payload = { 130 | deviceId, 131 | applicationKeySecret, 132 | }; 133 | 134 | const request = createRequest(url, method, payload) 135 | .then(responseJSONHandler) 136 | .then(_updateUserInfo); 137 | return request; 138 | }; 139 | 140 | const getUserDetailsPromise = () => { 141 | const {profile} = session; 142 | const url = `v1/users/${profile.userId}`; 143 | const method = 'GET'; 144 | 145 | const request = createRequest(url, method) 146 | .then(responseJSONHandler); 147 | return request; 148 | }; 149 | 150 | const getMediaTokenPromise = () => { 151 | const url = 'v1/media/token'; 152 | const method = 'GET'; 153 | 154 | const payload = session.mediaToken; 155 | 156 | const request = createRequest(url, method, payload) 157 | .then(responseJSONHandler) 158 | .then(_updateMediaToken); 159 | return request; 160 | }; 161 | 162 | const getMediaDetailsPromise = (dateRange) => { 163 | const url = 'v1/media'; 164 | const method = 'GET'; 165 | 166 | // for now hardcode the daterange, 167 | // maybe user should can set this value in the next version 168 | dateRange = { 169 | dateFrom: moment().format('YYYYMMDD'), 170 | dateTo: moment().add(1, 'day').format('YYYYMMDD'), 171 | }; 172 | 173 | const payload = dateRange; 174 | 175 | const request = createRequest(url, method, payload) 176 | .then(responseJSONHandler); 177 | return request; 178 | }; 179 | 180 | // it will return a ts data buffer 181 | const downloadTSFilePromise = (url) => { 182 | return new Promise((resolve, reject) => { 183 | request.get(url) 184 | .proxy(session.proxy) 185 | .timeout(DEFAULT_TIMEOUT) 186 | .buffer(true) 187 | .then((resp) => { 188 | // session.feedCacheDuration(duration); 189 | // const waitNaturallyTimeout = session.getCacheWaitTime(); 190 | // if (waitNaturallyTimeout > 0) { 191 | // console.log(`wait ${waitNaturallyTimeout}ms and try fetch next segment`); 192 | // } 193 | // return setTimeoutPromise(waitNaturallyTimeout).then(()=>{resolve(resp.body)}); 194 | console.log(`ts done: ${url} (${session.getCacheDuration()})`); 195 | 196 | resolve(resp.body); 197 | }) 198 | .catch((error) => { 199 | console.log(error.message); 200 | return setTimeoutPromise(RETRY_INTERVAL).then(()=>{ 201 | return downloadTSFilePromise(url).then((body)=>{ 202 | return resolve(body); 203 | }); 204 | }); 205 | }); 206 | }); 207 | }; 208 | 209 | const downloadAndDecryptPromise = (fstream, options) => { 210 | if (!session.isRecording && session.segmentList.every((s) => s.done)) { 211 | // stop recording when time end and no pendding tasks 212 | fstream.end(); 213 | return Promise.resolve(session.segmentList); 214 | } 215 | // get first undone segment 216 | const segment = session.segmentList.find(s => !s.done); 217 | if (!segment) { 218 | // no more unfinished segment, wait 3 second and try again 219 | return setTimeoutPromise(RETRY_INTERVAL).then(()=>{ 220 | return downloadAndDecryptPromise(fstream, options); 221 | }); 222 | } 223 | 224 | const duration = parseInt(segment.duration * 1000); 225 | 226 | if (!segment.key) { 227 | session.feedCacheDuration(duration); 228 | // it is an ad, so skip it and start to the next segment 229 | segment.done = true; 230 | const waitNaturallyTimeout = session.getCacheWaitTime(); 231 | if (waitNaturallyTimeout > 0) { 232 | console.log(`skip ad, wait ${waitNaturallyTimeout}ms to flush the cache.`); 233 | } 234 | return setTimeoutPromise(waitNaturallyTimeout).then(() => { 235 | return downloadAndDecryptPromise(fstream, options); 236 | }); 237 | } 238 | 239 | const keyUri = segment.key.uri; 240 | let ivHex = segment.key.iv.reduce((a, b)=>{ 241 | const hexB = leftPad(b.toString(16), 8, '0'); 242 | return (a+hexB); 243 | }, ''); 244 | const ivBuffer= new Buffer(ivHex, 'hex'); 245 | return decodeAbemaURIPromise(keyUri, session.profile.userId).then((keyBuffer) => { 246 | // const duration = parseInt(segment.duration * 1000); 247 | return downloadTSFilePromise(segment.uri).then((tsBuffer)=>{ 248 | const {saveCacheFile, recordingKey} = options; 249 | if (saveCacheFile) { 250 | // extract ts file name from url 251 | const urlParts = segment.uri.split('/'); 252 | const tsFileName = urlParts.pop(); 253 | fs.writeFileSync(`${TS_DUMP_CACHE_PATH}/${recordingKey}/${tsFileName}`, tsBuffer); 254 | } 255 | 256 | return Promise.resolve({ 257 | tsBuffer, 258 | keyBuffer, 259 | ivBuffer, 260 | encrypted: true, 261 | }); 262 | }); 263 | }).then((lastResult) =>{ 264 | const {keyBuffer, tsBuffer, ivBuffer} = lastResult; 265 | // begin decrypt 266 | const decipher = crypto.createDecipheriv('AES-128-CBC', keyBuffer, ivBuffer); 267 | const decrypted = Buffer.concat([decipher.update(tsBuffer), decipher.final()]); 268 | 269 | return fileStreamWritePromise(fstream, decrypted); 270 | }) 271 | .catch((error) => { 272 | // decrypt failed 273 | console.log('keyUri', keyUri); 274 | console.log('Decrypt failed please press CTRL+C to terminal and try again.'); 275 | }) 276 | .then(() => { 277 | segment.done = true; 278 | session.feedCacheDuration(duration); 279 | const waitNaturallyTimeout = session.getCacheWaitTime(); 280 | if (waitNaturallyTimeout > 0) { 281 | console.log(`wait ${waitNaturallyTimeout}ms and try fetch next segment`); 282 | } 283 | return setTimeoutPromise(waitNaturallyTimeout).then(() => { 284 | return downloadAndDecryptPromise(fstream, options); 285 | }); 286 | }); 287 | }; 288 | 289 | const downloadTSSegmentListPromies = (m3u8Url) => { 290 | return session.agent.get(m3u8Url) 291 | .buffer(true) 292 | .proxy(session.proxy) 293 | .timeout(DEFAULT_TIMEOUT) 294 | .then(responseM3U8Handler) 295 | .then((pl) => { 296 | return Promise.resolve(pl); 297 | }) 298 | .catch((e) => { 299 | console.log(e.message); 300 | console.log('retry m3u8 playlist.'); 301 | return setTimeoutPromise(RETRY_INTERVAL).then(()=>downloadTSSegmentListPromies(m3u8Url)).then((pl) => { 302 | return Promise.resolve(pl); 303 | }); 304 | }); 305 | }; 306 | 307 | const downloadInitialPlaylistPromise = (channelId, resolution) => { 308 | const {mediaToken} = session; 309 | const pl = getChannelPlaylist(channelId, mediaToken, null, 'home'); 310 | const request = session.agent.get(pl.playlist) 311 | .buffer(true) 312 | .proxy(session.proxy) 313 | .timeout(DEFAULT_TIMEOUT) 314 | .then(responseM3U8Handler) 315 | .then((plOfpl) => { 316 | // playlist of a playlist 317 | 318 | // get playlist by resolution value, if failed use the best resultion 319 | const matched = plOfpl.playlists.reduce((a, b) => { 320 | if (!a) { 321 | return b; 322 | } 323 | 324 | if (a.picked) { 325 | return a; 326 | } 327 | 328 | if (resolution) { 329 | // determine playlist by resolution 330 | const urlParts = b.uri.split('/'); 331 | const px = urlParts[0]; 332 | 333 | if(px === resolution) { 334 | b.picked = true; 335 | return b; 336 | } 337 | } 338 | 339 | if (a.attributes.BANDWIDTH < b.attributes.BANDWIDTH) { 340 | return b; 341 | } 342 | return a; 343 | }); 344 | 345 | const url = `${pl.baseUrl}/${matched.uri}`; 346 | return downloadTSSegmentListPromies(url); 347 | }) 348 | .catch((e) => { 349 | console.log(e.message); 350 | console.log('retry ts playlist.'); 351 | return setTimeoutPromise(RETRY_INTERVAL) 352 | .then(()=> downloadInitialPlaylistPromise(channelId, resolution)) 353 | .then((pl) => { 354 | return Promise.resolve(pl); 355 | }); 356 | }); 357 | 358 | return request; 359 | }; 360 | 361 | 362 | const _feedStreamList = (segments) => { 363 | const {segmentList} = session; 364 | if (segmentList.length === 0) { 365 | // fresh list just feed current entities 366 | segments.forEach(s => segmentList.push(s)); 367 | return; 368 | } 369 | 370 | // not empty list, add the segments not in the list 371 | const lastSeg = segmentList[segmentList.length - 1]; 372 | const startIndex = segments.findIndex(s=> s.uri === lastSeg.uri); 373 | if (startIndex === -1) { 374 | // all of the sements are not in current list 375 | // just append 376 | segments.forEach(s => segmentList.push(s)); 377 | } 378 | else { 379 | const newSegs = segments.slice(startIndex + 1); 380 | newSegs.forEach(s => segmentList.push(s)); 381 | } 382 | }; 383 | 384 | const dumpStreamPromise = (channelId, recordingKey, resolution) => { 385 | if (!session.shouldContinueRecord()) { 386 | console.log('all of the ts segments info are fetched.\ if the download has not been finished please wait patiently.'); 387 | session.isRecording = false; 388 | fs.writeFileSync( 389 | `${TS_DUMP_CACHE_PATH}/${recordingKey}/playlist.json`, 390 | JSON.stringify(session.segmentList, null, 2)); 391 | 392 | return Promise.resolve(); 393 | } 394 | 395 | return new Promise((resolve, reject) => { 396 | downloadInitialPlaylistPromise(channelId, resolution) 397 | .then((playlist) => { 398 | _feedStreamList(playlist.segments); 399 | // console.log('unresolved segemnt pool:', session.segmentList.filter((s) => !s.done).length); 400 | return setTimeoutPromise(PLAYLIST_FETCH_INTERVAL); 401 | }) 402 | .then(() => { 403 | return dumpStreamPromise(channelId, recordingKey, resolution); 404 | }) 405 | .then(()=>{ 406 | return resolve(); 407 | }) 408 | .catch((error) => { 409 | reject(error); 410 | }); 411 | }); 412 | }; 413 | 414 | const scheduleDumpPromise = (options) => { 415 | console.log(options); 416 | const { 417 | recordStart, 418 | recordDuration, 419 | channelId, 420 | // proxy, 421 | saveCacheFile, 422 | resolution, 423 | outputFileName, 424 | } = options; 425 | 426 | const currentTime = new Date().getTime(); 427 | const scheduledTime = recordStart.getTime(); 428 | const scheduledTimeEnd = scheduledTime + 60 * recordDuration * 1000; 429 | 430 | const scheduledTimeString = moment().format('YYYYMMDD-HHmmSS'); 431 | 432 | const recordingKey = `${channelId}-${scheduledTimeString}-${recordDuration}`; 433 | const defaultFileName = `${recordingKey}.ts`; 434 | const recordFileName = outputFileName || defaultFileName; 435 | const tsFileStream = fs.createWriteStream(`./${TS_DOWNLOAD_PATH}/${recordFileName}`); 436 | 437 | // prepare folder for save cache files 438 | fs.mkdirSync(`${TS_DUMP_CACHE_PATH}/${recordingKey}`); 439 | 440 | // tsFileStream.on('finish', ()=>{ 441 | // console.log('file stream was finished.'); 442 | // }); 443 | 444 | console.log('Begin a schedule for recording.'); 445 | const waitSeconds = (scheduledTime - currentTime) * 1000; 446 | setTimeout(()=>{ 447 | return dumpStreamPromise(channelId, recordingKey, resolution); 448 | }, waitSeconds); 449 | 450 | // session.setProxy(proxy); 451 | session.recordingStart(scheduledTimeEnd); 452 | 453 | return downloadAndDecryptPromise(tsFileStream, { 454 | saveCacheFile, 455 | recordingKey, 456 | }); 457 | }; 458 | 459 | 460 | // init, create output dirs 461 | try { 462 | fs.mkdirSync(TS_DUMP_CACHE_PATH); 463 | } 464 | catch(e) {} 465 | 466 | try{ 467 | fs.mkdirSync(TS_DOWNLOAD_PATH); 468 | } 469 | catch(e) {} 470 | 471 | module.exports = { 472 | registUserDevicePromise, 473 | getUserDetailsPromise, 474 | getMediaTokenPromise, 475 | getMediaDetailsPromise, 476 | scheduleDumpPromise, 477 | setProxy, 478 | }; 479 | -------------------------------------------------------------------------------- /lib/constants.js: -------------------------------------------------------------------------------- 1 | const DOMAINS = { 2 | url: 'https://abema.tv', 3 | api: 'https://api.abema.io', 4 | media: 'https://media.abema.io', 5 | license: 'https://license.abema.io', 6 | license_np: 'https://license.abema.io', 7 | hayabusa: 'https://hayabusa.io/abema', 8 | growthlink: 'https://ul.gbt.io/l/abematv', 9 | appstore: 'https://itunes.apple.com/us/app/abematv/id1074866833?l=ja&ls=1&mt=8', 10 | googleplay: 'market://details?id=tv.abema', 11 | facebookpage: 'https://www.facebook.com/abematv/', 12 | tvguide: 'https://guide.abema.tv/', 13 | ranking: 'https://ranking.abema.tv/', 14 | adCross: 'http://ad.pr.ameba.jp', 15 | akamaized: 'https://abematv.akamaized.net', 16 | status: 'https://storage.googleapis.com/abema-status', 17 | payment: 'https://p01.mul-pay.jp/link/9100763125609', 18 | ga_optout: 'https://tools.google.com/dlpage/gaoptout', 19 | lance_image: 'https://sy.ameblo.jp/sync/?org=sy.abema.tv', 20 | }; 21 | 22 | const URL = { 23 | base: DOMAINS.url, 24 | slot_play: DOMAINS.media + '/slot', 25 | channel_play: DOMAINS.media + '/channel', 26 | channel_logo: DOMAINS.hayabusa + '/channels/logo', 27 | channel_now_on_air: DOMAINS.hayabusa + '/channels/time', 28 | program_image: DOMAINS.hayabusa + '/programs', 29 | slot_thumbnail_list: DOMAINS.hayabusa + '/slots', 30 | title_image: DOMAINS.hayabusa + '/series', 31 | growthlink: DOMAINS.growthlink, 32 | appstore: DOMAINS.appstore, 33 | googleplay: DOMAINS.googleplay, 34 | facebookpage: DOMAINS.facebookpage, 35 | tvguide: DOMAINS.tvguide, 36 | ranking: DOMAINS.ranking, 37 | adCross: DOMAINS.adCross, 38 | corporation: 'http://abematv.co.jp', 39 | maintenance: DOMAINS.status + '/maintenance.json', 40 | payment: DOMAINS.payment + '/Member/Edit', 41 | ga_optout: DOMAINS.ga_optout, 42 | lance_image: DOMAINS.lance_image, 43 | contact: 'http://abematv.co.jp/pages/394742/contact', 44 | }; 45 | 46 | const DEFAULT_TIMEOUT = 7000; 47 | const CACHE_MILLISECONDS = 30000; 48 | const RETRY_INTERVAL = 1000; 49 | const PLAYLIST_FETCH_INTERVAL = 5000; 50 | 51 | const TS_DUMP_CACHE_PATH = 'tsdump'; 52 | const TS_DOWNLOAD_PATH = 'downloads'; 53 | 54 | module.exports = { 55 | DEFAULT_TIMEOUT, 56 | CACHE_MILLISECONDS, 57 | RETRY_INTERVAL, 58 | PLAYLIST_FETCH_INTERVAL, 59 | TS_DUMP_CACHE_PATH, 60 | TS_DOWNLOAD_PATH, 61 | DOMAINS, 62 | URL, 63 | }; 64 | -------------------------------------------------------------------------------- /lib/customXMLHttpRequest.dec.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | // var a = ["number","push","length","ivi(",")","slice","b16","exports","ECB","CBC","PCBC","CFB","OFB","CTR","Raw","Hex","String","isString","string","map","","split","call","s3","s2","s1","s0","left","right","p","charCodeAt","s","pow","getIV","join","0","toString","setIV","substr","d","0000000000000000","charAt","b","c","reverse","e","./s","./b","./a","123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz","./bx","./r","fromCharCode","substring","5","4","apply","./dec","prototype","localStorage","onabort","onerror","onload","onloadend","onloadstart","onreadystatechange","onprogress","ontimeout","status","statusText","timeout","readyState","response","responseText","responseBody","responseType","responseURL","responseXML","withCredentials","get","set","enumerable","configurable","defineProperty","forEach","o","requestURL","indexOf","_iurl","proxy","currentTarget","/","abm_userId","getItem","buffer","abort","setRequestHeader","getAllResponseHeaders","getResponseHeader","overrideMimeType","UNSEND","OPENED","HEADER_RECEIVED","LOADING","DONE","highOrder","lowOrder","value","binLen","novariant","variant","ush","hash","hkset","function","Cannot find module '","'"]; 3 | var a = (j)("nuuo%%epu12%%gTt0l%C%rt%Omyob%s%gai%dectn%/r%IieeB5%e_esiM%BtressC%ZstpApEertressvgteo%%%lV%TiqemngratV'%%Crorf00e_ls3isensee6%gC.feR4atnn%m0Pnrtsrpe%s.%Swf.d%%paaSion%%sSodepcCaplbD%%en7orje(%rxntpHfl/tnt%d00lernBue0%hBLc0%lCpons%eset0kn%gstga%b%orrraob/n%OnFyVJeAauRQh%nfVoE0/an%drx0rU0apysRthCiyToryauaUte%ear%tsdtryreCabel%iitOr%ae%rusE%iousrk%racRpbEhotsuetRWnolttoaa%SE0t%%rhrueospef%6b%olaaN0bepx%eAtew'aga%siuet%3tqets%hCr%dvcEisrsol0DBe%Te%yhntuC/negasta.eRisadidlseh%DGiee%epsE.%m1Sde/e%d1r%%pTggotn%9n%g%d%enrKlooXsoDreTepehECnI iLes%gsYeo%rercLnbrs0Nt%sD%L)%e%uavntcctNxhsaeOd0%gtasyESeoopiturT%mg%nracl5adH%i%ebriMcltgufr%tarhle%%greFdtoveDitqbx%a%demb%rpripLhcwrsstt%sfnIBswemeoeooeO%mbo%xdedICzrrCetma%nUvbHpoPBeuND2eeot%jors/o %pnshineCld%huap%mictA%oereeHIcdelt_o%nrrdosoasSdgod%hd%ioLelEiya%prn%uRsnet%ouEeXesAtnPGovxN%Pw%fAOHorx%EuoOsReie.sr4%%btngee%oeRMrsarFyvasiert%%0epi%lhtfnU%aont8rtiunIotHnrnr%lRnomNtt%s %sf", 26357047); 4 | function k() { 5 | var b = {}; 6 | for (var a = 0; a < arguments.length; a += 2) { 7 | b[arguments[a]] = arguments[a + 1] 8 | } 9 | ;return b 10 | } 11 | function j(d, f) { 12 | var c = d.length; 13 | var g = []; 14 | for (var b = 0; b < c; b++) { 15 | g[b] = d.charAt(b) 16 | } 17 | ;for (var b = 0; b < c; b++) { 18 | var i = f * (b + 5) + (f % 498781); 19 | var e = f * (b + 7) + (f % 572515); 20 | var j = i % c; 21 | var a = e % c; 22 | var h = g[j]; 23 | g[j] = g[a]; 24 | g[a] = h; 25 | f = (i + e) % 61253867 26 | } 27 | ;var k = String.fromCharCode(127); 28 | return g.join("").split("%").join(k).split("#1").join("%").split("#0").join("#").split(k) 29 | } 30 | function c(y, n, u) { 31 | if (f == null) { 32 | i = null; 33 | return 34 | } 35 | ;var A = function(f) { 36 | if ("number" == typeof f) { 37 | for (var d = [], e = 0; f > e; e++) { 38 | if (i === 1) { 39 | b(); 40 | c = false 41 | } 42 | ;d["push"](0) 43 | } 44 | ;if (!a) { 45 | return 46 | } 47 | ;return d 48 | } 49 | ;for (var e = 0; e < f["length"]; e++) { 50 | if (f[e] < 0 || f[e] >= 256 || "number" != typeof f[e]) { 51 | throw new Error("ivi(" + f[e] + ")") 52 | } 53 | } 54 | ;if (f["slice"]) { 55 | return f["slice"](0) 56 | } 57 | ;for (var d = [], e = 0; e < f["length"]; e++) { 58 | if (j === 0) { 59 | g = false 60 | } 61 | ;d["push"](f[e]) 62 | } 63 | ;return d 64 | } 65 | , v = k(16, 10, 24, 12, 32, 14) 66 | , s = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145] 67 | , q = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22] 68 | , B = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125] 69 | , e = [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890] 70 | , o = [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935] 71 | , C = [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600] 72 | , z = [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480] 73 | , t = [0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795] 74 | , m = [0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855] 75 | , p = [0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150] 76 | , l = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925] 77 | , x = function(d) { 78 | for (var b = [], c = 0; c < d["length"]; c += 4) { 79 | if (f === 1) { 80 | return 81 | } 82 | ;b["push"](d[c] << 24 | d[c + 1] << 16 | d[c + 2] << 8 | d[c + 3]) 83 | } 84 | ;return b 85 | } 86 | , w = function(u, g) { 87 | if (i == true) { 88 | return 89 | } else { 90 | var u = A(u) 91 | , k = v[u["length"]] 92 | } 93 | ;if (null == k) { 94 | throw new Error 95 | } 96 | ;var n = [] 97 | , w = []; 98 | if (j == "apply") { 99 | h = null; 100 | return 101 | } 102 | ;return function(u) { 103 | for (var i = 0; k >= i; i++) { 104 | if (b == null) { 105 | d(); 106 | return 107 | } 108 | ;n["push"]([0, 0, 0, 0]), 109 | w["push"]([0, 0, 0, 0]) 110 | } 111 | ;for (var y, o = 4 * (k + 1), z = u["length"] / 4, e = x(u), i = 0; z > i; i++) { 112 | if (!a) { 113 | return 114 | } else { 115 | y = i >> 2, 116 | n[y][i % 4] = e[i], 117 | w[k - y][i % 4] = e[i] 118 | } 119 | } 120 | ;for (var j, A = 0, v = z; o > v; ) { 121 | if (!d) { 122 | h = true 123 | } 124 | ;if (j = e[z - 1], 125 | e[0] ^= q[j >> 16 & 255] << 24 ^ q[j >> 8 & 255] << 16 ^ q[255 & j] << 8 ^ q[j >> 24 & 255] ^ s[A] << 24, 126 | A += 1, 127 | 8 != z) { 128 | for (var i = 1; z > i; i++) { 129 | e[i] ^= e[i - 1] 130 | } 131 | } else { 132 | for (var i = 1; z / 2 > i; i++) { 133 | e[i] ^= e[i - 1] 134 | } 135 | ;j = e[z / 2 - 1], 136 | e[z / 2] ^= q[255 & j] ^ q[j >> 8 & 255] << 8 ^ q[j >> 16 & 255] << 16 ^ q[j >> 24 & 255] << 24; 137 | for (var i = z / 2 + 1; z > i; i++) { 138 | e[i] ^= e[i - 1] 139 | } 140 | } 141 | ;for (var B, g, i = 0; z > i && o > v; ) { 142 | B = v >> 2, 143 | g = v % 4, 144 | n[B][g] = e[i], 145 | w[k - B][g] = e[i++], 146 | v++ 147 | } 148 | } 149 | ;for (var B = 1; k > B; B++) { 150 | if (!a) { 151 | b(false, false, 1); 152 | f = 0 153 | } else { 154 | for (var g = 0; 4 > g; g++) { 155 | if (!f) { 156 | c = true; 157 | return 158 | } 159 | ;j = w[B][g], 160 | w[B][g] = t[j >> 24 & 255] ^ m[j >> 16 & 255] ^ p[j >> 8 & 255] ^ l[255 & j] 161 | } 162 | } 163 | } 164 | }(u), 165 | function(n) { 166 | if (16 != n["length"]) { 167 | if (!h) { 168 | c(true, null); 169 | return 170 | } 171 | ;return new Error("b16") 172 | } 173 | ;if (!d) { 174 | j(false, "value", true) 175 | } 176 | ;for (var f = w["length"] - 1, l = [0, 0, 0, 0], m = x(n), i = 0; 4 > i; i++) { 177 | m[i] ^= w[0][i] 178 | } 179 | ;for (var g = 1; f > g; g++) { 180 | for (var i = 0; 4 > i; i++) { 181 | l[i] = e[m[i] >> 24 & 255] ^ o[m[(i + 3) % 4] >> 16 & 255] ^ C[m[(i + 2) % 4] >> 8 & 255] ^ z[255 & m[(i + 1) % 4]] ^ w[g][i] 182 | } 183 | ;m = l["slice"](0) 184 | } 185 | ;for (var k, b = A(16), i = 0; 4 > i; i++) { 186 | k = w[f][i], 187 | b[4 * i] = 255 & (B[m[i] >> 24 & 255] ^ k >> 24), 188 | b[4 * i + 1] = 255 & (B[m[(i + 3) % 4] >> 16 & 255] ^ k >> 16), 189 | b[4 * i + 2] = 255 & (B[m[(i + 2) % 4] >> 8 & 255] ^ k >> 8), 190 | b[4 * i + 3] = 255 & (B[255 & m[(i + 1) % 4]] ^ k) 191 | } 192 | ;return b 193 | }(g) 194 | }; 195 | n["exports"] = w 196 | } 197 | function d(p, i, n) { 198 | var q = k("ECB", 0, "CBC", 1, "PCBC", 2, "CFB", 3, "OFB", 4, "CTR", 5) 199 | , o = k("Raw", 0, "Hex", 1, "String", 2) 200 | , m = {}; 201 | if (!f) { 202 | g = "./a"; 203 | return 204 | } 205 | ;m["isString"] = function(b) { 206 | return "string" == typeof b || b instanceof String 207 | } 208 | ; 209 | if (!a) { 210 | b(); 211 | return 212 | } 213 | ;var l = {}; 214 | l["map"] = function(i, b, f, j) { 215 | if (!g) { 216 | e(null, 1) 217 | } 218 | ;var h = 0 219 | , d = i && i["length"] || 0 220 | , c = new (j || Array)(d); 221 | if (d && "string" == typeof i && (i = i["split"]("")), 222 | "string" == typeof b && (b = cache[b] || buildFn(b)), 223 | f) { 224 | for (; d > h; ++h) { 225 | c[h] = b["call"](f, i[h], h, i) 226 | } 227 | } else { 228 | for (; d > h; ++h) { 229 | c[h] = b(i[h], h, i) 230 | } 231 | } 232 | ;return c 233 | } 234 | ; 235 | var s = new function() { 236 | function v(b, a) { 237 | return (b >> 16 ^ a >> 16) << 16 | 65535 & (65535 & b ^ 65535 & a) 238 | } 239 | function p(l, b) { 240 | var i = b["s3"][255 & l]; 241 | if (c == "charCodeAt") { 242 | return 243 | } 244 | ;l >>= 8; 245 | var m = b["s2"][255 & l]; 246 | if (!j) { 247 | j(0, 1); 248 | d = 0; 249 | return 250 | } 251 | ;l >>= 8; 252 | var k = b["s1"][255 & l]; 253 | l >>= 8; 254 | if (e == 1) { 255 | j(); 256 | return 257 | } 258 | ;var h = b["s0"][255 & l] 259 | , g = (h >> 16) + (k >> 16) + ((65535 & h) + (65535 & k) >> 16) << 16 | (65535 & h) + (65535 & k) & 65535; 260 | if (!f) { 261 | return 262 | } 263 | ;return g = (g >> 16 ^ m >> 16) << 16 | 65535 & (65535 & g ^ 65535 & m), 264 | (g >> 16) + (i >> 16) + ((65535 & g) + (65535 & i) >> 16) << 16 | (65535 & g) + (65535 & i) & 65535 265 | } 266 | function u(c, e) { 267 | var d = c["left"] 268 | , b = c["right"]; 269 | d = v(d, e["p"][0]), 270 | b = v(b, v(p(d, e), e["p"][1])), 271 | d = v(d, v(p(b, e), e["p"][2])), 272 | b = v(b, v(p(d, e), e["p"][3])), 273 | d = v(d, v(p(b, e), e["p"][4])), 274 | b = v(b, v(p(d, e), e["p"][5])), 275 | d = v(d, v(p(b, e), e["p"][6])), 276 | b = v(b, v(p(d, e), e["p"][7])), 277 | d = v(d, v(p(b, e), e["p"][8])), 278 | b = v(b, v(p(d, e), e["p"][9])), 279 | d = v(d, v(p(b, e), e["p"][10])), 280 | b = v(b, v(p(d, e), e["p"][11])), 281 | d = v(d, v(p(b, e), e["p"][12])), 282 | b = v(b, v(p(d, e), e["p"][13])), 283 | d = v(d, v(p(b, e), e["p"][14])), 284 | b = v(b, v(p(d, e), e["p"][15])), 285 | d = v(d, v(p(b, e), e["p"][16])), 286 | c["right"] = d, 287 | c["left"] = v(b, e["p"][17]) 288 | } 289 | function x(c, e) { 290 | var d = c["left"] 291 | , b = c["right"]; 292 | d = v(d, e["p"][17]), 293 | b = v(b, v(p(d, e), e["p"][16])), 294 | d = v(d, v(p(b, e), e["p"][15])), 295 | b = v(b, v(p(d, e), e["p"][14])), 296 | d = v(d, v(p(b, e), e["p"][13])), 297 | b = v(b, v(p(d, e), e["p"][12])), 298 | d = v(d, v(p(b, e), e["p"][11])), 299 | b = v(b, v(p(d, e), e["p"][10])), 300 | d = v(d, v(p(b, e), e["p"][9])), 301 | b = v(b, v(p(d, e), e["p"][8])), 302 | d = v(d, v(p(b, e), e["p"][7])), 303 | b = v(b, v(p(d, e), e["p"][6])), 304 | d = v(d, v(p(b, e), e["p"][5])), 305 | b = v(b, v(p(d, e), e["p"][4])), 306 | d = v(d, v(p(b, e), e["p"][3])), 307 | b = v(b, v(p(d, e), e["p"][2])), 308 | d = v(d, v(p(b, e), e["p"][1])), 309 | c["right"] = d, 310 | c["left"] = v(b, e["p"][0]) 311 | } 312 | if (!g) { 313 | c(true, false) 314 | } 315 | ;function i(i) { 316 | var f = i; 317 | m["isString"](f) && (f = l["map"](f["split"](""), function(b) { 318 | return 255 & b["charCodeAt"](0) 319 | })); 320 | if (e == false) { 321 | return 322 | } 323 | ;var o, h, p, d = 0, q = 0, j = k("left", 0, "right", 0), g = k("p", l["map"](n["p"]["slice"](0), function(c) { 324 | var b, e = f["length"]; 325 | for (b = 0; 4 > b; b++) { 326 | q = q * s | f[d++ % e] 327 | } 328 | ;return (c >> 16 ^ q >> 16) << 16 | 65535 & (65535 & c ^ 65535 & q) 329 | }), "s0", n["s0"]["slice"](0), "s1", n["s1"]["slice"](0), "s2", n["s2"]["slice"](0), "s3", n["s3"]["slice"](0)); 330 | for (o = 0, 331 | p = g["p"]["length"]; p > o; ) { 332 | u(j, g), 333 | g["p"][o++] = j["left"], 334 | g["p"][o++] = j["right"] 335 | } 336 | ;if (b == true) { 337 | c = "0000000000000000"; 338 | return 339 | } 340 | ;for (o = 0; 4 > o; o++) { 341 | for (h = 0, 342 | p = g["s" + o]["length"]; p > h; ) { 343 | u(j, g), 344 | g["s" + o][h++] = j["left"], 345 | g["s" + o][h++] = j["right"] 346 | } 347 | } 348 | ;return g 349 | } 350 | var s = (Math["pow"](2, 2), 351 | Math["pow"](2, 3), 352 | Math["pow"](2, 4), 353 | Math["pow"](2, 8)) 354 | , y = Math["pow"](2, 16) 355 | , w = Math["pow"](2, 24) 356 | , t = null 357 | , n = k("p", [608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731], "s0", [3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946], "s1", [1266315497, 3048417604, 3681880366, 3289982499, 290971e4, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055], "s2", [3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504], "s3", [976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409e3, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462]); 358 | if (!a) { 359 | return 360 | } 361 | ;this["getIV"] = function(c) { 362 | var b = c || o["Raw"]; 363 | switch (b) { 364 | case o["Hex"]: 365 | return l["map"](t, function(b) { 366 | if (!h) { 367 | e(null); 368 | e = null 369 | } 370 | ;return (15 >= b ? "0" : "") + b["toString"](16) 371 | })["join"](""); 372 | case o["String"]: 373 | return t["join"](""); 374 | case o["Raw"]: 375 | return t 376 | } 377 | } 378 | , 379 | this["setIV"] = function(i, c) { 380 | var f = c || o["Raw"] 381 | , k = null; 382 | if (b === "novariant") { 383 | j(); 384 | return 385 | } 386 | ;switch (f) { 387 | case o["String"]: 388 | k = l["map"](i["split"](""), function(b) { 389 | if (!a) { 390 | j = true 391 | } 392 | ;return b["charCodeAt"](0) 393 | }); 394 | break; 395 | case o["Hex"]: 396 | k = []; 397 | if (!a) { 398 | d(); 399 | return 400 | } 401 | ;for (var e = 0, m = i["length"] - 1; m > e; e += 2) { 402 | k["push"](parseInt(i["substr"](e, 2), 16)) 403 | } 404 | ;break; 405 | case o["Raw"]: 406 | if (!h) { 407 | g(null) 408 | } 409 | ;k = i 410 | } 411 | ;t = {}, 412 | t["left"] = k[0] * w | k[1] * y | k[2] * s | k[3], 413 | t["right"] = k[4] * w | k[5] * y | k[6] * s | k[7] 414 | } 415 | , 416 | this["d"] = function(F, u) { 417 | var C = o["Raw"] 418 | , A = q["ECB"] 419 | , p = i(u) 420 | , z = [] 421 | , m = null; 422 | if (!a) { 423 | f(0); 424 | j = true; 425 | return 426 | } 427 | ;switch (C) { 428 | case o["Hex"]: 429 | m = []; 430 | for (var E = 0, D = F["length"] - 1; D > E; E += 2) { 431 | m["push"](parseInt(F["substr"](E, 2), 16)) 432 | } 433 | ;if (!e) { 434 | return 435 | } 436 | ;break; 437 | case o["String"]: 438 | if (!g) { 439 | f(); 440 | h = 0; 441 | return 442 | } else { 443 | m = l["map"](F["split"](""), function(b) { 444 | return b["charCodeAt"](0) 445 | }) 446 | } 447 | ;break; 448 | case o["Raw"]: 449 | m = F 450 | } 451 | ;if (c == 0) { 452 | g(); 453 | f = 0 454 | } else { 455 | for (var G = m["length"] >> 3, I = 0, d = {}, v = A == q["CBC"], n = k("left", t["left"] || null, "right", t["right"] || null), E = 0; G > E; E++) { 456 | if (d["left"] = m[I] * w | m[I + 1] * y | m[I + 2] * s | m[I + 3], 457 | d["right"] = m[I + 4] * w | m[I + 5] * y | m[I + 6] * s | m[I + 7], 458 | v) { 459 | var H = d["left"] 460 | , B = d["right"] 461 | } 462 | ;if (!j) { 463 | b(0, true); 464 | j = 0; 465 | return 466 | } else { 467 | x(d, p), 468 | v && (d["left"] = (d["left"] >> 16 ^ n["left"] >> 16) << 16 | 65535 & (65535 & d["left"] ^ 65535 & n["left"]), 469 | d["right"] = (d["right"] >> 16 ^ n["right"] >> 16) << 16 | 65535 & (65535 & d["right"] ^ 65535 & n["right"]), 470 | n["left"] = H, 471 | n["right"] = B), 472 | z["push"](d["left"] >> 24 & 255), 473 | z["push"](d["left"] >> 16 & 255), 474 | z["push"](d["left"] >> 8 & 255), 475 | z["push"](255 & d["left"]), 476 | z["push"](d["right"] >> 24 & 255), 477 | z["push"](d["right"] >> 16 & 255), 478 | z["push"](d["right"] >> 8 & 255), 479 | z["push"](255 & d["right"]), 480 | I += 8 481 | } 482 | } 483 | } 484 | ;if (!b) { 485 | return 486 | } 487 | ;return z 488 | } 489 | , 490 | this["setIV"]("0000000000000000", o["Hex"]) 491 | } 492 | ; 493 | i["exports"] = s 494 | } 495 | function e(d, b, c) { 496 | b["exports"] = function(h) { 497 | if (j == null) { 498 | return 499 | } else { 500 | for (var b = {}, e = h["length"], l = h["charAt"](0), g = 0; g < h["length"]; g++) { 501 | b[h["charAt"](g)] = g 502 | } 503 | } 504 | ;var d = function(c) { 505 | if (0 === c["length"]) { 506 | return "" 507 | } 508 | ;if (!i) { 509 | f(); 510 | return 511 | } else { 512 | for (var m = [0], l = 0; l < c["length"]; ++l) { 513 | for (var k = 0, g = c[l]; k < m["length"]; ++k) { 514 | if (!j) { 515 | j = true 516 | } 517 | ;g += m[k] << 8, 518 | m[k] = g % e, 519 | g = g / e | 0 520 | } 521 | ;for (; g > 0; ) { 522 | m["push"](g % e), 523 | g = g / e | 0 524 | } 525 | } 526 | } 527 | ;if (!a) { 528 | return 529 | } else { 530 | for (var n = "", b = 0; 0 === c[b] && b < c["length"] - 1; ++b) { 531 | n += h[0] 532 | } 533 | } 534 | ;for (var d = m["length"] - 1; d >= 0; --d) { 535 | n += h[m[d]] 536 | } 537 | ;return n 538 | } 539 | , c = function(j) { 540 | if (0 === j["length"]) { 541 | return [] 542 | } 543 | ;if (!i) { 544 | i = null 545 | } 546 | ;for (var h = [0], g = 0; g < j["length"]; g++) { 547 | var f = b[j[g]]; 548 | if (void (0) === f) { 549 | throw new Error("b" + e + "c") 550 | } 551 | ;for (var k = 0, c = f; k < h["length"]; ++k) { 552 | c += h[k] * e, 553 | h[k] = 255 & c, 554 | c >>= 8 555 | } 556 | ;for (; c > 0; ) { 557 | h["push"](255 & c), 558 | c >>= 8 559 | } 560 | } 561 | ;for (var d = 0; j[d] === l && d < j["length"] - 1; ++d) { 562 | h["push"](0) 563 | } 564 | ;return h["reverse"]() 565 | }; 566 | return k("e", d, "d", c) 567 | } 568 | } 569 | if (!j) { 570 | e(null); 571 | return 572 | } 573 | ;function f(v, k, q) { 574 | var x = v("./s") 575 | , s = v("./b") 576 | , o = v("./a") 577 | , n = v("./bx")("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz") 578 | , y = 256 579 | , b = v("./r") 580 | , l = [[200, 196, 157, 49, 219, 232, 69, 76, 83, 241, 90, 229, 150, 242, 92, 15, 84, 148, 229, 112, 54, 1, 119, 2, 169, 57, 211, 105, 136, 202, 103, 168], [234, 169, 154, 104, 251, 227, 123, 14, 69, 153, 122, 248, 216, 214, 90, 81, 11, 135, 195, 113, 29, 23, 116, 2, 161, 38, 253, 115, 142, 200, 42, 189], [200, 165, 201, 110, 242, 224, 40, 65, 59, 242, 81, 195, 162, 188, 101, 3, 79, 254, 234, 10, 16, 95, 72, 35, 164, 67, 164, 71, 240, 227, 121, 199], [245, 130, 172, 48, 216, 131, 115, 127, 66, 236, 28, 185, 136, 252, 90, 79, 119, 243, 179, 12, 72, 39, 98, 61, 137, 71, 249, 115, 214, 177, 21, 172], [89, 223, 151, 248, 170, 122, 131, 80, 144, 118, 56, 163, 241, 252, 134, 140, 142, 29, 185, 213, 230, 84, 127, 54, 179, 36, 10, 155, 207, 175, 138, 50], [14, 100, 3, 93, 159, 22, 163, 57, 95, 210, 206, 203, 142, 255, 17, 137, 104]] 581 | , A = [44, 128, 188, 10, 35, 20] 582 | , w = function(d) { 583 | if (!a) { 584 | g = false 585 | } 586 | ;for (var b = [], c = 0; c < d["length"]; c++) { 587 | b["push"](d["charCodeAt"](c)) 588 | } 589 | ;return b 590 | } 591 | , p = function(d) { 592 | for (var b = "", c = 0; c < d["length"]; c++) { 593 | b += String["fromCharCode"](d[c]) 594 | } 595 | ;if (!a) { 596 | e("substring"); 597 | return 598 | } 599 | ;return b 600 | } 601 | , j = function(a) { 602 | return p(b(A, l[a])) 603 | } 604 | , m = function(a) { 605 | return b(A, l[a]) 606 | } 607 | , f = function(b, a) { 608 | return b + a 609 | } 610 | , u = function(m, e, l) { 611 | var b = x(y, j(1), f(m, j(0))) 612 | , h = x(y, b, f(m, e)) 613 | , p = x(y, b, f(e, j(0))) 614 | , k = n["d"](l) 615 | , i = s["d"](k, h); 616 | if (g == true) { 617 | c(1, 1, "onreadystatechange", null); 618 | d = "exports" 619 | } 620 | ;return o(w(p), i) 621 | } 622 | , t = function(i, c, h) { 623 | var b = x(y, j(3), f(j(2), i)) 624 | , d = x(y, b, f(c, i)) 625 | , k = x(y, b, f(j(2), c)) 626 | , g = n["d"](h) 627 | , e = o(w(k), g); 628 | return s["d"](e, d) 629 | } 630 | , z = function(h, c, g) { 631 | var e = x(y, j(4), h + c) 632 | , d = x(y, e, c) 633 | , i = x(y, e, h); 634 | d = b(m(5), w(d)), 635 | i = b(m(5), w(i)); 636 | var f = n["d"](g); 637 | return f = b(i, f), 638 | f = s["d"](f, d) 639 | }; 640 | k["exports"] = function(e, b, c) { 641 | if (i === 1) { 642 | h = true; 643 | return 644 | } else { 645 | var f = c["charAt"](c["length"] - 1) 646 | , d = c["substring"](0, c["length"] - 1) 647 | } 648 | ;return "5" === f ? z(e, b, d) : "4" === f ? t(e, b, d) : u(e, b, d) 649 | } 650 | } 651 | if (!c) { 652 | f(null); 653 | return 654 | } 655 | ;function g(l, e, g) { 656 | var m = function(m) { 657 | function s() { 658 | return String["fromCharCode"]["apply"](String, arguments) 659 | } 660 | var v = typeof navigator; 661 | if (v) { 662 | if (!j) { 663 | return 664 | } 665 | ;var t = 'XMLHttpRequest' 666 | , p = "open" 667 | , o = "send" 668 | , w = "abematv://" 669 | , e = l("./dec") 670 | , n = m[t] 671 | , x = n["prototype"] 672 | , u = (x[p], 673 | x[o], 674 | m["localStorage"]) 675 | , q = ["onabort", "onerror", "onload", "onloadend", "onloadstart", "onreadystatechange", "onprogress", "ontimeout", "status", "statusText", "timeout", "readyState", "response", "responseText", "responseBody", "responseType", "responseURL", "responseXML", "withCredentials"] 676 | , g = function() { 677 | var c = this 678 | , b = new n; 679 | q["forEach"](function(d) { 680 | Object["defineProperty"](c, d, k("get", function() { 681 | if (i == false) { 682 | return 683 | } 684 | ;return b[d] 685 | }, "set", function(a) { 686 | b[d] = a 687 | }, "enumerable", !0, "configurable", !0)) 688 | }), 689 | this["o"] = b 690 | }; 691 | // g["prototype"][p] = function(f, b) { 692 | // this["requestURL"] = b; 693 | // var d = this 694 | // , g = b["indexOf"](w); 695 | // if (g >= 0) { 696 | // if (!c) { 697 | // return 698 | // } 699 | // ;this["_iurl"] = b["substring"](g); 700 | // var e = k("readyState", 1, "status", 0); 701 | // if (!a) { 702 | // return 703 | // } 704 | // ;return ["status", "readyState", "response", "responseBody", "responseText", "responseType"]["forEach"](function(b) { 705 | // Object["defineProperty"](d, b, k("get", function() { 706 | // return e[b] 707 | // }, "set", function(a) { 708 | // e[b] = a 709 | // }, "enumerable", !0, "configurable", !0)) 710 | // }), 711 | // this["proxy"] = e, 712 | // void ((d["onreadystatechange"] && d["onreadystatechange"](k("currentTarget", d)))) 713 | // } 714 | // ;if (!a) { 715 | // return 716 | // } else { 717 | // this["o"][p]["apply"](this["o"], arguments) 718 | // } 719 | // } 720 | // , 721 | g["prototype"][o] = function(keyUrl, userId) { 722 | if (!i) { 723 | j(); 724 | return 725 | } 726 | ;var f = this; 727 | f._iurl = keyUrl; 728 | if (f["_iurl"]) { 729 | var b = f["_iurl"] 730 | , c = b["substring"](10)["split"]("/") 731 | // , g = u["getItem"]("abm_userId") 732 | var g = userId; 733 | var d = e(c[2], g, c[3]); 734 | return f["readyState"] = 4, 735 | f["status"] = 200, 736 | f["response"] = new Uint8Array(d)["buffer"], 737 | f["onreadystatechange"] && f["onreadystatechange"](k("currentTarget", f)), 738 | f["onload"] && f["onload"](k("currentTarget", f)), 739 | void ((f["onloadend"] && f["onloadend"](k("currentTarget", f)))) 740 | } 741 | ;this["o"][o]["apply"](this["o"], arguments) 742 | } 743 | , 744 | g["prototype"]["abort"] = function() { 745 | if (!f) { 746 | return 747 | } 748 | ;return this["o"]["abort"]["apply"](this["o"], arguments) 749 | } 750 | , 751 | g["prototype"]["setRequestHeader"] = function() { 752 | if (!b) { 753 | d = null 754 | } else { 755 | return this["o"]["setRequestHeader"]["apply"](this["o"], arguments) 756 | } 757 | } 758 | , 759 | g["prototype"]["getAllResponseHeaders"] = function() { 760 | return this["o"]["getAllResponseHeaders"]["apply"](this["o"], arguments) 761 | } 762 | , 763 | g["prototype"]["getResponseHeader"] = function() { 764 | return this["o"]["getResponseHeader"]["apply"](this["o"], arguments) 765 | } 766 | , 767 | g["prototype"]["overrideMimeType"] = function() { 768 | if (!a) { 769 | h = 1 770 | } else { 771 | return this["o"]["overrideMimeType"]["apply"](this["o"], arguments) 772 | } 773 | } 774 | , 775 | g["UNSEND"] = 0, 776 | g["OPENED"] = 1, 777 | g["HEADER_RECEIVED"] = 2, 778 | g["LOADING"] = 3, 779 | g["DONE"] = 4, 780 | // m[t] = g 781 | module.exports = g; 782 | } 783 | }; 784 | // m(window) 785 | m({XMLHttpRequest: function(){}}); 786 | } 787 | function h(d, b, c) { 788 | b["exports"] = function(h, b) { 789 | if (!a) { 790 | j() 791 | } 792 | ;for (var e, i = [], f = 0, d = [], c = 0; 256 > c; c++) { 793 | i[c] = c 794 | } 795 | ;for (c = 0; 256 > c; c++) { 796 | f = (f + i[c] + h[c % h["length"]]) % 256, 797 | e = i[c], 798 | i[c] = i[f], 799 | i[f] = e 800 | } 801 | ;c = 0, 802 | f = 0; 803 | for (var k = 0; k < b["length"]; k++) { 804 | c = (c + 1) % 256, 805 | f = (f + i[c]) % 256, 806 | e = i[c], 807 | i[c] = i[f], 808 | i[f] = e, 809 | d["push"](b[k] ^ i[(i[c] + i[f]) % 256]) 810 | } 811 | ;if (!g) { 812 | return 813 | } 814 | ;return d 815 | } 816 | } 817 | function i(P, u, I) { 818 | var T, K, A = 7, y = function(c, b) { 819 | this["highOrder"] = c, 820 | this["lowOrder"] = b 821 | }, V = function(j, c, f) { 822 | // console.log('in V()'); 823 | // console.log('j:', j); 824 | // console.log('c:', c); 825 | // console.log('f:', f); 826 | if (!h) { 827 | g = 1 828 | } else { 829 | var l, i, e, d, m, b = [] 830 | } 831 | ;for (b = c || [0], 832 | f = f || 0, 833 | e = f >>> 3, 834 | i = 0; i < j["length"]; i += 1) { 835 | l = j["charCodeAt"](i), 836 | m = i + e, 837 | d = m >>> 2, 838 | b["length"] <= d && b["push"](0), 839 | b[d] |= l << 8 * (3 - m % 4) 840 | } 841 | ;return k("value", b, "binLen", 8 * j["length"] + f) 842 | }, l = function(f) { 843 | var c, d, g = "", e = 4 * f["length"]; 844 | for (c = 0; e > c; c += 1) { 845 | d = f[c >>> 2] >>> 8 * (3 - c % 4) & 255, 846 | g += String["fromCharCode"](d) 847 | } 848 | ;if (!a) { 849 | b(); 850 | h = 0; 851 | return 852 | } 853 | ;return g 854 | }, w = function() { 855 | return V 856 | }, X = function(d, b) { 857 | if (!a) { 858 | h("onreadystatechange", "response"); 859 | c = 0 860 | } 861 | ;return d << b | d >>> 32 - b 862 | }, R = function(b, a) { 863 | return b >>> a | b << 32 - a 864 | }, E = function(d, b) { 865 | if (!e) { 866 | h() 867 | } 868 | ;var c = null 869 | , f = new y(d["highOrder"],d["lowOrder"]); 870 | return c = 32 >= b ? new y(f["highOrder"] >>> b | f["lowOrder"] << 32 - b & 4294967295,f["lowOrder"] >>> b | f["highOrder"] << 32 - b & 4294967295) : new y(f["lowOrder"] >>> b - 32 | f["highOrder"] << 64 - b & 4294967295,f["highOrder"] >>> b - 32 | f["lowOrder"] << 64 - b & 4294967295) 871 | }, s = function(b, a) { 872 | return b >>> a 873 | }, x = function(d, b) { 874 | var c = null; 875 | return c = 32 >= b ? new y(d["highOrder"] >>> b,d["lowOrder"] >>> b | d["highOrder"] << 32 - b & 4294967295) : new y(0,d["highOrder"] >>> b - 32) 876 | }, p = function(c, a, b) { 877 | return c ^ a ^ b 878 | }, M = function(c, a, b) { 879 | return c & a ^ ~c & b 880 | }, L = function(d, b, c) { 881 | return new y(d["highOrder"] & b["highOrder"] ^ ~d["highOrder"] & c["highOrder"],d["lowOrder"] & b["lowOrder"] ^ ~d["lowOrder"] & c["lowOrder"]) 882 | }, W = function(c, a, b) { 883 | return c & a ^ c & b ^ a & b 884 | }, Z = function(d, b, c) { 885 | return new y(d["highOrder"] & b["highOrder"] ^ d["highOrder"] & c["highOrder"] ^ b["highOrder"] & c["highOrder"],d["lowOrder"] & b["lowOrder"] ^ d["lowOrder"] & c["lowOrder"] ^ b["lowOrder"] & c["lowOrder"]) 886 | }, n = function(a) { 887 | return R(a, 2) ^ R(a, 13) ^ R(a, 22) 888 | }, v = function(d) { 889 | var b = E(d, 28) 890 | , c = E(d, 34) 891 | , e = E(d, 39); 892 | return new y(b["highOrder"] ^ c["highOrder"] ^ e["highOrder"],b["lowOrder"] ^ c["lowOrder"] ^ e["lowOrder"]) 893 | }, q = function(a) { 894 | return R(a, 6) ^ R(a, 11) ^ R(a, 25) 895 | }, Y = function(d) { 896 | var b = E(d, 14) 897 | , c = E(d, 18) 898 | , e = E(d, 41); 899 | return new y(b["highOrder"] ^ c["highOrder"] ^ e["highOrder"],b["lowOrder"] ^ c["lowOrder"] ^ e["lowOrder"]) 900 | }, G = function(a) { 901 | return R(a, 7) ^ R(a, 18) ^ s(a, 3) 902 | }, Q = function(d) { 903 | var b = E(d, 1) 904 | , c = E(d, 8) 905 | , e = x(d, 7); 906 | return new y(b["highOrder"] ^ c["highOrder"] ^ e["highOrder"],b["lowOrder"] ^ c["lowOrder"] ^ e["lowOrder"]) 907 | }, S = function(a) { 908 | return R(a, 17) ^ R(a, 19) ^ s(a, 10) 909 | }, m = function(d) { 910 | if (!a) { 911 | j(0) 912 | } 913 | ;var b = E(d, 19) 914 | , c = E(d, 61) 915 | , e = x(d, 6); 916 | return new y(b["highOrder"] ^ c["highOrder"] ^ e["highOrder"],b["lowOrder"] ^ c["lowOrder"] ^ e["lowOrder"]) 917 | }, z = function(c, a) { 918 | var b = (65535 & c) + (65535 & a) 919 | , d = (c >>> 16) + (a >>> 16) + (b >>> 16); 920 | return (65535 & d) << 16 | 65535 & b 921 | }, U = function(e, a, c, f) { 922 | var d = (65535 & e) + (65535 & a) + (65535 & c) + (65535 & f) 923 | , b = (e >>> 16) + (a >>> 16) + (c >>> 16) + (f >>> 16) + (d >>> 16); 924 | return (65535 & b) << 16 | 65535 & d 925 | }, D = function(f, a, d, g, e) { 926 | var c = (65535 & f) + (65535 & a) + (65535 & d) + (65535 & g) + (65535 & e) 927 | , b = (f >>> 16) + (a >>> 16) + (d >>> 16) + (g >>> 16) + (e >>> 16) + (c >>> 16); 928 | return (65535 & b) << 16 | 65535 & c 929 | }, o = function(f, b) { 930 | if (!h) { 931 | return 932 | } 933 | ;var d, g, e, c; 934 | if (!a) { 935 | h() 936 | } 937 | ;return d = (65535 & f["lowOrder"]) + (65535 & b["lowOrder"]), 938 | g = (f["lowOrder"] >>> 16) + (b["lowOrder"] >>> 16) + (d >>> 16), 939 | e = (65535 & g) << 16 | 65535 & d, 940 | d = (65535 & f["highOrder"]) + (65535 & b["highOrder"]) + (g >>> 16), 941 | g = (f["highOrder"] >>> 16) + (b["highOrder"] >>> 16) + (d >>> 16), 942 | c = (65535 & g) << 16 | 65535 & d, 943 | new y(c,e) 944 | }, H = function(g, c, e, h) { 945 | var f, d, i, b; 946 | return f = (65535 & g["lowOrder"]) + (65535 & c["lowOrder"]) + (65535 & e["lowOrder"]) + (65535 & h["lowOrder"]), 947 | d = (g["lowOrder"] >>> 16) + (c["lowOrder"] >>> 16) + (e["lowOrder"] >>> 16) + (h["lowOrder"] >>> 16) + (f >>> 16), 948 | i = (65535 & d) << 16 | 65535 & f, 949 | f = (65535 & g["highOrder"]) + (65535 & c["highOrder"]) + (65535 & e["highOrder"]) + (65535 & h["highOrder"]) + (d >>> 16), 950 | d = (g["highOrder"] >>> 16) + (c["highOrder"] >>> 16) + (e["highOrder"] >>> 16) + (h["highOrder"] >>> 16) + (f >>> 16), 951 | b = (65535 & d) << 16 | 65535 & f, 952 | new y(b,i) 953 | }, B = function(h, c, f, i, g) { 954 | var e, j, b, d; 955 | return e = (65535 & h["lowOrder"]) + (65535 & c["lowOrder"]) + (65535 & f["lowOrder"]) + (65535 & i["lowOrder"]) + (65535 & g["lowOrder"]), 956 | j = (h["lowOrder"] >>> 16) + (c["lowOrder"] >>> 16) + (f["lowOrder"] >>> 16) + (i["lowOrder"] >>> 16) + (g["lowOrder"] >>> 16) + (e >>> 16), 957 | b = (65535 & j) << 16 | 65535 & e, 958 | e = (65535 & h["highOrder"]) + (65535 & c["highOrder"]) + (65535 & f["highOrder"]) + (65535 & i["highOrder"]) + (65535 & g["highOrder"]) + (j >>> 16), 959 | j = (h["highOrder"] >>> 16) + (c["highOrder"] >>> 16) + (f["highOrder"] >>> 16) + (i["highOrder"] >>> 16) + (g["highOrder"] >>> 16) + (e >>> 16), 960 | d = (65535 & j) << 16 | 65535 & e, 961 | new y(d,b) 962 | }, O = function(l) { 963 | var i, k, m; 964 | if (!c) { 965 | g = 0 966 | } else { 967 | if (1 === l && 1 & A) { 968 | if (!a) { 969 | b() 970 | } 971 | ;i = [1732584193, 4023233417, 2562383102, 271733878, 3285377520] 972 | } else { 973 | if (!(6 & A)) { 974 | throw new Error("novariant") 975 | } 976 | ;switch (k = [3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428], 977 | m = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225], 978 | l) { 979 | case 224: 980 | i = k; 981 | if (f === null) { 982 | d(1, false); 983 | e = false 984 | } 985 | ;break; 986 | case 256: 987 | i = m; 988 | break; 989 | case 384: 990 | if (c == "toString") { 991 | c(false) 992 | } else { 993 | i = [new y(3418070365,k[0]), new y(1654270250,k[1]), new y(2438529370,k[2]), new y(355462360,k[3]), new y(1731405415,k[4]), new y(41048885895,k[5]), new y(3675008525,k[6]), new y(1203062813,k[7])] 994 | } 995 | ;break; 996 | case 512: 997 | if (h == false) { 998 | d(true); 999 | return 1000 | } 1001 | ;i = [new y(m[0],4089235720), new y(m[1],2227873595), new y(m[2],4271175723), new y(m[3],1595750129), new y(m[4],2917565137), new y(m[5],725511199), new y(m[6],4215389547), new y(m[7],327033209)]; 1002 | if (!a) { 1003 | j(1) 1004 | } 1005 | ;break; 1006 | default: 1007 | throw new Error("variant") 1008 | } 1009 | } 1010 | } 1011 | ;return i 1012 | }, F = function(l, c) { 1013 | var i, n, j, g, f, o, a, d = [], m = M, h = p, b = W, e = X, k = z, q = D; 1014 | for (i = c[0], 1015 | n = c[1], 1016 | j = c[2], 1017 | g = c[3], 1018 | f = c[4], 1019 | a = 0; 80 > a; a += 1) { 1020 | 16 > a ? d[a] = l[a] : d[a] = e(d[a - 3] ^ d[a - 8] ^ d[a - 14] ^ d[a - 16], 1), 1021 | o = 20 > a ? q(e(i, 5), m(n, j, g), f, 1518500249, d[a]) : 40 > a ? q(e(i, 5), h(n, j, g), f, 1859775393, d[a]) : 60 > a ? q(e(i, 5), b(n, j, g), f, 2400959708, d[a]) : q(e(i, 5), h(n, j, g), f, 3395469782, d[a]), 1022 | f = g, 1023 | g = j, 1024 | j = e(n, 30), 1025 | n = i, 1026 | i = o 1027 | } 1028 | ;return c[0] = k(i, c[0]), 1029 | c[1] = k(n, c[1]), 1030 | c[2] = k(j, c[2]), 1031 | c[3] = k(g, c[3]), 1032 | c[4] = k(f, c[4]), 1033 | c 1034 | }, t = function(g, b, e, h) { 1035 | var f, d, c; 1036 | for (c = (b + 65 >>> 9 << 4) + 15; g["length"] <= c; ) { 1037 | g["push"](0) 1038 | } 1039 | ;for (g[b >>> 5] |= 128 << 24 - b % 32, 1040 | g[c] = b + e, 1041 | d = g["length"], 1042 | f = 0; d > f; f += 16) { 1043 | h = F(g["slice"](f, f + 16), h) 1044 | } 1045 | ;return h 1046 | }; 1047 | 6 & A && (T = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], 1048 | 4 & A && (K = [new y(T[0],3609767458), new y(T[1],602891725), new y(T[2],3964484399), new y(T[3],2173295548), new y(T[4],4081628472), new y(T[5],3053834265), new y(T[6],2937671579), new y(T[7],3664609560), new y(T[8],2734883394), new y(T[9],1164996542), new y(T[10],1323610764), new y(T[11],3590304994), new y(T[12],4068182383), new y(T[13],991336113), new y(T[14],633803317), new y(T[15],3479774868), new y(T[16],2666613458), new y(T[17],944711139), new y(T[18],2341262773), new y(T[19],2007800933), new y(T[20],1495990901), new y(T[21],1856431235), new y(T[22],3175218132), new y(T[23],2198950837), new y(T[24],3999719339), new y(T[25],766784016), new y(T[26],2566594879), new y(T[27],3203337956), new y(T[28],1034457026), new y(T[29],2466948901), new y(T[30],3758326383), new y(T[31],168717936), new y(T[32],1188179964), new y(T[33],1546045734), new y(T[34],1522805485), new y(T[35],2643833823), new y(T[36],2343527390), new y(T[37],1014477480), new y(T[38],1206759142), new y(T[39],344077627), new y(T[40],1290863460), new y(T[41],3158454273), new y(T[42],3505952657), new y(T[43],106217008), new y(T[44],3606008344), new y(T[45],1432725776), new y(T[46],1467031594), new y(T[47],851169720), new y(T[48],3100823752), new y(T[49],1363258195), new y(T[50],3750685593), new y(T[51],3785050280), new y(T[52],3318307427), new y(T[53],3812723403), new y(T[54],2003034995), new y(T[55],3602036899), new y(T[56],1575990012), new y(T[57],1125592928), new y(T[58],2716904306), new y(T[59],442776044), new y(T[60],593698344), new y(T[61],3733110249), new y(T[62],2999351573), new y(T[63],3815920427), new y(3391569614,3928383900), new y(3515267271,566280711), new y(3940187606,3454069534), new y(4118630271,4000239992), new y(116418474,1914138554), new y(174292421,2731055270), new y(289380356,3203993006), new y(460393269,320620315), new y(685471733,587496836), new y(852142971,1086792851), new y(1017036298,365543100), new y(1126000580,2618297676), new y(1288033470,3409855158), new y(1501505948,4234509866), new y(1607167915,987167468), new y(1816402316,1246189591)])); 1049 | if (!a) { 1050 | return 1051 | } 1052 | ;var J = function(O, i, E) { 1053 | if (j == true) { 1054 | g = true; 1055 | return 1056 | } 1057 | ;var R, d, k, ba, P, x, f, p, e, J, C, h, F, t, I, V, X, b, l, s, bc, be, u, w, N, bb, bd, bf = []; 1058 | if (!g) { 1059 | j() 1060 | } 1061 | ;if ((224 === E || 256 === E) && 2 & A) { 1062 | C = 64, 1063 | F = 1, 1064 | u = Number, 1065 | t = z, 1066 | I = U, 1067 | V = D, 1068 | X = G, 1069 | b = S, 1070 | l = n, 1071 | s = q, 1072 | be = W, 1073 | bc = M, 1074 | bd = T 1075 | } else { 1076 | if (c == "getItem") { 1077 | return 1078 | } else { 1079 | if (384 !== E && 512 !== E || !(4 & A)) { 1080 | throw new Error("ush") 1081 | } 1082 | } 1083 | ;C = 80, 1084 | F = 2, 1085 | u = y, 1086 | t = o, 1087 | I = H, 1088 | V = B, 1089 | X = Q, 1090 | b = m, 1091 | l = v, 1092 | s = Y, 1093 | be = Z, 1094 | bc = L, 1095 | bd = K 1096 | } 1097 | ;for (R = i[0], 1098 | d = i[1], 1099 | k = i[2], 1100 | ba = i[3], 1101 | P = i[4], 1102 | x = i[5], 1103 | f = i[6], 1104 | p = i[7], 1105 | h = 0; C > h; h += 1) { 1106 | 16 > h ? (bb = h * F, 1107 | w = O["length"] <= bb ? 0 : O[bb], 1108 | N = O["length"] <= bb + 1 ? 0 : O[bb + 1], 1109 | bf[h] = new u(w,N)) : bf[h] = I(b(bf[h - 2]), bf[h - 7], X(bf[h - 15]), bf[h - 16]); 1110 | e = V(p, s(P), bc(P, x, f), bd[h], bf[h]), 1111 | J = t(l(R), be(R, d, k)), 1112 | p = f, 1113 | f = x, 1114 | x = P, 1115 | P = t(ba, e), 1116 | ba = k, 1117 | k = d, 1118 | d = R, 1119 | R = t(e, J) 1120 | } 1121 | ;return i[0] = t(R, i[0]), 1122 | i[1] = t(d, i[1]), 1123 | i[2] = t(k, i[2]), 1124 | i[3] = t(ba, i[3]), 1125 | i[4] = t(P, i[4]), 1126 | i[5] = t(x, i[5]), 1127 | i[6] = t(f, i[6]), 1128 | i[7] = t(p, i[7]), 1129 | i 1130 | } 1131 | , C = function(o, f, m, p, n) { 1132 | if (!d) { 1133 | i(1); 1134 | g = false 1135 | } else { 1136 | var l, q, b, k, s 1137 | } 1138 | ;if ((224 === n || 256 === n) && 2 & A) { 1139 | b = (f + 65 >>> 9 << 4) + 15, 1140 | s = 16 1141 | } else { 1142 | if (384 !== n && 512 !== n || !(4 & A)) { 1143 | throw new Error("ush") 1144 | } 1145 | ;b = (f + 129 >>> 10 << 5) + 31, 1146 | s = 32 1147 | } 1148 | ;for (; o["length"] <= b; ) { 1149 | o["push"](0) 1150 | } 1151 | ;for (o[f >>> 5] |= 128 << 24 - f % 32, 1152 | o[b] = f + m, 1153 | q = o["length"], 1154 | l = 0; q > l; l += s) { 1155 | if (c == null) { 1156 | j(); 1157 | h = false 1158 | } 1159 | ;p = J(o["slice"](l, l + s), p, n) 1160 | } 1161 | ;if (224 === n && 2 & A) { 1162 | k = [p[0], p[1], p[2], p[3], p[4], p[5], p[6]] 1163 | } else { 1164 | if (256 === n && 2 & A) { 1165 | k = p 1166 | } else { 1167 | if (384 === n && 4 & A) { 1168 | k = [p[0]["highOrder"], p[0]["lowOrder"], p[1]["highOrder"], p[1]["lowOrder"], p[2]["highOrder"], p[2]["lowOrder"], p[3]["highOrder"], p[3]["lowOrder"], p[4]["highOrder"], p[4]["lowOrder"], p[5]["highOrder"], p[5]["lowOrder"]] 1169 | } else { 1170 | if (e === 1) { 1171 | g(); 1172 | return 1173 | } 1174 | ;if (!(512 === n && 4 & A)) { 1175 | throw new Error("ush") 1176 | } 1177 | ;k = [p[0]["highOrder"], p[0]["lowOrder"], p[1]["highOrder"], p[1]["lowOrder"], p[2]["highOrder"], p[2]["lowOrder"], p[3]["highOrder"], p[3]["lowOrder"], p[4]["highOrder"], p[4]["lowOrder"], p[5]["highOrder"], p[5]["lowOrder"], p[6]["highOrder"], p[6]["lowOrder"], p[7]["highOrder"], p[7]["lowOrder"]] 1178 | } 1179 | } 1180 | } 1181 | ;return k 1182 | } 1183 | , N = function(z, n, u) { 1184 | if (!a) { 1185 | i = "./a" 1186 | } else { 1187 | var D, v, q, E, H, B, s, m = 0, p = [], k = 0, y = z, x = !1, G = !1, I = [], d = [], o = !1 1188 | } 1189 | ;if (j === false) { 1190 | c(); 1191 | f = 1 1192 | } 1193 | ;if (s = 1, 1194 | v = w(), 1195 | 1 === y && 1 & A) { 1196 | E = 512, 1197 | H = F, 1198 | B = t, 1199 | q = 160 1200 | } else { 1201 | if (6 & A && (H = function(b, a) { 1202 | return J(b, a, y) 1203 | } 1204 | , 1205 | B = function(e, a, d, f) { 1206 | if (!b) { 1207 | c(); 1208 | i = false 1209 | } 1210 | ;return C(e, a, d, f, y) 1211 | } 1212 | ), 1213 | 224 === y && 2 & A) { 1214 | E = 512, 1215 | q = 224 1216 | } else { 1217 | if (256 === y && 2 & A) { 1218 | E = 512, 1219 | q = 256 1220 | } else { 1221 | if (384 === y && 4 & A) { 1222 | E = 1024, 1223 | q = 384 1224 | } else { 1225 | if (!(512 === y && 4 & A)) { 1226 | throw new Error 1227 | } 1228 | ;if (g == true) { 1229 | g(true, 1, null); 1230 | h = 1; 1231 | return 1232 | } 1233 | ;E = 1024, 1234 | q = 512 1235 | } 1236 | } 1237 | } 1238 | } 1239 | ;return D = O(y), 1240 | function(o) { 1241 | var h = w() 1242 | , l = h(o) 1243 | , n = l["binLen"] 1244 | , j = l["value"] 1245 | , i = E >>> 3 1246 | , b = i / 4 - 1; 1247 | if (!c) { 1248 | g(); 1249 | f = false 1250 | } 1251 | ;if (n / 8 > i) { 1252 | for (j = B(j, n, 0, O(y)); j["length"] <= b; ) { 1253 | if (!e) { 1254 | return 1255 | } else { 1256 | j["push"](0) 1257 | } 1258 | } 1259 | ;j[b] &= 4294967040 1260 | } else { 1261 | if (i > n / 8) { 1262 | for (; j["length"] <= b; ) { 1263 | j["push"](0) 1264 | } 1265 | ;j[b] &= 4294967040 1266 | } 1267 | } 1268 | ;if (!g) { 1269 | f("fromCharCode", true); 1270 | e = false; 1271 | return 1272 | } 1273 | ;for (var k = 0; b >= k; k += 1) { 1274 | I[k] = 909522486 ^ j[k], 1275 | d[k] = 1549556828 ^ j[k] 1276 | } 1277 | ;D = H(I, D), 1278 | m = E, 1279 | G = !0 1280 | }(n), 1281 | function(i) { 1282 | var d, h, g, f, c, e = 0, j = E >>> 5; 1283 | for (d = v(i, p, k), 1284 | h = d["binLen"], 1285 | f = d["value"], 1286 | g = h >>> 5, 1287 | c = 0; g > c; c += j) { 1288 | if (!a) { 1289 | b = "UNSEND" 1290 | } 1291 | ;h >= e + E && (D = H(f["slice"](c, c + j), D), 1292 | e += E) 1293 | } 1294 | ;m += e, 1295 | p = f["slice"](e >>> 5), 1296 | k = h % E, 1297 | o = !0 1298 | }(u), 1299 | this["hash"] = function(e) { 1300 | var b, d; 1301 | if (!0 === G) { 1302 | throw new Error("hkset") 1303 | } 1304 | ;if (b = l, 1305 | !1 === x) { 1306 | if (j == "withCredentials") { 1307 | c(null); 1308 | j = false 1309 | } 1310 | ;for (D = B(p, k, m, D), 1311 | d = 1; s > d; d += 1) { 1312 | if (!a) { 1313 | f = 1; 1314 | return 1315 | } 1316 | ;D = B(D, q, 0, O(y)) 1317 | } 1318 | } 1319 | ;return x = !0, 1320 | b(D) 1321 | } 1322 | , 1323 | function(e) { 1324 | if (!1 === G) { 1325 | if (j == 0) { 1326 | g(true) 1327 | } 1328 | ;throw new Error("hkset") 1329 | } 1330 | ;var b, c = l; 1331 | return !1 === x && (b = B(p, k, m, D), 1332 | D = H(d, O(y)), 1333 | D = B(b, q, E, D)), 1334 | x = !0, 1335 | c(D) 1336 | }() 1337 | }; 1338 | if (!e) { 1339 | e(false); 1340 | return 1341 | } 1342 | ;u["exports"] = N 1343 | } 1344 | function b(b, e, h) { 1345 | function f(j, l) { 1346 | if (!e[j]) { 1347 | if (!b[j]) { 1348 | var c = "function" == typeof require && require; 1349 | if (!l && c) { 1350 | return c(j, !0) 1351 | } 1352 | ;if (d) { 1353 | return d(j, !0) 1354 | } 1355 | ;throw new Error("Cannot find module '" + j + "'") 1356 | } 1357 | ;if (!g) { 1358 | return 1359 | } 1360 | ;var i = e[j] = k("exports", {}); 1361 | if (!a) { 1362 | return 1363 | } 1364 | ;b[j][0]["call"](i["exports"], function(c) { 1365 | var a = b[j][1][c]; 1366 | return f(a ? a : c) 1367 | }, i, i["exports"], r, b, e, h) 1368 | } 1369 | ;return e[j]["exports"] 1370 | } 1371 | for (var d = "function" == typeof require && require, c = 0; c < h["length"]; c++) { 1372 | f(h[c]) 1373 | } 1374 | ;return f 1375 | } 1376 | if (!g) { 1377 | g = true 1378 | } 1379 | ;r = b; 1380 | !b(k(1, [c, {}], 2, [d, {}], 3, [e, {}], 4, [f, k("./a", 1, "./b", 2, "./bx", 3, "./r", 6, "./s", 7)], 5, [g, k("./dec", 4)], 6, [h, {}], 7, [i, {}]), {}, [5]) 1381 | } 1382 | )() 1383 | -------------------------------------------------------------------------------- /lib/utils.js: -------------------------------------------------------------------------------- 1 | const CryptoJS = require('crypto-js'); 2 | const CustomXMLHttpRequest = require('./customXMLHttpRequest.dec'); 3 | const {URL} = require('./constants'); 4 | 5 | const getRequiredTime = () => { 6 | const d = new Date(); 7 | d.setHours(d.getHours() + 1); 8 | d.setMinutes(0); 9 | d.setSeconds(0); 10 | return d; 11 | }; 12 | 13 | const getnerateUUID = () => { 14 | let n = ''; 15 | for (let e, r = 0; r < 32; r++) 16 | e = 16 * Math.random() | 0, 17 | r > 4 && r < 21 && !(r % 4) && (n += '-'), 18 | n += (12 === r ? 4 : 16 === r ? 3 & e | 8 : e).toString(16); 19 | return n; 20 | }; 21 | 22 | const generateApplicationKeySecret = (guid, currentTime) => { 23 | const seed = 'v+Gjs=25Aw5erR!J8ZuvRrCx*rGswhB&qdHd_SYerEWdU&a?3DzN9BRbp5KwY4hEmcj5#fykMjJ=AuWz5GSMY-d@H7DMEh3M@9n2G552Us$$k9cD=3TxwWe86!x#Zyhe'; 24 | const algo = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, seed); 25 | 26 | const foo = (e) => { 27 | const t = CryptoJS.enc.Base64.stringify(e.finalize()); 28 | return t.split('=').join('').split('+').join('-').split('/').join('_'); 29 | }; 30 | 31 | const bar = (e) => { 32 | return Math.floor(e.getTime() / 1000); 33 | }; 34 | 35 | algo.update(seed); 36 | 37 | for(let i = 0; i < (currentTime.getUTCMonth() + 1); i++) { 38 | const l = algo.finalize(); 39 | algo.reset(); 40 | algo.update(l); 41 | } 42 | 43 | const sir = foo(algo); 44 | algo.reset(); 45 | algo.update(sir + guid); 46 | 47 | 48 | for(let i = 0, m = (currentTime.getUTCDate() % 5); i < m; i++) { 49 | const l = algo.finalize(); 50 | algo.reset(); 51 | algo.update(l); 52 | } 53 | 54 | const sir2 = foo(algo); 55 | algo.reset(); 56 | algo.update(sir2 + bar(currentTime)); 57 | 58 | for (let i =0, m = (currentTime.getUTCHours() % 5); i < m; i++) { 59 | const l = algo.finalize(); 60 | algo.reset(); 61 | algo.update(l); 62 | } 63 | 64 | const result = foo(algo); 65 | return result; 66 | }; 67 | 68 | const createUserDevice = () => { 69 | const deviceId = getnerateUUID(); 70 | const date = getRequiredTime(); 71 | const applicationKeySecret = generateApplicationKeySecret(deviceId, date); 72 | return { 73 | deviceId, 74 | applicationKeySecret, 75 | }; 76 | }; 77 | 78 | const getMediaToken = () => { 79 | return { 80 | osName: 'pc', 81 | osVersion: '1.0.0', 82 | osLang: 'en-US', 83 | osTimezone: 'Asia/Shanghai', 84 | appVersion: 'v2.2.0', 85 | }; 86 | }; 87 | 88 | 89 | // e is an immutable object 90 | // lanceId may be not necessary 91 | const getChannelPlaylist = (channelId, mediaToken, mediaQuality, requestFrom, lanceId) => { 92 | // get the value from cookie 93 | // const lanceId = Cookie.P; 94 | 95 | const queryObjects = [ 96 | mediaToken && `t=${mediaToken}`, 97 | mediaQuality && `mq=${mediaQuality}`, 98 | requestFrom && `frm=${requestFrom}`, 99 | // lanceId && `lanceId=${lanceId}`, 100 | ].filter((q) => q); 101 | 102 | const queryString = queryObjects.join('&'); 103 | 104 | const baseUrl = `${URL.channel_play}/${channelId}`; 105 | const playlist = `${baseUrl}/playlist.m3u8?${queryString}`; 106 | // the enc is the drm module 107 | const playlist_dash = `${baseUrl}/manifest.mpd?${queryString}&dt=pc_chrome&enc=wv&scope=`; 108 | return { 109 | playlist, 110 | playlist_dash, 111 | baseUrl, 112 | }; 113 | }; 114 | 115 | // it will response the key buffer 116 | const decodeAbemaURIPromise = (uri, uid) => { 117 | return new Promise((resolve, reject) => { 118 | const req = new CustomXMLHttpRequest; 119 | req.onload = () => { 120 | const key = new Buffer(req.response); 121 | resolve(key); 122 | }; 123 | req.send(uri, uid); 124 | }); 125 | }; 126 | 127 | 128 | module.exports = { 129 | createUserDevice, 130 | getMediaToken, 131 | getChannelPlaylist, 132 | decodeAbemaURIPromise, 133 | }; 134 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "abema-hls-dl", 3 | "version": "1.0.8", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "commander": "^2.9.0", 14 | "crypto-js": "^3.1.9-1", 15 | "left-pad": "^1.1.3", 16 | "m3u8-parser": "^2.1.0", 17 | "moment": "^2.18.1", 18 | "superagent": "^3.5.0", 19 | "superagent-proxy": "^1.0.2" 20 | }, 21 | "devDependencies": { 22 | "eslint": "^3.17.1", 23 | "eslint-config-google": "^0.7.1" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /poc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "chrome-remote-interface": "^0.24.4" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /poc/poc-dump-with-cdp.js: -------------------------------------------------------------------------------- 1 | const CDP = require('chrome-remote-interface'); 2 | 3 | (async () => { 4 | const client = await CDP(); 5 | const {Network, Page, Runtime} = client; 6 | Network.requestWillBeSent((params) => { 7 | // console.log(params.request.url); 8 | }); 9 | 10 | Network.requestIntercepted((params) => { 11 | const { interceptionId, request } = params; 12 | const continueParams = { interceptionId }; 13 | if (request.url === 'https://api.abema.io/v1/ip/check') { 14 | // ignore the ip check when outside Japan 15 | continueParams.rawResponse = new Buffer('HTTP/1.1 200 OK\r\n\r\n').toString('base64'); 16 | } 17 | 18 | Network.continueInterceptedRequest(continueParams); 19 | }); 20 | 21 | Network.requestWillBeSent((params) => { 22 | const { requestId, request } = params; 23 | const { url } = request; 24 | if (url.endsWith('.ts')) { 25 | // here is all ts files 26 | console.log(url); 27 | } 28 | }) 29 | 30 | await Promise.all([ 31 | Network.enable(), 32 | Network.setRequestInterceptionEnabled({ enabled: true }), 33 | Page.enable(), 34 | ]); 35 | 36 | 37 | await Page.navigate({url: 'https://abema.tv/now-on-air/abema-special'}); 38 | await Page.loadEventFired(); 39 | 40 | // get current user id from localstorage 41 | const {result: {value: userId}} = await Runtime.evaluate({ 42 | expression: `localStorage.getItem('abm_userId').toString();`, 43 | awaitPromise: true, 44 | }); 45 | console.log('userId', userId); 46 | 47 | const abemaUri = 'abematv://v2/mahjong/Bbj74KqLbT1Kps/NB5v3Lc3DFAytXjebiW4Ph5'; 48 | const parseAbemaProtocolCommand = ` 49 | new Promise((resolve, reject) => { 50 | const req = new XMLHttpRequest(); 51 | req.onload = () => { 52 | const key = btoa(String.fromCharCode(...new Uint8Array(req.response))); 53 | resolve(key); 54 | }; 55 | req.open('GET','${abemaUri}', '${userId}'); 56 | req.send(); 57 | }); 58 | ` 59 | const {result: {value: keyB64}} = await Runtime.evaluate({ 60 | expression: parseAbemaProtocolCommand, 61 | awaitPromise: true, 62 | }); 63 | 64 | // decoded aes key in base64 form 65 | console.log('keyB64', keyB64); 66 | 67 | // next steps: 68 | // gather all of the m3u8 and ts response data by Network.responseReceived event 69 | // decrypt the ts with above aes key and stream to a file 70 | })() -------------------------------------------------------------------------------- /poc/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | chrome-remote-interface@^0.24.4: 6 | version "0.24.4" 7 | resolved "https://registry.yarnpkg.com/chrome-remote-interface/-/chrome-remote-interface-0.24.4.tgz#8b202e655b143150eb69f9a5aaa443336f4a9032" 8 | dependencies: 9 | commander "2.1.x" 10 | ws "2.0.x" 11 | 12 | commander@2.1.x: 13 | version "2.1.0" 14 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" 15 | 16 | ultron@~1.1.0: 17 | version "1.1.0" 18 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864" 19 | 20 | ws@2.0.x: 21 | version "2.0.3" 22 | resolved "https://registry.yarnpkg.com/ws/-/ws-2.0.3.tgz#532fd499c3f7d7d720e543f1f807106cfc57d9cb" 23 | dependencies: 24 | ultron "~1.1.0" 25 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | acorn-jsx@^3.0.0: 6 | version "3.0.1" 7 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 8 | dependencies: 9 | acorn "^3.0.4" 10 | 11 | acorn@4.0.4, acorn@^4.0.3: 12 | version "4.0.4" 13 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" 14 | 15 | acorn@^3.0.4: 16 | version "3.3.0" 17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 18 | 19 | agent-base@2: 20 | version "2.0.1" 21 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e" 22 | dependencies: 23 | extend "~3.0.0" 24 | semver "~5.0.1" 25 | 26 | ajv-keywords@^1.0.0: 27 | version "1.5.1" 28 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 29 | 30 | ajv@^4.7.0: 31 | version "4.11.5" 32 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" 33 | dependencies: 34 | co "^4.6.0" 35 | json-stable-stringify "^1.0.1" 36 | 37 | align-text@^0.1.1, align-text@^0.1.3: 38 | version "0.1.4" 39 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 40 | dependencies: 41 | kind-of "^3.0.2" 42 | longest "^1.0.1" 43 | repeat-string "^1.5.2" 44 | 45 | alter@~0.2.0: 46 | version "0.2.0" 47 | resolved "https://registry.yarnpkg.com/alter/-/alter-0.2.0.tgz#c7588808617572034aae62480af26b1d4d1cb3cd" 48 | dependencies: 49 | stable "~0.1.3" 50 | 51 | amdefine@>=0.0.4: 52 | version "1.0.1" 53 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 54 | 55 | ansi-escapes@^1.1.0: 56 | version "1.4.0" 57 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 58 | 59 | ansi-regex@^2.0.0: 60 | version "2.1.1" 61 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 62 | 63 | ansi-styles@^2.2.1: 64 | version "2.2.1" 65 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 66 | 67 | argparse@^1.0.7: 68 | version "1.0.9" 69 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 70 | dependencies: 71 | sprintf-js "~1.0.2" 72 | 73 | array-union@^1.0.1: 74 | version "1.0.2" 75 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 76 | dependencies: 77 | array-uniq "^1.0.1" 78 | 79 | array-uniq@^1.0.1: 80 | version "1.0.3" 81 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 82 | 83 | arrify@^1.0.0: 84 | version "1.0.1" 85 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 86 | 87 | ast-traverse@~0.1.1: 88 | version "0.1.1" 89 | resolved "https://registry.yarnpkg.com/ast-traverse/-/ast-traverse-0.1.1.tgz#69cf2b8386f19dcda1bb1e05d68fe359d8897de6" 90 | 91 | ast-types@0.8.12: 92 | version "0.8.12" 93 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.8.12.tgz#a0d90e4351bb887716c83fd637ebf818af4adfcc" 94 | 95 | ast-types@0.9.6, ast-types@0.x.x: 96 | version "0.9.6" 97 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" 98 | 99 | asynckit@^0.4.0: 100 | version "0.4.0" 101 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 102 | 103 | babel-code-frame@^6.16.0: 104 | version "6.22.0" 105 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 106 | dependencies: 107 | chalk "^1.1.0" 108 | esutils "^2.0.2" 109 | js-tokens "^3.0.0" 110 | 111 | balanced-match@^0.4.1: 112 | version "0.4.2" 113 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 114 | 115 | brace-expansion@^1.0.0: 116 | version "1.1.6" 117 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 118 | dependencies: 119 | balanced-match "^0.4.1" 120 | concat-map "0.0.1" 121 | 122 | breakable@~1.0.0: 123 | version "1.0.0" 124 | resolved "https://registry.yarnpkg.com/breakable/-/breakable-1.0.0.tgz#784a797915a38ead27bad456b5572cb4bbaa78c1" 125 | 126 | buffer-shims@^1.0.0: 127 | version "1.0.0" 128 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 129 | 130 | caller-path@^0.1.0: 131 | version "0.1.0" 132 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 133 | dependencies: 134 | callsites "^0.2.0" 135 | 136 | callsites@^0.2.0: 137 | version "0.2.0" 138 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 139 | 140 | camelcase@^1.2.1: 141 | version "1.2.1" 142 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 143 | 144 | center-align@^0.1.1: 145 | version "0.1.3" 146 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 147 | dependencies: 148 | align-text "^0.1.3" 149 | lazy-cache "^1.0.3" 150 | 151 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: 152 | version "1.1.3" 153 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 154 | dependencies: 155 | ansi-styles "^2.2.1" 156 | escape-string-regexp "^1.0.2" 157 | has-ansi "^2.0.0" 158 | strip-ansi "^3.0.0" 159 | supports-color "^2.0.0" 160 | 161 | circular-json@^0.3.1: 162 | version "0.3.1" 163 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" 164 | 165 | cli-cursor@^1.0.1: 166 | version "1.0.2" 167 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 168 | dependencies: 169 | restore-cursor "^1.0.1" 170 | 171 | cli-width@^2.0.0: 172 | version "2.1.0" 173 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 174 | 175 | cliui@^2.1.0: 176 | version "2.1.0" 177 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 178 | dependencies: 179 | center-align "^0.1.1" 180 | right-align "^0.1.1" 181 | wordwrap "0.0.2" 182 | 183 | co@^4.6.0: 184 | version "4.6.0" 185 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 186 | 187 | co@~3.0.6: 188 | version "3.0.6" 189 | resolved "https://registry.yarnpkg.com/co/-/co-3.0.6.tgz#1445f226c5eb956138e68c9ac30167ea7d2e6bda" 190 | 191 | code-point-at@^1.0.0: 192 | version "1.1.0" 193 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 194 | 195 | combined-stream@^1.0.5: 196 | version "1.0.5" 197 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 198 | dependencies: 199 | delayed-stream "~1.0.0" 200 | 201 | commander@^2.5.0, commander@^2.9.0: 202 | version "2.9.0" 203 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 204 | dependencies: 205 | graceful-readlink ">= 1.0.0" 206 | 207 | commoner@~0.10.3: 208 | version "0.10.8" 209 | resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" 210 | dependencies: 211 | commander "^2.5.0" 212 | detective "^4.3.1" 213 | glob "^5.0.15" 214 | graceful-fs "^4.1.2" 215 | iconv-lite "^0.4.5" 216 | mkdirp "^0.5.0" 217 | private "^0.1.6" 218 | q "^1.1.2" 219 | recast "^0.11.17" 220 | 221 | component-emitter@^1.2.0: 222 | version "1.2.1" 223 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 224 | 225 | concat-map@0.0.1: 226 | version "0.0.1" 227 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 228 | 229 | concat-stream@^1.4.6: 230 | version "1.6.0" 231 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 232 | dependencies: 233 | inherits "^2.0.3" 234 | readable-stream "^2.2.2" 235 | typedarray "^0.0.6" 236 | 237 | cookiejar@^2.0.6: 238 | version "2.1.0" 239 | resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.0.tgz#86549689539b6d0e269b6637a304be508194d898" 240 | 241 | core-util-is@~1.0.0: 242 | version "1.0.2" 243 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 244 | 245 | crypto-js@^3.1.9-1: 246 | version "3.1.9-1" 247 | resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.9-1.tgz#fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8" 248 | 249 | d@1: 250 | version "1.0.0" 251 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" 252 | dependencies: 253 | es5-ext "^0.10.9" 254 | 255 | d@~0.1.1: 256 | version "0.1.1" 257 | resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" 258 | dependencies: 259 | es5-ext "~0.10.2" 260 | 261 | data-uri-to-buffer@0: 262 | version "0.0.4" 263 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz#46e13ab9da8e309745c8d01ce547213ebdb2fe3f" 264 | 265 | debug@2, debug@^2.1.1, debug@^2.2.0: 266 | version "2.6.3" 267 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" 268 | dependencies: 269 | ms "0.7.2" 270 | 271 | decamelize@^1.0.0: 272 | version "1.2.0" 273 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 274 | 275 | deep-is@~0.1.3: 276 | version "0.1.3" 277 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 278 | 279 | defined@^1.0.0: 280 | version "1.0.0" 281 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 282 | 283 | defs@~1.1.0: 284 | version "1.1.1" 285 | resolved "https://registry.yarnpkg.com/defs/-/defs-1.1.1.tgz#b22609f2c7a11ba7a3db116805c139b1caffa9d2" 286 | dependencies: 287 | alter "~0.2.0" 288 | ast-traverse "~0.1.1" 289 | breakable "~1.0.0" 290 | esprima-fb "~15001.1001.0-dev-harmony-fb" 291 | simple-fmt "~0.1.0" 292 | simple-is "~0.2.0" 293 | stringmap "~0.2.2" 294 | stringset "~0.2.1" 295 | tryor "~0.1.2" 296 | yargs "~3.27.0" 297 | 298 | degenerator@~1.0.0: 299 | version "1.0.4" 300 | resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" 301 | dependencies: 302 | ast-types "0.x.x" 303 | escodegen "1.x.x" 304 | esprima "3.x.x" 305 | 306 | del@^2.0.2: 307 | version "2.2.2" 308 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 309 | dependencies: 310 | globby "^5.0.0" 311 | is-path-cwd "^1.0.0" 312 | is-path-in-cwd "^1.0.0" 313 | object-assign "^4.0.1" 314 | pify "^2.0.0" 315 | pinkie-promise "^2.0.0" 316 | rimraf "^2.2.8" 317 | 318 | delayed-stream@~1.0.0: 319 | version "1.0.0" 320 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 321 | 322 | detective@^4.3.1: 323 | version "4.5.0" 324 | resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" 325 | dependencies: 326 | acorn "^4.0.3" 327 | defined "^1.0.0" 328 | 329 | doctrine@^1.2.2: 330 | version "1.5.0" 331 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 332 | dependencies: 333 | esutils "^2.0.2" 334 | isarray "^1.0.0" 335 | 336 | es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.11, es5-ext@~0.10.14, es5-ext@~0.10.2: 337 | version "0.10.14" 338 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.14.tgz#625bc9ab9cac0f6fb9dc271525823d1800b3d360" 339 | dependencies: 340 | es6-iterator "2" 341 | es6-symbol "~3.1" 342 | 343 | es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: 344 | version "2.0.1" 345 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" 346 | dependencies: 347 | d "1" 348 | es5-ext "^0.10.14" 349 | es6-symbol "^3.1" 350 | 351 | es6-map@^0.1.3: 352 | version "0.1.4" 353 | resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.4.tgz#a34b147be224773a4d7da8072794cefa3632b897" 354 | dependencies: 355 | d "~0.1.1" 356 | es5-ext "~0.10.11" 357 | es6-iterator "2" 358 | es6-set "~0.1.3" 359 | es6-symbol "~3.1.0" 360 | event-emitter "~0.3.4" 361 | 362 | es6-set@~0.1.3: 363 | version "0.1.5" 364 | resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" 365 | dependencies: 366 | d "1" 367 | es5-ext "~0.10.14" 368 | es6-iterator "~2.0.1" 369 | es6-symbol "3.1.1" 370 | event-emitter "~0.3.5" 371 | 372 | es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.0: 373 | version "3.1.1" 374 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" 375 | dependencies: 376 | d "1" 377 | es5-ext "~0.10.14" 378 | 379 | es6-weak-map@^2.0.1: 380 | version "2.0.2" 381 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" 382 | dependencies: 383 | d "1" 384 | es5-ext "^0.10.14" 385 | es6-iterator "^2.0.1" 386 | es6-symbol "^3.1.1" 387 | 388 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 389 | version "1.0.5" 390 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 391 | 392 | escodegen@1.x.x: 393 | version "1.8.1" 394 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" 395 | dependencies: 396 | esprima "^2.7.1" 397 | estraverse "^1.9.1" 398 | esutils "^2.0.2" 399 | optionator "^0.8.1" 400 | optionalDependencies: 401 | source-map "~0.2.0" 402 | 403 | escope@^3.6.0: 404 | version "3.6.0" 405 | resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 406 | dependencies: 407 | es6-map "^0.1.3" 408 | es6-weak-map "^2.0.1" 409 | esrecurse "^4.1.0" 410 | estraverse "^4.1.1" 411 | 412 | eslint-config-google@^0.7.1: 413 | version "0.7.1" 414 | resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.7.1.tgz#5598f8498e9e078420f34b80495b8d959f651fb2" 415 | 416 | eslint@^3.17.1: 417 | version "3.17.1" 418 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.17.1.tgz#b80ae12d9c406d858406fccda627afce33ea10ea" 419 | dependencies: 420 | babel-code-frame "^6.16.0" 421 | chalk "^1.1.3" 422 | concat-stream "^1.4.6" 423 | debug "^2.1.1" 424 | doctrine "^1.2.2" 425 | escope "^3.6.0" 426 | espree "^3.4.0" 427 | estraverse "^4.2.0" 428 | esutils "^2.0.2" 429 | file-entry-cache "^2.0.0" 430 | glob "^7.0.3" 431 | globals "^9.14.0" 432 | ignore "^3.2.0" 433 | imurmurhash "^0.1.4" 434 | inquirer "^0.12.0" 435 | is-my-json-valid "^2.10.0" 436 | is-resolvable "^1.0.0" 437 | js-yaml "^3.5.1" 438 | json-stable-stringify "^1.0.0" 439 | levn "^0.3.0" 440 | lodash "^4.0.0" 441 | mkdirp "^0.5.0" 442 | natural-compare "^1.4.0" 443 | optionator "^0.8.2" 444 | path-is-inside "^1.0.1" 445 | pluralize "^1.2.1" 446 | progress "^1.1.8" 447 | require-uncached "^1.0.2" 448 | shelljs "^0.7.5" 449 | strip-bom "^3.0.0" 450 | strip-json-comments "~2.0.1" 451 | table "^3.7.8" 452 | text-table "~0.2.0" 453 | user-home "^2.0.0" 454 | 455 | espree@^3.4.0: 456 | version "3.4.0" 457 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d" 458 | dependencies: 459 | acorn "4.0.4" 460 | acorn-jsx "^3.0.0" 461 | 462 | esprima-fb@~15001.1001.0-dev-harmony-fb: 463 | version "15001.1001.0-dev-harmony-fb" 464 | resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz#43beb57ec26e8cf237d3dd8b33e42533577f2659" 465 | 466 | esprima@3.x.x, esprima@^3.1.1, esprima@~3.1.0: 467 | version "3.1.3" 468 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 469 | 470 | esprima@^2.7.1: 471 | version "2.7.3" 472 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 473 | 474 | esrecurse@^4.1.0: 475 | version "4.1.0" 476 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" 477 | dependencies: 478 | estraverse "~4.1.0" 479 | object-assign "^4.0.1" 480 | 481 | estraverse@^1.9.1: 482 | version "1.9.3" 483 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" 484 | 485 | estraverse@^4.1.1, estraverse@^4.2.0: 486 | version "4.2.0" 487 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 488 | 489 | estraverse@~4.1.0: 490 | version "4.1.1" 491 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" 492 | 493 | esutils@^2.0.2: 494 | version "2.0.2" 495 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 496 | 497 | event-emitter@~0.3.4, event-emitter@~0.3.5: 498 | version "0.3.5" 499 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 500 | dependencies: 501 | d "1" 502 | es5-ext "~0.10.14" 503 | 504 | exit-hook@^1.0.0: 505 | version "1.1.1" 506 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 507 | 508 | extend@3, extend@^3.0.0, extend@~3.0.0: 509 | version "3.0.0" 510 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 511 | 512 | fast-levenshtein@~2.0.4: 513 | version "2.0.6" 514 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 515 | 516 | figures@^1.3.5: 517 | version "1.7.0" 518 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 519 | dependencies: 520 | escape-string-regexp "^1.0.5" 521 | object-assign "^4.1.0" 522 | 523 | file-entry-cache@^2.0.0: 524 | version "2.0.0" 525 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 526 | dependencies: 527 | flat-cache "^1.2.1" 528 | object-assign "^4.0.1" 529 | 530 | file-uri-to-path@0: 531 | version "0.0.2" 532 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-0.0.2.tgz#37cdd1b5b905404b3f05e1b23645be694ff70f82" 533 | 534 | flat-cache@^1.2.1: 535 | version "1.2.2" 536 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 537 | dependencies: 538 | circular-json "^0.3.1" 539 | del "^2.0.2" 540 | graceful-fs "^4.1.2" 541 | write "^0.2.1" 542 | 543 | form-data@^2.1.1: 544 | version "2.1.2" 545 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 546 | dependencies: 547 | asynckit "^0.4.0" 548 | combined-stream "^1.0.5" 549 | mime-types "^2.1.12" 550 | 551 | formidable@^1.1.1: 552 | version "1.1.1" 553 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9" 554 | 555 | fs.realpath@^1.0.0: 556 | version "1.0.0" 557 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 558 | 559 | ftp@~0.3.5: 560 | version "0.3.10" 561 | resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" 562 | dependencies: 563 | readable-stream "1.1.x" 564 | xregexp "2.0.0" 565 | 566 | generate-function@^2.0.0: 567 | version "2.0.0" 568 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 569 | 570 | generate-object-property@^1.1.0: 571 | version "1.2.0" 572 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 573 | dependencies: 574 | is-property "^1.0.0" 575 | 576 | get-uri@1: 577 | version "1.1.0" 578 | resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-1.1.0.tgz#7375d04daf7fcb584b3632679cbdf339b51bb149" 579 | dependencies: 580 | data-uri-to-buffer "0" 581 | debug "2" 582 | extend "3" 583 | file-uri-to-path "0" 584 | ftp "~0.3.5" 585 | readable-stream "2" 586 | 587 | glob@^5.0.15: 588 | version "5.0.15" 589 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" 590 | dependencies: 591 | inflight "^1.0.4" 592 | inherits "2" 593 | minimatch "2 || 3" 594 | once "^1.3.0" 595 | path-is-absolute "^1.0.0" 596 | 597 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: 598 | version "7.1.1" 599 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 600 | dependencies: 601 | fs.realpath "^1.0.0" 602 | inflight "^1.0.4" 603 | inherits "2" 604 | minimatch "^3.0.2" 605 | once "^1.3.0" 606 | path-is-absolute "^1.0.0" 607 | 608 | globals@^9.14.0: 609 | version "9.16.0" 610 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80" 611 | 612 | globby@^5.0.0: 613 | version "5.0.0" 614 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 615 | dependencies: 616 | array-union "^1.0.1" 617 | arrify "^1.0.0" 618 | glob "^7.0.3" 619 | object-assign "^4.0.1" 620 | pify "^2.0.0" 621 | pinkie-promise "^2.0.0" 622 | 623 | graceful-fs@^4.1.2: 624 | version "4.1.11" 625 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 626 | 627 | "graceful-readlink@>= 1.0.0": 628 | version "1.0.1" 629 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 630 | 631 | has-ansi@^2.0.0: 632 | version "2.0.0" 633 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 634 | dependencies: 635 | ansi-regex "^2.0.0" 636 | 637 | http-proxy-agent@1: 638 | version "1.0.0" 639 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a" 640 | dependencies: 641 | agent-base "2" 642 | debug "2" 643 | extend "3" 644 | 645 | https-proxy-agent@1: 646 | version "1.0.0" 647 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" 648 | dependencies: 649 | agent-base "2" 650 | debug "2" 651 | extend "3" 652 | 653 | iconv-lite@^0.4.5: 654 | version "0.4.15" 655 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" 656 | 657 | ignore@^3.2.0: 658 | version "3.2.6" 659 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c" 660 | 661 | imurmurhash@^0.1.4: 662 | version "0.1.4" 663 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 664 | 665 | inflight@^1.0.4: 666 | version "1.0.6" 667 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 668 | dependencies: 669 | once "^1.3.0" 670 | wrappy "1" 671 | 672 | inherits@2, inherits@^2.0.3, inherits@~2.0.1: 673 | version "2.0.3" 674 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 675 | 676 | inquirer@^0.12.0: 677 | version "0.12.0" 678 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" 679 | dependencies: 680 | ansi-escapes "^1.1.0" 681 | ansi-regex "^2.0.0" 682 | chalk "^1.0.0" 683 | cli-cursor "^1.0.1" 684 | cli-width "^2.0.0" 685 | figures "^1.3.5" 686 | lodash "^4.3.0" 687 | readline2 "^1.0.1" 688 | run-async "^0.1.0" 689 | rx-lite "^3.1.2" 690 | string-width "^1.0.1" 691 | strip-ansi "^3.0.0" 692 | through "^2.3.6" 693 | 694 | interpret@^1.0.0: 695 | version "1.0.1" 696 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" 697 | 698 | invert-kv@^1.0.0: 699 | version "1.0.0" 700 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 701 | 702 | ip@^1.1.4: 703 | version "1.1.5" 704 | resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" 705 | 706 | is-buffer@^1.0.2: 707 | version "1.1.5" 708 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 709 | 710 | is-fullwidth-code-point@^1.0.0: 711 | version "1.0.0" 712 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 713 | dependencies: 714 | number-is-nan "^1.0.0" 715 | 716 | is-fullwidth-code-point@^2.0.0: 717 | version "2.0.0" 718 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 719 | 720 | is-my-json-valid@^2.10.0: 721 | version "2.16.0" 722 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" 723 | dependencies: 724 | generate-function "^2.0.0" 725 | generate-object-property "^1.1.0" 726 | jsonpointer "^4.0.0" 727 | xtend "^4.0.0" 728 | 729 | is-path-cwd@^1.0.0: 730 | version "1.0.0" 731 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 732 | 733 | is-path-in-cwd@^1.0.0: 734 | version "1.0.0" 735 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 736 | dependencies: 737 | is-path-inside "^1.0.0" 738 | 739 | is-path-inside@^1.0.0: 740 | version "1.0.0" 741 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 742 | dependencies: 743 | path-is-inside "^1.0.1" 744 | 745 | is-property@^1.0.0: 746 | version "1.0.2" 747 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 748 | 749 | is-resolvable@^1.0.0: 750 | version "1.0.0" 751 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 752 | dependencies: 753 | tryit "^1.0.1" 754 | 755 | isarray@0.0.1: 756 | version "0.0.1" 757 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 758 | 759 | isarray@^1.0.0, isarray@~1.0.0: 760 | version "1.0.0" 761 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 762 | 763 | js-tokens@^3.0.0: 764 | version "3.0.1" 765 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" 766 | 767 | js-yaml@^3.5.1: 768 | version "3.8.2" 769 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.2.tgz#02d3e2c0f6beab20248d412c352203827d786721" 770 | dependencies: 771 | argparse "^1.0.7" 772 | esprima "^3.1.1" 773 | 774 | json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: 775 | version "1.0.1" 776 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 777 | dependencies: 778 | jsonify "~0.0.0" 779 | 780 | jsonify@~0.0.0: 781 | version "0.0.0" 782 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 783 | 784 | jsonpointer@^4.0.0: 785 | version "4.0.1" 786 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 787 | 788 | kind-of@^3.0.2: 789 | version "3.1.0" 790 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 791 | dependencies: 792 | is-buffer "^1.0.2" 793 | 794 | lazy-cache@^1.0.3: 795 | version "1.0.4" 796 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 797 | 798 | lcid@^1.0.0: 799 | version "1.0.0" 800 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 801 | dependencies: 802 | invert-kv "^1.0.0" 803 | 804 | left-pad@^1.1.3: 805 | version "1.1.3" 806 | resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a" 807 | 808 | levn@^0.3.0, levn@~0.3.0: 809 | version "0.3.0" 810 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 811 | dependencies: 812 | prelude-ls "~1.1.2" 813 | type-check "~0.3.2" 814 | 815 | lodash@^4.0.0, lodash@^4.3.0: 816 | version "4.17.4" 817 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 818 | 819 | longest@^1.0.1: 820 | version "1.0.1" 821 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 822 | 823 | lru-cache@~2.6.5: 824 | version "2.6.5" 825 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.5.tgz#e56d6354148ede8d7707b58d143220fd08df0fd5" 826 | 827 | m3u8-parser@^2.1.0: 828 | version "2.1.0" 829 | resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-2.1.0.tgz#c8170329ec1cd515d0d58bb8b762da9896cb0368" 830 | 831 | methods@^1.1.1: 832 | version "1.1.2" 833 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 834 | 835 | mime-db@~1.26.0: 836 | version "1.26.0" 837 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" 838 | 839 | mime-types@^2.1.12: 840 | version "2.1.14" 841 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" 842 | dependencies: 843 | mime-db "~1.26.0" 844 | 845 | mime@^1.3.4: 846 | version "1.3.4" 847 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 848 | 849 | "minimatch@2 || 3", minimatch@^3.0.2: 850 | version "3.0.3" 851 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 852 | dependencies: 853 | brace-expansion "^1.0.0" 854 | 855 | minimist@0.0.8: 856 | version "0.0.8" 857 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 858 | 859 | mkdirp@^0.5.0, mkdirp@^0.5.1: 860 | version "0.5.1" 861 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 862 | dependencies: 863 | minimist "0.0.8" 864 | 865 | moment@^2.18.1: 866 | version "2.18.1" 867 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" 868 | 869 | ms@0.7.2: 870 | version "0.7.2" 871 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 872 | 873 | mute-stream@0.0.5: 874 | version "0.0.5" 875 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" 876 | 877 | natural-compare@^1.4.0: 878 | version "1.4.0" 879 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 880 | 881 | netmask@~1.0.4: 882 | version "1.0.6" 883 | resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" 884 | 885 | number-is-nan@^1.0.0: 886 | version "1.0.1" 887 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 888 | 889 | object-assign@^4.0.1, object-assign@^4.1.0: 890 | version "4.1.1" 891 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 892 | 893 | once@^1.3.0: 894 | version "1.4.0" 895 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 896 | dependencies: 897 | wrappy "1" 898 | 899 | onetime@^1.0.0: 900 | version "1.1.0" 901 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 902 | 903 | optionator@^0.8.1, optionator@^0.8.2: 904 | version "0.8.2" 905 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 906 | dependencies: 907 | deep-is "~0.1.3" 908 | fast-levenshtein "~2.0.4" 909 | levn "~0.3.0" 910 | prelude-ls "~1.1.2" 911 | type-check "~0.3.2" 912 | wordwrap "~1.0.0" 913 | 914 | os-homedir@^1.0.0: 915 | version "1.0.2" 916 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 917 | 918 | os-locale@^1.4.0: 919 | version "1.4.0" 920 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 921 | dependencies: 922 | lcid "^1.0.0" 923 | 924 | pac-proxy-agent@1: 925 | version "1.0.0" 926 | resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-1.0.0.tgz#dcd5b746581367430a236e88eacfd4e5b8d068a5" 927 | dependencies: 928 | agent-base "2" 929 | debug "2" 930 | extend "3" 931 | get-uri "1" 932 | http-proxy-agent "1" 933 | https-proxy-agent "1" 934 | pac-resolver "~1.2.1" 935 | socks-proxy-agent "2" 936 | stream-to-buffer "0.1.0" 937 | 938 | pac-resolver@~1.2.1: 939 | version "1.2.6" 940 | resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-1.2.6.tgz#ed03af0c5b5933505bdd3f07f75175466d5e7cfb" 941 | dependencies: 942 | co "~3.0.6" 943 | degenerator "~1.0.0" 944 | netmask "~1.0.4" 945 | regenerator "~0.8.13" 946 | thunkify "~2.1.1" 947 | 948 | path-is-absolute@^1.0.0: 949 | version "1.0.1" 950 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 951 | 952 | path-is-inside@^1.0.1: 953 | version "1.0.2" 954 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 955 | 956 | path-parse@^1.0.5: 957 | version "1.0.5" 958 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 959 | 960 | pify@^2.0.0: 961 | version "2.3.0" 962 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 963 | 964 | pinkie-promise@^2.0.0: 965 | version "2.0.1" 966 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 967 | dependencies: 968 | pinkie "^2.0.0" 969 | 970 | pinkie@^2.0.0: 971 | version "2.0.4" 972 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 973 | 974 | pluralize@^1.2.1: 975 | version "1.2.1" 976 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" 977 | 978 | prelude-ls@~1.1.2: 979 | version "1.1.2" 980 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 981 | 982 | private@^0.1.6, private@~0.1.5: 983 | version "0.1.7" 984 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" 985 | 986 | process-nextick-args@~1.0.6: 987 | version "1.0.7" 988 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 989 | 990 | progress@^1.1.8: 991 | version "1.1.8" 992 | resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 993 | 994 | proxy-agent@2: 995 | version "2.0.0" 996 | resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499" 997 | dependencies: 998 | agent-base "2" 999 | debug "2" 1000 | extend "3" 1001 | http-proxy-agent "1" 1002 | https-proxy-agent "1" 1003 | lru-cache "~2.6.5" 1004 | pac-proxy-agent "1" 1005 | socks-proxy-agent "2" 1006 | 1007 | q@^1.1.2: 1008 | version "1.4.1" 1009 | resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" 1010 | 1011 | qs@^6.1.0: 1012 | version "6.4.0" 1013 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 1014 | 1015 | readable-stream@1.1.x: 1016 | version "1.1.14" 1017 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 1018 | dependencies: 1019 | core-util-is "~1.0.0" 1020 | inherits "~2.0.1" 1021 | isarray "0.0.1" 1022 | string_decoder "~0.10.x" 1023 | 1024 | readable-stream@2, readable-stream@^2.0.5, readable-stream@^2.2.2: 1025 | version "2.2.6" 1026 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" 1027 | dependencies: 1028 | buffer-shims "^1.0.0" 1029 | core-util-is "~1.0.0" 1030 | inherits "~2.0.1" 1031 | isarray "~1.0.0" 1032 | process-nextick-args "~1.0.6" 1033 | string_decoder "~0.10.x" 1034 | util-deprecate "~1.0.1" 1035 | 1036 | readline2@^1.0.1: 1037 | version "1.0.1" 1038 | resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" 1039 | dependencies: 1040 | code-point-at "^1.0.0" 1041 | is-fullwidth-code-point "^1.0.0" 1042 | mute-stream "0.0.5" 1043 | 1044 | recast@0.10.33: 1045 | version "0.10.33" 1046 | resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.33.tgz#942808f7aa016f1fa7142c461d7e5704aaa8d697" 1047 | dependencies: 1048 | ast-types "0.8.12" 1049 | esprima-fb "~15001.1001.0-dev-harmony-fb" 1050 | private "~0.1.5" 1051 | source-map "~0.5.0" 1052 | 1053 | recast@^0.11.17: 1054 | version "0.11.23" 1055 | resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" 1056 | dependencies: 1057 | ast-types "0.9.6" 1058 | esprima "~3.1.0" 1059 | private "~0.1.5" 1060 | source-map "~0.5.0" 1061 | 1062 | rechoir@^0.6.2: 1063 | version "0.6.2" 1064 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 1065 | dependencies: 1066 | resolve "^1.1.6" 1067 | 1068 | regenerator-runtime@~0.9.5: 1069 | version "0.9.6" 1070 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" 1071 | 1072 | regenerator@~0.8.13: 1073 | version "0.8.46" 1074 | resolved "https://registry.yarnpkg.com/regenerator/-/regenerator-0.8.46.tgz#154c327686361ed52cad69b2545efc53a3d07696" 1075 | dependencies: 1076 | commoner "~0.10.3" 1077 | defs "~1.1.0" 1078 | esprima-fb "~15001.1001.0-dev-harmony-fb" 1079 | private "~0.1.5" 1080 | recast "0.10.33" 1081 | regenerator-runtime "~0.9.5" 1082 | through "~2.3.8" 1083 | 1084 | repeat-string@^1.5.2: 1085 | version "1.6.1" 1086 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1087 | 1088 | require-uncached@^1.0.2: 1089 | version "1.0.3" 1090 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 1091 | dependencies: 1092 | caller-path "^0.1.0" 1093 | resolve-from "^1.0.0" 1094 | 1095 | resolve-from@^1.0.0: 1096 | version "1.0.1" 1097 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 1098 | 1099 | resolve@^1.1.6: 1100 | version "1.3.2" 1101 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" 1102 | dependencies: 1103 | path-parse "^1.0.5" 1104 | 1105 | restore-cursor@^1.0.1: 1106 | version "1.0.1" 1107 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 1108 | dependencies: 1109 | exit-hook "^1.0.0" 1110 | onetime "^1.0.0" 1111 | 1112 | right-align@^0.1.1: 1113 | version "0.1.3" 1114 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 1115 | dependencies: 1116 | align-text "^0.1.1" 1117 | 1118 | rimraf@^2.2.8: 1119 | version "2.6.1" 1120 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 1121 | dependencies: 1122 | glob "^7.0.5" 1123 | 1124 | run-async@^0.1.0: 1125 | version "0.1.0" 1126 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" 1127 | dependencies: 1128 | once "^1.3.0" 1129 | 1130 | rx-lite@^3.1.2: 1131 | version "3.1.2" 1132 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" 1133 | 1134 | semver@~5.0.1: 1135 | version "5.0.3" 1136 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" 1137 | 1138 | shelljs@^0.7.5: 1139 | version "0.7.7" 1140 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" 1141 | dependencies: 1142 | glob "^7.0.0" 1143 | interpret "^1.0.0" 1144 | rechoir "^0.6.2" 1145 | 1146 | simple-fmt@~0.1.0: 1147 | version "0.1.0" 1148 | resolved "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz#191bf566a59e6530482cb25ab53b4a8dc85c3a6b" 1149 | 1150 | simple-is@~0.2.0: 1151 | version "0.2.0" 1152 | resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" 1153 | 1154 | slice-ansi@0.0.4: 1155 | version "0.0.4" 1156 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 1157 | 1158 | smart-buffer@^1.0.13: 1159 | version "1.1.15" 1160 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" 1161 | 1162 | socks-proxy-agent@2: 1163 | version "2.0.0" 1164 | resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-2.0.0.tgz#c674842d70410fb28ae1e92e6135a927854bc275" 1165 | dependencies: 1166 | agent-base "2" 1167 | extend "3" 1168 | socks "~1.1.5" 1169 | 1170 | socks@~1.1.5: 1171 | version "1.1.10" 1172 | resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" 1173 | dependencies: 1174 | ip "^1.1.4" 1175 | smart-buffer "^1.0.13" 1176 | 1177 | source-map@~0.2.0: 1178 | version "0.2.0" 1179 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" 1180 | dependencies: 1181 | amdefine ">=0.0.4" 1182 | 1183 | source-map@~0.5.0: 1184 | version "0.5.6" 1185 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 1186 | 1187 | sprintf-js@~1.0.2: 1188 | version "1.0.3" 1189 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1190 | 1191 | stable@~0.1.3: 1192 | version "0.1.6" 1193 | resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.6.tgz#910f5d2aed7b520c6e777499c1f32e139fdecb10" 1194 | 1195 | stream-to-buffer@0.1.0: 1196 | version "0.1.0" 1197 | resolved "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9" 1198 | dependencies: 1199 | stream-to "~0.2.0" 1200 | 1201 | stream-to@~0.2.0: 1202 | version "0.2.2" 1203 | resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d" 1204 | 1205 | string-width@^1.0.1: 1206 | version "1.0.2" 1207 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1208 | dependencies: 1209 | code-point-at "^1.0.0" 1210 | is-fullwidth-code-point "^1.0.0" 1211 | strip-ansi "^3.0.0" 1212 | 1213 | string-width@^2.0.0: 1214 | version "2.0.0" 1215 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" 1216 | dependencies: 1217 | is-fullwidth-code-point "^2.0.0" 1218 | strip-ansi "^3.0.0" 1219 | 1220 | string_decoder@~0.10.x: 1221 | version "0.10.31" 1222 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 1223 | 1224 | stringmap@~0.2.2: 1225 | version "0.2.2" 1226 | resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" 1227 | 1228 | stringset@~0.2.1: 1229 | version "0.2.1" 1230 | resolved "https://registry.yarnpkg.com/stringset/-/stringset-0.2.1.tgz#ef259c4e349344377fcd1c913dd2e848c9c042b5" 1231 | 1232 | strip-ansi@^3.0.0: 1233 | version "3.0.1" 1234 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1235 | dependencies: 1236 | ansi-regex "^2.0.0" 1237 | 1238 | strip-bom@^3.0.0: 1239 | version "3.0.0" 1240 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1241 | 1242 | strip-json-comments@~2.0.1: 1243 | version "2.0.1" 1244 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1245 | 1246 | superagent-proxy@^1.0.2: 1247 | version "1.0.2" 1248 | resolved "https://registry.yarnpkg.com/superagent-proxy/-/superagent-proxy-1.0.2.tgz#92d3660578f618ed43a82cf8cac799fe2938ba2d" 1249 | dependencies: 1250 | debug "2" 1251 | proxy-agent "2" 1252 | 1253 | superagent@^3.5.0: 1254 | version "3.5.0" 1255 | resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.5.0.tgz#56872b8e1ee6de994035ada2e53266899af95a6d" 1256 | dependencies: 1257 | component-emitter "^1.2.0" 1258 | cookiejar "^2.0.6" 1259 | debug "^2.2.0" 1260 | extend "^3.0.0" 1261 | form-data "^2.1.1" 1262 | formidable "^1.1.1" 1263 | methods "^1.1.1" 1264 | mime "^1.3.4" 1265 | qs "^6.1.0" 1266 | readable-stream "^2.0.5" 1267 | 1268 | supports-color@^2.0.0: 1269 | version "2.0.0" 1270 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1271 | 1272 | table@^3.7.8: 1273 | version "3.8.3" 1274 | resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" 1275 | dependencies: 1276 | ajv "^4.7.0" 1277 | ajv-keywords "^1.0.0" 1278 | chalk "^1.1.1" 1279 | lodash "^4.0.0" 1280 | slice-ansi "0.0.4" 1281 | string-width "^2.0.0" 1282 | 1283 | text-table@~0.2.0: 1284 | version "0.2.0" 1285 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1286 | 1287 | through@^2.3.6, through@~2.3.8: 1288 | version "2.3.8" 1289 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1290 | 1291 | thunkify@~2.1.1: 1292 | version "2.1.2" 1293 | resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" 1294 | 1295 | tryit@^1.0.1: 1296 | version "1.0.3" 1297 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 1298 | 1299 | tryor@~0.1.2: 1300 | version "0.1.2" 1301 | resolved "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz#8145e4ca7caff40acde3ccf946e8b8bb75b4172b" 1302 | 1303 | type-check@~0.3.2: 1304 | version "0.3.2" 1305 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1306 | dependencies: 1307 | prelude-ls "~1.1.2" 1308 | 1309 | typedarray@^0.0.6: 1310 | version "0.0.6" 1311 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1312 | 1313 | user-home@^2.0.0: 1314 | version "2.0.0" 1315 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 1316 | dependencies: 1317 | os-homedir "^1.0.0" 1318 | 1319 | util-deprecate@~1.0.1: 1320 | version "1.0.2" 1321 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1322 | 1323 | window-size@^0.1.2: 1324 | version "0.1.4" 1325 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" 1326 | 1327 | wordwrap@0.0.2: 1328 | version "0.0.2" 1329 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 1330 | 1331 | wordwrap@~1.0.0: 1332 | version "1.0.0" 1333 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1334 | 1335 | wrappy@1: 1336 | version "1.0.2" 1337 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1338 | 1339 | write@^0.2.1: 1340 | version "0.2.1" 1341 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 1342 | dependencies: 1343 | mkdirp "^0.5.1" 1344 | 1345 | xregexp@2.0.0: 1346 | version "2.0.0" 1347 | resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" 1348 | 1349 | xtend@^4.0.0: 1350 | version "4.0.1" 1351 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1352 | 1353 | y18n@^3.2.0: 1354 | version "3.2.1" 1355 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 1356 | 1357 | yargs@~3.27.0: 1358 | version "3.27.0" 1359 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.27.0.tgz#21205469316e939131d59f2da0c6d7f98221ea40" 1360 | dependencies: 1361 | camelcase "^1.2.1" 1362 | cliui "^2.1.0" 1363 | decamelize "^1.0.0" 1364 | os-locale "^1.4.0" 1365 | window-size "^0.1.2" 1366 | y18n "^3.2.0" 1367 | --------------------------------------------------------------------------------