├── LICENSE ├── NOTES ├── README ├── filament ├── filament.d.ts ├── filament.js └── filament.wasm ├── package.json ├── src ├── app.ts ├── audio.ts ├── chasecam.ts ├── display.ts ├── sampler.ts ├── simulation.ts ├── urls.ts └── vehicle.ts ├── tsconfig.json ├── tslint.json ├── webpack.config.js └── yarn.lock /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Thibaut Despoulain 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /NOTES: -------------------------------------------------------------------------------- 1 | Draw the booster sprite and add post-processing effects. 2 | 3 | Android 4 | 5 | Fix culling issue 6 | 7 | Port over the Hud class: 3,2,1 animation etc 8 | 9 | Implement game menu 10 | 11 | Controller Support 12 | 13 | Two Player Split Screen 14 | 15 | Switch to the official TS annotations and NPM for Filament itself 16 | 17 | --- 18 | 19 | ThreeJS => glMatrix notes 20 | 21 | rotateAxis => transformDirection => 22 | vec3.transformQuat / vec3.transformMat4 / vec3.transformMat3 23 | rotateByAxis => mat4.fromRotation 24 | compose => mat4.fromRotationTranslation 25 | decompose => mat4.getRotation, mat4.getTranslation 26 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This is a complete rewrite of Thibaut Despoulain's HexGL racing game using TypeScript and Filament. 2 | 3 | I tilt my hat to Thibaut and everyone who contributed to his awesome project! 🎩 4 | 5 | Before building the web app, clone the master and gh-pages branches separately as follows. 6 | 7 | git clone https://github.com/prideout/hexgl.git hexgl_source 8 | git clone -b gh-pages https://github.com/prideout/hexgl.git hexgl_public 9 | cd hexgl_source 10 | yarn install 11 | yarn build 12 | cd ../hexgl_public 13 | npx http-server 14 | 15 | The master branch contains only the source code, while gh-pages contains resource files and the 16 | output of the build. 17 | -------------------------------------------------------------------------------- /filament/filament.d.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------------------------- 2 | // Declares TypeScript annotations for Filament, which is implemented with an external WASM library. 3 | // We will eventually autogenerate this file, but for now it is incomplete and hand-authored. 4 | // ------------------------------------------------------------------------------------------------- 5 | 6 | import * as glm from "gl-matrix"; 7 | 8 | export as namespace Filament; 9 | 10 | export function getSupportedFormatSuffix(desired: string): void; 11 | export function init(assets: string[], onready: () => void): void; 12 | export function fetch(assets: string[], onready: () => void): void; 13 | 14 | export const assets: {[url: string]: Uint8Array}; 15 | 16 | export type Box = number[][]; 17 | export type float2 = glm.vec2|number[]; 18 | export type float3 = glm.vec3|number[]; 19 | export type float4 = glm.vec4|number[]; 20 | export type mat3 = glm.mat3|number[]; 21 | export type mat4 = glm.mat4|number[]; 22 | 23 | export class Entity {} 24 | export class Skybox {} 25 | export class Texture {} 26 | export class SwapChain {} 27 | 28 | export class LightManager$Instance { 29 | public delete(): void; 30 | } 31 | 32 | export class RenderableManager$Instance { 33 | public delete(): void; 34 | } 35 | 36 | export class TransformManager$Instance { 37 | public delete(): void; 38 | } 39 | 40 | export class TextureSampler { 41 | constructor(minfilter: MinFilter, magfilter: MagFilter, wrapmode: WrapMode); 42 | } 43 | 44 | export class MaterialInstance { 45 | public setFloatParameter(name: string, value: number): void; 46 | public setFloat2Parameter(name: string, value: float2): void; 47 | public setFloat3Parameter(name: string, value: float3): void; 48 | public setFloat4Parameter(name: string, value: float4): void; 49 | public setTextureParameter(name: string, value: Texture, sampler: TextureSampler): void; 50 | public setColorParameter(name: string, ctype: RgbType, value: float3): void; 51 | public setPolygonOffset(scale: number, constant: number): void; 52 | } 53 | 54 | export class EntityManager { 55 | public static get(): EntityManager; 56 | public create(): Entity; 57 | } 58 | 59 | export class VertexBuffer$Builder { 60 | public vertexCount(count: number): VertexBuffer$Builder; 61 | public bufferCount(count: number): VertexBuffer$Builder; 62 | public attribute(attrib: VertexAttribute, 63 | bufindex: number, 64 | atype: VertexBuffer$AttributeType, 65 | offset: number, stride: number): VertexBuffer$Builder; 66 | public normalized(attrib: VertexAttribute): VertexBuffer$Builder; 67 | public build(engine: Engine): VertexBuffer; 68 | } 69 | 70 | export class IndexBuffer$Builder { 71 | public indexCount(count: number): IndexBuffer$Builder; 72 | public bufferType(IndexBuffer$IndexType): IndexBuffer$Builder; 73 | public build(engine: Engine): IndexBuffer; 74 | } 75 | 76 | export class RenderableManager$Builder { 77 | public boundingBox(box: Box): RenderableManager$Builder; 78 | public culling(enable: boolean): RenderableManager$Builder; 79 | public material(geo: number, minstance: MaterialInstance): RenderableManager$Builder; 80 | public geometry(slot: number, 81 | ptype: RenderableManager$PrimitiveType, 82 | vb: VertexBuffer, 83 | ib: IndexBuffer): RenderableManager$Builder; 84 | public build(engine: Engine, entity: Entity): void; 85 | } 86 | 87 | export class LightManager$Builder { 88 | public build(engine: Engine, entity: Entity): void; 89 | public castShadows(value: boolean): LightManager$Builder; 90 | public color(rgb: float3): LightManager$Builder; 91 | public direction(value: float3): LightManager$Builder; 92 | public intensity(value: number): LightManager$Builder; 93 | public position(value: float3): LightManager$Builder; 94 | } 95 | 96 | export class LightManager { 97 | public static Builder(ltype: LightManager$Type): LightManager$Builder; 98 | } 99 | 100 | export class RenderableManager { 101 | public static Builder(ngeos: number): RenderableManager$Builder; 102 | public getInstance(entity: Entity): RenderableManager$Instance; 103 | public setCastShadows(inst: RenderableManager$Instance, enable: boolean): void; 104 | public setReceiveShadows(inst: RenderableManager$Instance, enable: boolean): void; 105 | } 106 | 107 | export class VertexBuffer { 108 | public static Builder(): VertexBuffer$Builder; 109 | public setBufferAt(engine: Engine, bufindex: number, f32array: any): void; 110 | } 111 | 112 | export class IndexBuffer { 113 | public static Builder(): IndexBuffer$Builder; 114 | public setBuffer(engine: Engine, u16array: any): void; 115 | } 116 | 117 | export class Renderer { 118 | public render(swapChain: SwapChain, view: View): void; 119 | } 120 | 121 | export class Material { 122 | public createInstance(): MaterialInstance; 123 | } 124 | 125 | export class Camera { 126 | public lookAt(eye: float3, center: float3, up: float3): void; 127 | public setProjectionFov(fovInDegrees: number, aspect: number, 128 | near: number, far: number, fov: Camera$Fov): void; 129 | } 130 | 131 | export class IndirectLight { 132 | public setIntensity(intensity: number); 133 | } 134 | 135 | export class Scene { 136 | public addEntity(entity: Entity); 137 | public getLightCount(): number; 138 | public getRenderableCount(): number; 139 | public remove(entity: Entity); 140 | public setIndirectLight(ibl: IndirectLight); 141 | public setSkybox(sky: Skybox); 142 | } 143 | 144 | export class View { 145 | public setCamera(camera: Camera); 146 | public setClearColor(color: float4); 147 | public setScene(scene: Scene); 148 | public setViewport(viewport: float4); 149 | } 150 | 151 | export class TransformManager { 152 | public getInstance(entity: Entity): TransformManager$Instance; 153 | public setTransform(instance: TransformManager$Instance, xform: mat4): void; 154 | } 155 | 156 | interface Filamesh { 157 | renderable: Entity; 158 | vertexBuffer: VertexBuffer; 159 | indexBuffer: IndexBuffer; 160 | } 161 | 162 | export class Engine { 163 | public static create(HTMLCanvasElement): Engine; 164 | public createCamera(): Camera; 165 | public createIblFromKtx(url: string): IndirectLight; 166 | public createMaterial(url: string): Material; 167 | public createRenderer(): Renderer; 168 | public createScene(): Scene; 169 | public createSkyFromKtx(url: string): Skybox; 170 | public createSwapChain(): SwapChain; 171 | public createTextureFromJpeg(url: string): Texture; 172 | public createTextureFromPng(url: string): Texture; 173 | public createView(): View; 174 | public destroySkybox(skybox: Skybox): void; 175 | public getLightManager(): LightManager; 176 | public getRenderableManager(): RenderableManager; 177 | public getSupportedFormatSuffix(suffix: string): void; 178 | public getTransformManager(): TransformManager; 179 | public init(assets: string[], onready: () => void): void; 180 | public loadFilamesh(url: string, definstance: MaterialInstance, matinstances: object): Filamesh; 181 | } 182 | 183 | export enum Camera$Fov { 184 | VERTICAL, 185 | HORIZONTAL, 186 | } 187 | 188 | export enum Camera$Projection { 189 | PERSPECTIVE, 190 | ORTHO, 191 | } 192 | 193 | export enum CompressedPixelDataType { 194 | EAC_R11, 195 | EAC_R11_SIGNED, 196 | EAC_RG11, 197 | EAC_RG11_SIGNED, 198 | ETC2_RGB8, 199 | ETC2_SRGB8, 200 | ETC2_RGB8_A1, 201 | ETC2_SRGB8_A1, 202 | ETC2_EAC_RGBA8, 203 | ETC2_EAC_SRGBA8, 204 | DXT1_RGB, 205 | DXT1_RGBA, 206 | DXT3_RGBA, 207 | DXT5_RGBA, 208 | RGBA_ASTC_4x4, 209 | RGBA_ASTC_5x4, 210 | RGBA_ASTC_5x5, 211 | RGBA_ASTC_6x5, 212 | RGBA_ASTC_6x6, 213 | RGBA_ASTC_8x5, 214 | RGBA_ASTC_8x6, 215 | RGBA_ASTC_8x8, 216 | RGBA_ASTC_10x5, 217 | RGBA_ASTC_10x6, 218 | RGBA_ASTC_10x8, 219 | RGBA_ASTC_10x10, 220 | RGBA_ASTC_12x10, 221 | RGBA_ASTC_12x12, 222 | SRGB8_ALPHA8_ASTC_4x4, 223 | SRGB8_ALPHA8_ASTC_5x4, 224 | SRGB8_ALPHA8_ASTC_5x5, 225 | SRGB8_ALPHA8_ASTC_6x5, 226 | SRGB8_ALPHA8_ASTC_6x6, 227 | SRGB8_ALPHA8_ASTC_8x5, 228 | SRGB8_ALPHA8_ASTC_8x6, 229 | SRGB8_ALPHA8_ASTC_8x8, 230 | SRGB8_ALPHA8_ASTC_10x5, 231 | SRGB8_ALPHA8_ASTC_10x6, 232 | SRGB8_ALPHA8_ASTC_10x8, 233 | SRGB8_ALPHA8_ASTC_10x10, 234 | SRGB8_ALPHA8_ASTC_12x10, 235 | SRGB8_ALPHA8_ASTC_12x12, 236 | } 237 | 238 | export enum IndexBuffer$IndexType { 239 | USHORT, 240 | UINT, 241 | } 242 | 243 | export enum LightManager$Type { 244 | SUN, 245 | DIRECTIONAL, 246 | POINT, 247 | FOCUSED_SPOT, 248 | SPOT, 249 | } 250 | 251 | export enum MagFilter { 252 | NEAREST, 253 | LINEAR, 254 | } 255 | 256 | export enum MinFilter { 257 | NEAREST, 258 | LINEAR, 259 | NEAREST_MIPMAP_NEAREST, 260 | LINEAR_MIPMAP_NEAREST, 261 | NEAREST_MIPMAP_LINEAR, 262 | LINEAR_MIPMAP_LINEAR, 263 | } 264 | 265 | export enum PixelDataFormat { 266 | R, 267 | R_INTEGER, 268 | RG, 269 | RG_INTEGER, 270 | RGB, 271 | RGB_INTEGER, 272 | RGBA, 273 | RGBA_INTEGER, 274 | RGBM, 275 | DEPTH_COMPONENT, 276 | DEPTH_STENCIL, 277 | ALPHA, 278 | } 279 | 280 | export enum PixelDataType { 281 | UBYTE, 282 | BYTE, 283 | USHORT, 284 | SHORT, 285 | UINT, 286 | INT, 287 | HALF, 288 | FLOAT, 289 | } 290 | 291 | export enum RenderableManager$PrimitiveType { 292 | POINTS, 293 | LINES, 294 | TRIANGLES, 295 | NONE, 296 | } 297 | 298 | export enum RgbType { 299 | sRGB, 300 | LINEAR, 301 | } 302 | 303 | export enum RgbaType { 304 | sRGB, 305 | LINEAR, 306 | PREMULTIPLIED_sRGB, 307 | PREMULTIPLIED_LINEAR, 308 | } 309 | 310 | export enum Texture$InternalFormat { 311 | R8, 312 | R8_SNORM, 313 | R8UI, 314 | R8I, 315 | STENCIL8, 316 | R16F, 317 | R16UI, 318 | R16I, 319 | RG8, 320 | RG8_SNORM, 321 | RG8UI, 322 | RG8I, 323 | RGB565, 324 | RGB9_E5, 325 | RGB5_A1, 326 | RGBA4, 327 | DEPTH16, 328 | RGB8, 329 | SRGB8, 330 | RGB8_SNORM, 331 | RGB8UI, 332 | RGB8I, 333 | DEPTH24, 334 | R32F, 335 | R32UI, 336 | R32I, 337 | RG16F, 338 | RG16UI, 339 | RG16I, 340 | R11F_G11F_B10F, 341 | RGBA8, 342 | SRGB8_A8, 343 | RGBA8_SNORM, 344 | UNUSED, 345 | RGB10_A2, 346 | RGBA8UI, 347 | RGBA8I, 348 | DEPTH32F, 349 | DEPTH24_STENCIL8, 350 | DEPTH32F_STENCIL8, 351 | RGB16F, 352 | RGB16UI, 353 | RGB16I, 354 | RG32F, 355 | RG32UI, 356 | RG32I, 357 | RGBA16F, 358 | RGBA16UI, 359 | RGBA16I, 360 | RGB32F, 361 | RGB32UI, 362 | RGB32I, 363 | RGBA32F, 364 | RGBA32UI, 365 | RGBA32I, 366 | EAC_R11, 367 | EAC_R11_SIGNED, 368 | EAC_RG11, 369 | EAC_RG11_SIGNED, 370 | ETC2_RGB8, 371 | ETC2_SRGB8, 372 | ETC2_RGB8_A1, 373 | ETC2_SRGB8_A1, 374 | ETC2_EAC_RGBA8, 375 | ETC2_EAC_SRGBA8, 376 | DXT1_RGB, 377 | DXT1_RGBA, 378 | DXT3_RGBA, 379 | DXT5_RGBA, 380 | RGBA_ASTC_4x4, 381 | RGBA_ASTC_5x4, 382 | RGBA_ASTC_5x5, 383 | RGBA_ASTC_6x5, 384 | RGBA_ASTC_6x6, 385 | RGBA_ASTC_8x5, 386 | RGBA_ASTC_8x6, 387 | RGBA_ASTC_8x8, 388 | RGBA_ASTC_10x5, 389 | RGBA_ASTC_10x6, 390 | RGBA_ASTC_10x8, 391 | RGBA_ASTC_10x10, 392 | RGBA_ASTC_12x10, 393 | RGBA_ASTC_12x12, 394 | SRGB8_ALPHA8_ASTC_4x4, 395 | SRGB8_ALPHA8_ASTC_5x4, 396 | SRGB8_ALPHA8_ASTC_5x5, 397 | SRGB8_ALPHA8_ASTC_6x5, 398 | SRGB8_ALPHA8_ASTC_6x6, 399 | SRGB8_ALPHA8_ASTC_8x5, 400 | SRGB8_ALPHA8_ASTC_8x6, 401 | SRGB8_ALPHA8_ASTC_8x8, 402 | SRGB8_ALPHA8_ASTC_10x5, 403 | SRGB8_ALPHA8_ASTC_10x6, 404 | SRGB8_ALPHA8_ASTC_10x8, 405 | SRGB8_ALPHA8_ASTC_10x10, 406 | SRGB8_ALPHA8_ASTC_12x10, 407 | SRGB8_ALPHA8_ASTC_12x12, 408 | } 409 | 410 | export enum Texture$Sampler { 411 | SAMPLER_2D, 412 | SAMPLER_CUBEMAP, 413 | SAMPLER_EXTERNAL, 414 | } 415 | 416 | export enum Texture$Usage { 417 | DEFAULT, 418 | COLOR_ATTACHMENT, 419 | DEPTH_ATTACHMENT, 420 | } 421 | 422 | export enum VertexAttribute { 423 | POSITION, 424 | TANGENTS, 425 | COLOR, 426 | UV0, 427 | UV1, 428 | BONE_INDICES, 429 | BONE_WEIGHTS, 430 | } 431 | 432 | export enum VertexBuffer$AttributeType { 433 | BYTE, 434 | BYTE2, 435 | BYTE3, 436 | BYTE4, 437 | UBYTE, 438 | UBYTE2, 439 | UBYTE3, 440 | UBYTE4, 441 | SHORT, 442 | SHORT2, 443 | SHORT3, 444 | SHORT4, 445 | USHORT, 446 | USHORT2, 447 | USHORT3, 448 | USHORT4, 449 | INT, 450 | UINT, 451 | FLOAT, 452 | FLOAT2, 453 | FLOAT3, 454 | FLOAT4, 455 | HALF, 456 | HALF2, 457 | HALF3, 458 | HALF4, 459 | } 460 | 461 | export enum View$AntiAliasing { 462 | NONE, 463 | FXAA, 464 | } 465 | 466 | export enum View$DepthPrepass { 467 | DEFAULT, 468 | DISABLED, 469 | ENABLED, 470 | } 471 | 472 | export enum WrapMode { 473 | CLAMP_TO_EDGE, 474 | REPEAT, 475 | MIRRORED_REPEAT, 476 | } 477 | -------------------------------------------------------------------------------- /filament/filament.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/prideout/hexgl/b1da2c4f0346c35551a72ac79c2ebab1ca0396fa/filament/filament.wasm -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexgl_filament", 3 | "main": "index.js", 4 | "version": "1.0.0", 5 | "scripts": { 6 | "build": "webpack --mode production", 7 | "watch": "webpack --mode development --watch" 8 | }, 9 | "devDependencies": { 10 | "@types/gl-matrix": "^2.4.4", 11 | "ts-loader": "^5.0.0", 12 | "tslint": "^5.11.0", 13 | "typescript": "^3.0.0", 14 | "webpack": "^4.0.0", 15 | "webpack-cli": "^3.1.2" 16 | }, 17 | "dependencies": { 18 | "gl-matrix": "^2.8.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/app.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------------------------- 2 | // The App owns the Display and Simulation. 3 | // 4 | // HexGL by Thibaut 'BKcore' Despoulain 5 | // Rewritten by Philip Rideout 6 | // ------------------------------------------------------------------------------------------------- 7 | 8 | import * as Filament from "filament"; 9 | import * as urls from "./urls"; 10 | 11 | import { glMatrix, vec3 } from "gl-matrix"; 12 | 13 | import Audio from "./audio"; 14 | import ChaseCamera from "./chasecam"; 15 | import Display from "./display"; 16 | import Simulation from "./simulation"; 17 | import Vehicle from "./vehicle"; 18 | 19 | // These are only the assets that must be loaded before creating the Filament engine. Note that many 20 | // other assets are fetched later in the initialization process (e.g. mesh data). 21 | const initialAssets = [ 22 | urls.skySmall, 23 | urls.ibl, 24 | urls.pbrMaterial, 25 | urls.nonlitMaterial, 26 | urls.texMaterial, 27 | ]; 28 | 29 | Filament.init(initialAssets, () => { 30 | // HexGL requires 64-bit precision and fast instantiation of vectors. 31 | glMatrix.setMatrixArrayType(Array); 32 | 33 | // The global app instance can be accessed for debugging purposes only. 34 | window["app"] = new App(); 35 | }); 36 | 37 | class App { 38 | private readonly display: Display; 39 | private readonly chasecam: ChaseCamera; 40 | private readonly simulation: Simulation; 41 | private readonly audio: Audio; 42 | private time: number; 43 | 44 | constructor() { 45 | this.tick = this.tick.bind(this); 46 | const canvas = document.getElementsByTagName("canvas")[0]; 47 | const vehicle = new Vehicle(initialVehiclePosition); 48 | this.simulation = new Simulation(vehicle); 49 | this.audio = new Audio(vehicle); 50 | this.display = new Display(canvas, vehicle, this.audio.init.bind(this.audio)); 51 | this.chasecam = new ChaseCamera(this.display.camera, vehicle); 52 | this.time = Date.now(); 53 | window.requestAnimationFrame(this.tick); 54 | } 55 | 56 | private tick() { 57 | // Determine the time step. 58 | const time = Date.now(); 59 | const dt = (time - this.time) * 0.1; 60 | this.time = time; 61 | 62 | // Update the vehicle orientation and position. 63 | this.simulation.tick(dt); 64 | 65 | // Update the camera position. 66 | this.chasecam.tick(dt); 67 | 68 | // Render the 3D scene. 69 | this.display.render(); 70 | this.audio.render(); 71 | 72 | // Request the next frame. 73 | window.requestAnimationFrame(this.tick); 74 | } 75 | } 76 | 77 | const initialVehiclePosition = vec3.fromValues(-2268, 400, -886); 78 | -------------------------------------------------------------------------------- /src/audio.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------------------------- 2 | // The Audio class observes the properties on a Vehicle and plays sounds appropriately. 3 | // 4 | // - constructor(vehicle: Vehicle) 5 | // - init() 6 | // - render() 7 | // 8 | // HexGL by Thibaut 'BKcore' Despoulain 9 | // Rewritten by Philip Rideout 10 | // ------------------------------------------------------------------------------------------------- 11 | 12 | import * as Filament from "filament"; 13 | import Vehicle from "./vehicle"; 14 | 15 | const audioUrls = ["audio/boost.ogg", "audio/crash.ogg", "audio/wind.ogg"]; 16 | 17 | export default class Audio { 18 | private readonly sources: { 19 | [propName: string]: AudioBufferSourceNode; 20 | }; 21 | private readonly states: { 22 | [propName: string]: boolean; 23 | }; 24 | private readonly vehicle: Vehicle; 25 | 26 | private hasInteracted: boolean; 27 | private loadTasks: number; 28 | private ready: boolean; 29 | private context: AudioContext; 30 | 31 | constructor(vehicle: Vehicle) { 32 | this.vehicle = vehicle; 33 | this.ready = false; 34 | this.sources = {}; 35 | this.states = {}; 36 | 37 | // Chrome does not allow creation of an AudioContext until the user performs some sort of 38 | // interaction, such as a key press. 39 | this.hasInteracted = false; 40 | document.addEventListener("keydown", (event) => { 41 | if (!this.hasInteracted) { 42 | this.hasInteracted = true; 43 | this.load(); 44 | } 45 | // Press 'M' to permanently mute the game. 46 | if (event.keyCode === 77) { 47 | this.context.suspend(); 48 | } 49 | }); 50 | 51 | // There are two things that must occur before loading the audio context: the user 52 | // should interact in some way, and all the OGG data must be available. 53 | this.loadTasks = 2; 54 | } 55 | 56 | public init() { 57 | Filament.fetch(audioUrls, this.load.bind(this)); 58 | } 59 | 60 | public render() { 61 | if (!this.ready) { 62 | return; 63 | } 64 | if (this.vehicle.collisionState.left) { 65 | this.playOnce("crash"); 66 | } 67 | if (this.vehicle.collisionState.right) { 68 | this.playOnce("crash"); 69 | } 70 | if (this.vehicle.collisionState.front) { 71 | this.playOnce("crash"); 72 | } 73 | if (this.vehicle.boosted) { 74 | // This particular sound has a longish segue at the beginning, which gives the 75 | // impression of latency, so we chop off the first half-second. 76 | this.playOnce("boost", 0.5); 77 | } 78 | if (this.vehicle.accelerating) { 79 | this.play("background"); 80 | } else { 81 | this.stop("background"); 82 | } 83 | } 84 | 85 | private playOnce(id, offsetInSeconds = 0) { 86 | const source = this.context.createBufferSource(); 87 | source.buffer = this.sources[id].buffer; 88 | source.connect(this.context.destination); 89 | source.loop = false; 90 | source.start(0, offsetInSeconds); 91 | } 92 | 93 | private play(id) { 94 | if (!this.states[id]) { 95 | this.sources[id].connect(this.context.destination); 96 | this.states[id] = true; 97 | } 98 | } 99 | 100 | private stop(id) { 101 | if (this.states[id]) { 102 | this.sources[id].disconnect(); 103 | this.states[id] = false; 104 | } 105 | } 106 | 107 | private load() { 108 | if (--this.loadTasks > 0) { 109 | return; 110 | } 111 | 112 | const audioData = { 113 | boost: Filament.assets[audioUrls[0]].buffer, 114 | crash: Filament.assets[audioUrls[1]].buffer, 115 | background: Filament.assets[audioUrls[2]].buffer, 116 | }; 117 | 118 | const context = this.context = new AudioContext(); 119 | 120 | let decodeTasks = Object.keys(audioData).length; 121 | const onDecode = (name: string, source: AudioBufferSourceNode) => { 122 | this.sources[name] = source; 123 | this.states[name] = false; 124 | if (--decodeTasks === 0) { 125 | this.ready = true; 126 | this.sources["background"].start(); 127 | } 128 | }; 129 | 130 | context.decodeAudioData(audioData["boost"], (buffer) => { 131 | const boost = context.createBufferSource(); 132 | boost.buffer = buffer; 133 | boost.connect(context.destination); 134 | boost.loop = false; 135 | onDecode("boost", boost); 136 | }); 137 | 138 | context.decodeAudioData(audioData["crash"], (buffer) => { 139 | const crash = context.createBufferSource(); 140 | crash.buffer = buffer; 141 | crash.connect(context.destination); 142 | crash.loop = false; 143 | onDecode("crash", crash); 144 | }); 145 | 146 | context.decodeAudioData(audioData["background"], (buffer) => { 147 | const background = context.createBufferSource(); 148 | background.buffer = buffer; 149 | background.loop = true; 150 | onDecode("background", background); 151 | }); 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /src/chasecam.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------------------------- 2 | // The ChaseCamera continuously updates a camera to make it follow a target vehicle. 3 | // 4 | // - constructor(camera: Filament.Camera, vehicle: Vehicle) 5 | // - tick(dt: number) 6 | // 7 | // HexGL by Thibaut 'BKcore' Despoulain 8 | // Rewritten by Philip Rideout 9 | // ------------------------------------------------------------------------------------------------- 10 | 11 | import * as Filament from "filament"; 12 | 13 | import { vec3 } from "gl-matrix"; 14 | 15 | import Vehicle from "./vehicle"; 16 | 17 | export default class ChaseCamera { 18 | private readonly camera: Filament.Camera; 19 | private readonly vehicle: Vehicle; 20 | private speedOffset: number; // adds to zoffset after sudden acceleration 21 | 22 | constructor(camera: Filament.Camera, vehicle: Vehicle) { 23 | this.camera = camera; 24 | this.vehicle = vehicle; 25 | this.speedOffset = 0; 26 | } 27 | 28 | public tick(dt: number) { 29 | const speed = this.vehicle.speed; 30 | const orientation = this.vehicle.orientation; 31 | const position = this.vehicle.position; 32 | 33 | this.speedOffset += (speedOffsetMax * speed - this.speedOffset) * 34 | Math.min(1.0, 0.3 * dt); 35 | 36 | const up = vec3.fromValues(0, 1, 0); 37 | vec3.transformQuat(up, up, orientation); 38 | 39 | const dir = vec3.fromValues(0, 0, 1); 40 | vec3.transformQuat(dir, dir, orientation); 41 | 42 | const cameraPos = vec3.copy(vec3.create(), position); 43 | vec3.scale(dir, dir, zoffset + this.speedOffset); 44 | vec3.subtract(cameraPos, cameraPos, dir); 45 | vec3.scale(up, up, yoffset); 46 | vec3.add(cameraPos, cameraPos, up); 47 | 48 | const targetPos = vec3.copy(vec3.create(), position); 49 | vec3.set(up, 0, 1, 0); 50 | vec3.transformQuat(up, up, orientation); 51 | vec3.scale(up, up, targetYoffset); 52 | vec3.add(targetPos, targetPos, up); 53 | 54 | this.camera.lookAt(cameraPos, targetPos, [0, 1, 0]); 55 | } 56 | } 57 | 58 | const yoffset = 10.0; // how far above the ship the camera flies 59 | const zoffset = 23.0; // how far behind the ship the camera flies 60 | const speedOffsetMax = 10; 61 | const targetYoffset = 6.0; // how far above the ship the camera looks 62 | -------------------------------------------------------------------------------- /src/display.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------------------------- 2 | // The Display draws to the main canvas and manages all Filament entities. 3 | // 4 | // - constructor(canvas: HTMLCanvasElement, vehicle: Vehicle, onFinishedLoading) 5 | // - readonly camera: Filament.Camera; 6 | // - render() 7 | // 8 | // HexGL by Thibaut 'BKcore' Despoulain 9 | // Rewritten by Philip Rideout 10 | // ------------------------------------------------------------------------------------------------- 11 | 12 | import * as Filament from "filament"; 13 | import * as urls from "./urls"; 14 | import Vehicle from "./vehicle"; 15 | 16 | export default class Display { 17 | public readonly camera: Filament.Camera; 18 | 19 | private readonly canvas: HTMLCanvasElement; 20 | private readonly engine: Filament.Engine; 21 | private readonly indirectLight: Filament.IndirectLight; 22 | private readonly nonlitMaterial: Filament.Material; 23 | private readonly pbrMaterial: Filament.Material; 24 | private readonly renderer: Filament.Renderer; 25 | private readonly sampler: Filament.TextureSampler; 26 | private readonly scene: Filament.Scene; 27 | private readonly swapChain: Filament.SwapChain; 28 | private readonly texMaterial: Filament.Material; 29 | private readonly vehicle: Vehicle; 30 | private readonly view: Filament.View; 31 | 32 | private ship: Filament.Entity; 33 | private skybox: Filament.Skybox; 34 | 35 | constructor(canvas: HTMLCanvasElement, vehicle: Vehicle, onFinishedLoading: () => void) { 36 | this.canvas = canvas; 37 | this.vehicle = vehicle; 38 | this.engine = Filament.Engine.create(canvas); 39 | this.scene = this.engine.createScene(); 40 | this.skybox = this.engine.createSkyFromKtx(urls.skySmall); 41 | this.scene.setSkybox(this.skybox); 42 | this.indirectLight = this.engine.createIblFromKtx(urls.ibl); 43 | this.indirectLight.setIntensity(100000); 44 | this.scene.setIndirectLight(this.indirectLight); 45 | this.swapChain = this.engine.createSwapChain(); 46 | this.renderer = this.engine.createRenderer(); 47 | this.camera = this.engine.createCamera(); 48 | this.view = this.engine.createView(); 49 | this.view.setCamera(this.camera); 50 | this.view.setScene(this.scene); 51 | 52 | this.sampler = new Filament.TextureSampler( 53 | Filament.MinFilter.LINEAR_MIPMAP_LINEAR, Filament.MagFilter.LINEAR, 54 | Filament.WrapMode.REPEAT); 55 | 56 | this.pbrMaterial = this.engine.createMaterial(urls.pbrMaterial); 57 | this.nonlitMaterial = this.engine.createMaterial(urls.nonlitMaterial); 58 | this.texMaterial = this.engine.createMaterial(urls.texMaterial); 59 | 60 | // Load the high-res skybox only after every other asset has been loaded. 61 | const addEntity = (entity) => { 62 | this.scene.addEntity(entity); 63 | if (8 === this.scene.getRenderableCount()) { 64 | Filament.fetch([urls.skyLarge], () => { 65 | this.engine.destroySkybox(this.skybox); 66 | this.skybox = this.engine.createSkyFromKtx(urls.skyLarge); 67 | this.scene.setSkybox(this.skybox); 68 | onFinishedLoading(); 69 | }); 70 | } 71 | }; 72 | 73 | // Load the ship first since it determines camera, then all other assets. 74 | const filenames = [urls.diffuse, urls.specular, urls.normal, urls.mesh]; 75 | const shipUrls = filenames.map((path) => `ship/${path}`); 76 | Filament.fetch(shipUrls, () => { 77 | 78 | // Add the vehicle to scene. 79 | const shipmi = this.pbrMaterial.createInstance(); 80 | this.ship = this.createRenderable("ship", shipmi, 1.0); 81 | addEntity(this.ship); 82 | 83 | // Add buildings to scene. 84 | for (const bgasset of ["scrapers1", "scrapers2"]) { 85 | const bgurls = filenames.map((path) => `${bgasset}/${path}`); 86 | Filament.fetch(bgurls, () => { 87 | const bgmi = this.pbrMaterial.createInstance(); 88 | addEntity(this.createRenderable(bgasset, bgmi, 0.1)); 89 | }); 90 | } 91 | 92 | // Add race track to scene. 93 | for (const bgasset of ["tracks"]) { 94 | const bgurls = filenames.map((path) => `${bgasset}/${path}`); 95 | Filament.fetch(bgurls, () => { 96 | const bgmi = this.pbrMaterial.createInstance(); 97 | addEntity(this.createRenderable(bgasset, bgmi, 0.0)); 98 | }); 99 | } 100 | 101 | // Add blue boosters to scene. 102 | const boosterUrl = "bonusspeed/filamesh"; 103 | Filament.fetch([boosterUrl], () => { 104 | const mi = this.nonlitMaterial.createInstance(); 105 | mi.setFloat4Parameter("color", [0.0, 0.2, 0.6, 1.0]); 106 | const mesh = this.engine.loadFilamesh(boosterUrl, mi, {}); 107 | addEntity(mesh.renderable); 108 | }); 109 | 110 | // Add start banner and solar panels. 111 | const bannerTexUrl = "startbanner/albedo.jpg"; 112 | const bannerGeoUrl = "startbanner/filamesh"; 113 | Filament.fetch([bannerGeoUrl, bannerTexUrl], () => { 114 | const mi = this.texMaterial.createInstance(); 115 | const albedo = this.engine.createTextureFromJpeg(bannerTexUrl); 116 | mi.setTextureParameter("albedo", albedo, this.sampler); 117 | const mesh = this.engine.loadFilamesh(bannerGeoUrl, mi, {}); 118 | addEntity(mesh.renderable); 119 | }); 120 | 121 | const panelsTexUrl = "startpanels/albedo.jpg"; 122 | const panelsGeoUrl = "startpanels/filamesh"; 123 | Filament.fetch([panelsGeoUrl, panelsTexUrl], () => { 124 | const mi = this.texMaterial.createInstance(); 125 | const albedo = this.engine.createTextureFromJpeg(panelsTexUrl); 126 | mi.setTextureParameter("albedo", albedo, this.sampler); 127 | const mesh = this.engine.loadFilamesh(panelsGeoUrl, mi, {}); 128 | addEntity(mesh.renderable); 129 | }); 130 | }); 131 | 132 | const sunlight = Filament.EntityManager.get().create(); 133 | Filament.LightManager.Builder(Filament.LightManager$Type.SUN) 134 | .color([0.98, 0.92, 0.89]) 135 | .castShadows(true) 136 | .intensity(110000.0) 137 | .direction([0.5, -1, 0]) 138 | .build(this.engine, sunlight); 139 | addEntity(sunlight); 140 | 141 | this.resize = this.resize.bind(this); 142 | window.addEventListener("resize", this.resize); 143 | this.resize(); 144 | } 145 | 146 | public render() { 147 | if (this.ship) { 148 | const tcm = this.engine.getTransformManager(); 149 | const inst = tcm.getInstance(this.ship); 150 | tcm.setTransform(inst, this.vehicle.getMatrix()); 151 | inst.delete(); 152 | } 153 | this.renderer.render(this.swapChain, this.view); 154 | } 155 | 156 | private resize() { 157 | const dpr = window.devicePixelRatio; 158 | const width = this.canvas.width = window.innerWidth * dpr; 159 | const height = this.canvas.height = window.innerHeight * dpr; 160 | this.view.setViewport([0, 0, width, height]); 161 | 162 | const aspect = width / height; 163 | const Fov = Filament.Camera$Fov; 164 | const fov = aspect < 1 ? Fov.HORIZONTAL : Fov.VERTICAL; 165 | this.camera.setProjectionFov(45, aspect, 1.0, 20000.0, fov); 166 | } 167 | 168 | private createRenderable(name, matinstance, clearCoat) { 169 | const diffuse = this.engine.createTextureFromJpeg(`${name}/${urls.diffuse}`); 170 | const specular = this.engine.createTextureFromJpeg(`${name}/${urls.specular}`); 171 | const normal = this.engine.createTextureFromJpeg(`${name}/${urls.normal}`); 172 | matinstance.setTextureParameter("diffuse", diffuse, this.sampler); 173 | matinstance.setTextureParameter("specular", specular, this.sampler); 174 | matinstance.setTextureParameter("normal", normal, this.sampler); 175 | 176 | matinstance.setFloatParameter("metallic", 1.0); 177 | matinstance.setFloatParameter("reflectance", 1.0); 178 | matinstance.setFloatParameter("clearCoat", clearCoat); 179 | matinstance.setFloatParameter("clearCoatRoughness", 0.0); 180 | 181 | const entity = this.engine.loadFilamesh(`${name}/${urls.mesh}`, matinstance, {}).renderable; 182 | 183 | const rm = this.engine.getRenderableManager(); 184 | const inst = rm.getInstance(entity); 185 | rm.setCastShadows(inst, true); 186 | rm.setReceiveShadows(inst, true); 187 | inst.delete(); 188 | 189 | return entity; 190 | } 191 | } 192 | -------------------------------------------------------------------------------- /src/sampler.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------------------------- 2 | // Sampler allows the CPU to read from an image using bilinear interpolation. 3 | // 4 | // - constructor(url: string) 5 | // - getPixel(x: number, y: number): Color 6 | // - getPixelBilinear(fx: number, fy: number): Color 7 | // - getPixelF(x: number, y: number): Color 8 | // - getPixelBilinearF(fx: number, fy: number): Color 9 | // 10 | // HexGL by Thibaut 'BKcore' Despoulain 11 | // Rewritten by Philip Rideout 12 | // ------------------------------------------------------------------------------------------------- 13 | 14 | export default class Sampler { 15 | public width: number; 16 | public height: number; 17 | 18 | private canvas: HTMLCanvasElement; 19 | private image: HTMLImageElement; 20 | private pixels: ImageData; 21 | 22 | constructor(url: string) { 23 | this.image = new Image(); 24 | this.pixels = null; 25 | this.canvas = null; 26 | this.image.onload = () => { 27 | const canvas = this.canvas = document.createElement("canvas"); 28 | this.canvas.width = this.image.width; 29 | this.canvas.height = this.image.height; 30 | const context = this.canvas.getContext("2d"); 31 | context.drawImage(this.image, 0, 0); 32 | this.pixels = context.getImageData(0, 0, canvas.width, canvas.height); 33 | this.width = this.pixels.width; 34 | this.height = this.pixels.height; 35 | this.canvas = null; 36 | this.image = null; 37 | }; 38 | this.image.src = url; 39 | } 40 | 41 | public ready(): boolean { 42 | return this.image === null; 43 | } 44 | 45 | public getPixel(x: number, y: number): Color { 46 | if (!this.pixels || x < 0 || y < 0 || x >= this.pixels.width || y >= this.pixels.height) { 47 | return {r: 0, g: 0, b: 0, a: 0}; 48 | } 49 | const i = (y * this.pixels.width + x) * 4; 50 | return { 51 | r: this.pixels.data[i], 52 | g: this.pixels.data[i + 1], 53 | b: this.pixels.data[i + 2], 54 | a: this.pixels.data[i + 3], 55 | }; 56 | } 57 | 58 | public getPixelBilinear(fx: number, fy: number): Color { 59 | const x = Math.floor(fx); 60 | const y = Math.floor(fy); 61 | const rx = fx - x - .5; 62 | const ry = fy - y - .5; 63 | const ax = Math.abs(rx); 64 | const ay = Math.abs(ry); 65 | const dx = rx < 0 ? -1 : 1; 66 | const dy = ry < 0 ? -1 : 1; 67 | const c = this.getPixel(x, y); 68 | const cx = this.getPixel(x + dx, y); 69 | const cy = this.getPixel(x, y + dy); 70 | const cxy = this.getPixel(x + dx, y + dy); 71 | const cf1 = [ 72 | (1 - ax) * c.r + ax * cx.r, 73 | (1 - ax) * c.g + ax * cx.g, 74 | (1 - ax) * c.b + ax * cx.b, 75 | (1 - ax) * c.a + ax * cx.a, 76 | ]; 77 | const cf2 = [ 78 | (1 - ax) * cy.r + ax * cxy.r, 79 | (1 - ax) * cy.g + ax * cxy.g, 80 | (1 - ax) * cy.b + ax * cxy.b, 81 | (1 - ax) * cy.a + ax * cxy.a, 82 | ]; 83 | return { 84 | r: (1 - ay) * cf1[0] + ay * cf2[0], 85 | g: (1 - ay) * cf1[1] + ay * cf2[1], 86 | b: (1 - ay) * cf1[2] + ay * cf2[2], 87 | a: (1 - ay) * cf1[3] + ay * cf2[3], 88 | }; 89 | } 90 | 91 | public getPixelF(x: number, y: number): number { 92 | const c = this.getPixel(x, y); 93 | return c.r + c.g * 255 + c.b * 255 * 255; 94 | } 95 | 96 | public getPixelFBilinear(x: number, y: number): number { 97 | const c = this.getPixelBilinear(x, y); 98 | return c.r + c.g * 255 + c.b * 255 * 255; 99 | } 100 | } 101 | 102 | interface Color { 103 | r: number; 104 | g: number; 105 | b: number; 106 | a: number; 107 | } 108 | -------------------------------------------------------------------------------- /src/simulation.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------------------------- 2 | // The Simulation listens to input events and periodically updates the position, orientation, and 3 | // other attributes of a given Vehicle. The CPU reads from two images (collision and elevation) 4 | // to glean information about the race track. 5 | // 6 | // - constructor(vehicle: Vehicle) 7 | // - tick(dt: number) 8 | // 9 | // HexGL by Thibaut 'BKcore' Despoulain 10 | // Rewritten by Philip Rideout 11 | // ------------------------------------------------------------------------------------------------- 12 | 13 | import * as urls from "./urls"; 14 | 15 | import Sampler from "./sampler"; 16 | import Vehicle from "./vehicle"; 17 | 18 | import { mat4, quat, vec3 } from "gl-matrix"; 19 | 20 | export default class Simulation { 21 | private readonly collision: Sampler; 22 | private readonly elevation: Sampler; 23 | private readonly gfxvehicle: Vehicle; 24 | private readonly keyState: KeyState; 25 | private readonly movement: vec3; 26 | private readonly repulsionForce: vec3; 27 | private readonly repulsionVLeft: vec3; 28 | private readonly repulsionVRight: vec3; 29 | private readonly simvehicle: Vehicle; 30 | 31 | private boost: number; 32 | private drift: number; 33 | private gradient: number; 34 | private gradientTarget: number; 35 | private roll: number; 36 | private speed: number; 37 | private tilt: number; 38 | private tiltTarget: number; 39 | private yawAngle: number; 40 | 41 | constructor(vehicle: Vehicle) { 42 | // The orientation of the simulation vehicle only includes yaw. 43 | this.simvehicle = new Vehicle(vehicle.position); 44 | 45 | // The graphics vehicle includes roll and pitch as well, but for visual appeal only. 46 | this.gfxvehicle = vehicle; 47 | 48 | this.collision = new Sampler(urls.collision); 49 | this.elevation = new Sampler(urls.elevation); 50 | 51 | this.keyState = { 52 | backward: false, 53 | forward: false, 54 | left: false, 55 | ltrigger: false, 56 | right: false, 57 | rtrigger: false, 58 | use: false, 59 | }; 60 | document.addEventListener("keydown", this.onKeyDown.bind(this)); 61 | document.addEventListener("keyup", this.onKeyUp.bind(this)); 62 | 63 | this.movement = vec3.fromValues(0, 0, 0); 64 | this.roll = 0.0; 65 | this.drift = 0.0; 66 | this.speed = 0.0; 67 | this.boost = 0.0; 68 | this.yawAngle = 0.0; 69 | this.gradient = 0.0; 70 | this.gradientTarget = 0.0; 71 | this.tilt = 0.0; 72 | this.tiltTarget = 0.0; 73 | this.repulsionVLeft = vec3.fromValues(1, 0, 0); 74 | this.repulsionVRight = vec3.fromValues(-1, 0, 0); 75 | this.repulsionForce = vec3.create(); 76 | } 77 | 78 | public tick(dt: number) { 79 | if (!this.collision.ready() || !this.elevation.ready()) { 80 | return; 81 | } 82 | vec3.copy(this.simvehicle.position, this.gfxvehicle.position); 83 | vec3.set(this.movement, 0, 0, 0); 84 | this.drift = -this.drift * driftLerp; 85 | this.yawAngle = -this.yawAngle * yawAngleLerp * .5; 86 | 87 | let rollAmount = 0; 88 | let yawAngleAmount = 0; 89 | 90 | if (this.keyState.left) { 91 | yawAngleAmount += yawAngleSpeed * dt; 92 | rollAmount -= rollAngle; 93 | } 94 | if (this.keyState.right) { 95 | yawAngleAmount -= yawAngleSpeed * dt; 96 | rollAmount += rollAngle; 97 | } 98 | 99 | if (this.keyState.forward) { 100 | this.gfxvehicle.accelerating = true; 101 | this.speed += thrust * dt; 102 | } else { 103 | this.gfxvehicle.accelerating = false; 104 | this.speed -= airResist * dt; 105 | } 106 | 107 | if (this.keyState.ltrigger) { 108 | if (this.keyState.left) { 109 | yawAngleAmount += airAngularSpeed * dt; 110 | } else { 111 | yawAngleAmount += airAngularSpeed * .5 * dt; 112 | } 113 | this.speed -= airBrake * dt; 114 | this.drift += (airDrift - this.drift) * driftLerp; 115 | this.movement[0] += this.speed * this.drift * dt; 116 | if (this.drift > 0) { 117 | this.movement[2] -= this.speed * this.drift * dt; 118 | } 119 | rollAmount -= rollAngle * .7; 120 | } 121 | 122 | if (this.keyState.rtrigger) { 123 | if (this.keyState.right) { 124 | yawAngleAmount -= airAngularSpeed * dt; 125 | } else { 126 | yawAngleAmount -= airAngularSpeed * .5 * dt; 127 | } 128 | this.speed -= airBrake * dt; 129 | this.drift += (-airDrift - this.drift) * driftLerp; 130 | this.movement[0] += this.speed * this.drift * dt; 131 | if (this.drift < 0) { 132 | this.movement[2] += this.speed * this.drift * dt; 133 | } 134 | rollAmount += rollAngle * .7; 135 | } 136 | 137 | this.yawAngle += (yawAngleAmount - this.yawAngle) * yawAngleLerp; 138 | 139 | this.speed = Math.max(0, Math.min(this.speed, maxSpeed)); 140 | this.movement[2] += this.speed * dt; 141 | 142 | if (vec3AlmostEquals(this.repulsionForce, zero3, 0.0001)) { 143 | vec3.copy(this.repulsionForce, zero3); 144 | } else { 145 | if (this.repulsionForce[2] !== 0) { 146 | this.movement[2] = 0; 147 | } 148 | vec3.add(this.movement, this.movement, this.repulsionForce); 149 | const t = dt > 1.5 ? repulsionLerp * 2 : repulsionLerp; 150 | vec3.lerp(this.repulsionForce, this.repulsionForce, zero3, t); 151 | } 152 | 153 | this.boosterCheck(dt); 154 | 155 | this.simvehicle.translate(vec3.fromValues(this.movement[0], 0, this.movement[2])); 156 | this.heightCheck(); 157 | 158 | this.simvehicle.translate(vec3.fromValues(0, this.movement[1], 0)); 159 | this.collisionCheck(); 160 | 161 | // The original HexGL app directly manipulated the Y component of this quat value, but I 162 | // feel it is more sensical to build the quat from Euler anglers. 163 | const degrees = this.yawAngle * 150.0; 164 | const quaternion = quat.fromEuler(quat.create(), 0, degrees, 0); 165 | quat.multiply(this.simvehicle.orientation, this.simvehicle.orientation, quaternion); 166 | 167 | // The remaining rotations affect the graphics vehicle but not the simulation vehicle. 168 | const xform = mat4.identity(mat4.create()); 169 | 170 | // Gradient 171 | const gradientDelta = (this.gradientTarget - this.gradient) * gradientLerp; 172 | if (Math.abs(gradientDelta) > epsilon) { 173 | this.gradient += gradientDelta; 174 | } 175 | if (Math.abs(this.gradient) > epsilon) { 176 | mat4.rotate(xform, xform, this.gradient, gradientAxis); 177 | } 178 | 179 | // Tilting 180 | const tiltDelta = (this.tiltTarget - this.tilt) * tiltLerp; 181 | if (Math.abs(tiltDelta) > epsilon) { 182 | this.tilt += tiltDelta; 183 | } 184 | if (Math.abs(this.tilt) > epsilon) { 185 | mat4.rotate(xform, xform, this.tilt, tiltAxis); 186 | } 187 | 188 | // Rolling 189 | const rollDelta = (rollAmount - this.roll) * rollLerp; 190 | if (Math.abs(rollDelta) > epsilon) { 191 | this.roll += rollDelta; 192 | } 193 | if (Math.abs(this.roll) > epsilon) { 194 | mat4.rotate(xform, xform, this.roll, rollDirection); 195 | } 196 | 197 | mat4.multiply(xform, this.simvehicle.getMatrix(), xform); 198 | mat4.getTranslation(this.gfxvehicle.position, xform); 199 | mat4.getRotation(this.gfxvehicle.orientation, xform); 200 | } 201 | 202 | private onKeyDown(event) { 203 | const key = this.keyState; 204 | switch (event.keyCode) { 205 | case 38: /*up*/ key.forward = true; break; 206 | case 40: /*down*/ key.backward = true; break; 207 | case 37: /*left*/ key.left = true; break; 208 | case 39: /*right*/ key.right = true; break; 209 | case 81: /*Q*/ key.ltrigger = true; break; 210 | case 65: /*A*/ key.ltrigger = true; break; 211 | case 68: /*D*/ key.rtrigger = true; break; 212 | case 69: /*E*/ key.rtrigger = true; break; 213 | } 214 | } 215 | 216 | private onKeyUp(event) { 217 | const key = this.keyState; 218 | switch (event.keyCode) { 219 | case 38: /*up*/ key.forward = false; break; 220 | case 40: /*down*/ key.backward = false; break; 221 | case 37: /*left*/ key.left = false; break; 222 | case 39: /*right*/ key.right = false; break; 223 | case 81: /*Q*/ key.ltrigger = false; break; 224 | case 65: /*A*/ key.ltrigger = false; break; 225 | case 68: /*D*/ key.rtrigger = false; break; 226 | case 69: /*E*/ key.rtrigger = false; break; 227 | } 228 | } 229 | 230 | private collisionCheck(): void { 231 | this.gfxvehicle.collisionState.left = false; 232 | this.gfxvehicle.collisionState.right = false; 233 | this.gfxvehicle.collisionState.front = false; 234 | 235 | const simpos = this.simvehicle.position; 236 | const simquat = this.simvehicle.orientation; 237 | 238 | const x = this.collision.width / 2 + simpos[0] * collisionPixelRatio; 239 | const z = this.collision.height / 2 + simpos[2] * collisionPixelRatio; 240 | const pos = vec3.fromValues(x, 0, z); 241 | 242 | const collision = this.collision.getPixelBilinear(x, z); 243 | if (collision.r < 255) { 244 | 245 | // repulsion 246 | vec3.set(this.repulsionVLeft, 1, 0, 0); 247 | vec3.set(this.repulsionVRight, -1, 0, 0); 248 | vec3.transformQuat(this.repulsionVLeft, this.repulsionVLeft, simquat); 249 | vec3.transformQuat(this.repulsionVRight, this.repulsionVRight, simquat); 250 | 251 | const lPos = vec3.add(this.repulsionVLeft, this.repulsionVLeft, pos); 252 | const rPos = vec3.add(this.repulsionVRight, this.repulsionVRight, pos); 253 | const lCol = this.collision.getPixel(Math.round(lPos[0]), Math.round(lPos[2])).r; 254 | const rCol = this.collision.getPixel(Math.round(rPos[0]), Math.round(rPos[2])).r; 255 | 256 | const repulsionAmount = Math.max(0.8, Math.min(repulsionCap, this.speed * repulsionRatio)); 257 | if (rCol > lCol) { 258 | this.repulsionForce[0] -= repulsionAmount; 259 | this.gfxvehicle.collisionState.left = true; 260 | } else if (rCol < lCol) { 261 | this.repulsionForce[0] += repulsionAmount; 262 | this.gfxvehicle.collisionState.right = true; 263 | } else { 264 | this.repulsionForce[2] -= repulsionAmount * 4; 265 | this.gfxvehicle.collisionState.front = true; 266 | this.speed = 0; 267 | } 268 | 269 | // Check for a "messy game over". This should rarely happen if the collision system is 270 | // working properly. 271 | if (rCol < 128 && lCol < 128) { 272 | const fCol = this.collision.getPixel(Math.round(pos[0] + 2), Math.round(pos[2] + 2)).r; 273 | if (fCol < 128) { 274 | console.log("GAMEOVER"); 275 | } 276 | } 277 | 278 | this.speed *= collisionSpeedDecrease; 279 | this.speed *= (1 - collisionSpeedDecreaseCoef * (1 - collision.r / 255)); 280 | this.boost = 0; 281 | } 282 | } 283 | 284 | private boosterCheck(dt: number): void { 285 | this.gfxvehicle.boosted = false; 286 | const simpos = this.simvehicle.position; 287 | this.boost -= boosterDecay * dt; 288 | if (this.boost < 0) { 289 | this.boost = 0.0; 290 | } 291 | 292 | const x = Math.round(this.collision.width / 2 + simpos[0] * collisionPixelRatio); 293 | const z = Math.round(this.collision.height / 2 + simpos[2] * collisionPixelRatio); 294 | const color = this.collision.getPixel(x, z); 295 | 296 | if (color.r === 255 && color.g < 127 && color.b < 127) { 297 | if (this.boost === 0.0) { 298 | this.gfxvehicle.boosted = true; 299 | } 300 | this.boost = boosterSpeed; 301 | } 302 | 303 | this.movement[2] += this.boost * dt; 304 | } 305 | 306 | private heightCheck(): void { 307 | const simpos = this.simvehicle.position; 308 | const simquat = this.simvehicle.orientation; 309 | 310 | let x = this.elevation.width / 2 + simpos[0] * heightPixelRatio; 311 | let z = this.elevation.height / 2 + simpos[2] * heightPixelRatio; 312 | const height = this.elevation.getPixelFBilinear(x, z) / heightScale + heightBias; 313 | if (height < 16777) { 314 | const delta = height - simpos[1]; 315 | if (delta > 0) { 316 | this.movement[1] += delta; 317 | } else { 318 | this.movement[1] += delta * heightLerp; 319 | } 320 | } 321 | 322 | // gradient 323 | const gradientVector = vec3.fromValues(0, 0, 5); 324 | vec3.transformQuat(gradientVector, gradientVector, simquat); 325 | vec3.add(gradientVector, gradientVector, simpos); 326 | x = this.elevation.width / 2 + gradientVector[0] * heightPixelRatio; 327 | z = this.elevation.height / 2 + gradientVector[2] * heightPixelRatio; 328 | let nheight = this.elevation.getPixelFBilinear(x, z) / heightScale + heightBias; 329 | if (nheight < 16777) { 330 | this.gradientTarget = -Math.atan2(nheight - height, 5.0); 331 | } 332 | 333 | // tilt 334 | const tiltVector = vec3.fromValues(5, 0, 0); 335 | vec3.transformQuat(tiltVector, tiltVector, simquat); 336 | vec3.add(tiltVector, tiltVector, simpos); 337 | x = this.elevation.width / 2 + tiltVector[0] * heightPixelRatio; 338 | z = this.elevation.height / 2 + tiltVector[2] * heightPixelRatio; 339 | nheight = this.elevation.getPixelFBilinear(x, z) / heightScale + heightBias; 340 | if (nheight >= 16777) { 341 | vec3.subtract(tiltVector, tiltVector, simpos); 342 | vec3.scale(tiltVector, tiltVector, -1); 343 | vec3.add(tiltVector, tiltVector, simpos); 344 | x = this.elevation.width / 2 + tiltVector[0] * heightPixelRatio; 345 | z = this.elevation.height / 2 + tiltVector[2] * heightPixelRatio; 346 | nheight = this.elevation.getPixelFBilinear(x, z) / heightScale + heightBias; 347 | } 348 | if (nheight < 16777) { 349 | this.tiltTarget = Math.atan2(nheight - height, 5.0); 350 | } 351 | } 352 | } 353 | 354 | interface KeyState { 355 | forward: boolean; 356 | backward: boolean; 357 | left: boolean; 358 | right: boolean; 359 | ltrigger: boolean; 360 | rtrigger: boolean; 361 | use: boolean; 362 | } 363 | 364 | const epsilon = 0.00000001; 365 | const zero3 = vec3.create(); 366 | const airResist = 0.02; 367 | const airDrift = 0.1; 368 | const thrust = 0.02; 369 | const airBrake = 0.02; 370 | const maxSpeed = 7.0; 371 | const boosterSpeed = maxSpeed * 0.2; 372 | const boosterDecay = 0.01; 373 | const yawAngleSpeed = 0.005; 374 | const airAngularSpeed = 0.0065; 375 | const repulsionRatio = 0.5; 376 | const repulsionCap = 2.5; 377 | const repulsionLerp = 0.1; 378 | const collisionSpeedDecrease = 0.8; 379 | const collisionSpeedDecreaseCoef = 0.8; 380 | const driftLerp = 0.35; 381 | const yawAngleLerp = 0.35; 382 | const gradientAxis = vec3.fromValues(1, 0, 0); 383 | const tiltAxis = vec3.fromValues(0, 0, 1); 384 | const rollAngle = 0.6; 385 | const rollLerp = 0.08; 386 | const rollDirection = vec3.fromValues(0, 0, 1); 387 | const collisionPixelRatio = 2048.0 / 6000.0; 388 | const gradientLerp = 0.05; 389 | const tiltLerp = 0.05; 390 | const heightPixelRatio = 2048.0 / 6000.0; 391 | const heightBias = 4.0; 392 | const heightLerp = 0.4; 393 | const heightScale = 10.0; 394 | 395 | function vec3AlmostEquals(a: vec3, b: vec3, vepsilon: number): boolean { 396 | const a0 = a[0], a1 = a[1], a2 = a[2]; 397 | const b0 = b[0], b1 = b[1], b2 = b[2]; 398 | return (Math.abs(a0 - b0) <= vepsilon * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && 399 | Math.abs(a1 - b1) <= vepsilon * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && 400 | Math.abs(a2 - b2) <= vepsilon * Math.max(1.0, Math.abs(a2), Math.abs(b2))); 401 | } 402 | -------------------------------------------------------------------------------- /src/urls.ts: -------------------------------------------------------------------------------- 1 | import * as Filament from "filament"; 2 | 3 | const iblSuffix = Filament.getSupportedFormatSuffix("etc s3tc"); 4 | const environ = "env/syferfontein_18d_clear_2k"; 5 | 6 | export const ibl = `${environ}_ibl${iblSuffix}.ktx.bmp`; 7 | export const skySmall = `${environ}_skybox_tiny.ktx.bmp`; 8 | export const skyLarge = `${environ}_skybox.ktx.bmp`; 9 | 10 | export const nonlitMaterial = "materials/nonlit.filamat"; 11 | export const pbrMaterial = "materials/pbr.filamat"; 12 | export const texMaterial = "materials/tex.filamat"; 13 | 14 | export const diffuse = "diffuse.jpg"; 15 | export const specular = "specular.jpg"; 16 | export const normal = "normal.jpg"; 17 | export const mesh = "filamesh"; 18 | 19 | export const collision = "tracks/collision.png"; 20 | export const elevation = "tracks/height.png"; 21 | -------------------------------------------------------------------------------- /src/vehicle.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------------------------- 2 | // Vehicle represents the position, orientation, and other attributes of a race car. 3 | // 4 | // The Simulation is basically the only component that modifies Vehicle attributes, other components 5 | // need only read-only access. 6 | // 7 | // For convenience, this class can compute a 4x4 matrix that transforms the vehicle from its rest 8 | // pose at the origin to its designated position and orientation within the world. It also proffers 9 | // a method that allows clients to move the ship along its own axis. 10 | // 11 | // - constructor(position: vec3) 12 | // - speed: number; 13 | // - position: vec3; 14 | // - orientation: quat; 15 | // - collisionState: CollisionState; 16 | // - getMatrix(): mat4 17 | // - translate(v: vec3): void 18 | // 19 | // HexGL by Thibaut 'BKcore' Despoulain 20 | // Rewritten by Philip Rideout 21 | // ------------------------------------------------------------------------------------------------- 22 | 23 | import { mat4, quat, vec3 } from "gl-matrix"; 24 | 25 | export default class Vehicle { 26 | // The speed is normalized such that 1.0 is maximum and 0.0 is minimum. 27 | public speed: number; 28 | public accelerating: boolean; 29 | public boosted: boolean; 30 | 31 | public readonly position: vec3; 32 | public readonly orientation: quat; 33 | 34 | // The sole purpose of the collision struct is to allow the effects engine (particles etc) 35 | // to check if the vehicle has been banged up and draw sparks etc. 36 | public readonly collisionState: CollisionState; 37 | 38 | // Temporaries. 39 | private readonly matrix: mat4; 40 | private readonly temp: vec3; 41 | 42 | constructor(pos: vec3) { 43 | this.speed = 0.0; 44 | this.accelerating = false; 45 | this.boosted = false; 46 | this.position = vec3.copy(vec3.create(), pos); 47 | this.orientation = quat.create(); 48 | this.matrix = mat4.create(); 49 | this.temp = vec3.create(); 50 | this.collisionState = { 51 | front: false, 52 | left: false, 53 | right: false, 54 | }; 55 | } 56 | 57 | public getMatrix(): mat4 { 58 | return mat4.fromRotationTranslation(this.matrix, this.orientation, this.position); 59 | } 60 | 61 | public translate(v: vec3) { 62 | vec3.transformQuat(this.temp, v, this.orientation); 63 | vec3.add(this.position, this.position, this.temp); 64 | } 65 | } 66 | 67 | interface CollisionState { 68 | front: boolean; 69 | left: boolean; 70 | right: boolean; 71 | } 72 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "sourceMap": true, 4 | "inlineSourceMap": false, 5 | "baseUrl": "./", 6 | 7 | // This must be consistent with tsconfig.json: 8 | "paths": { 9 | "filament": ["filament/filament"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "rules": { 7 | "interface-name" : false, 8 | "no-bitwise" : false, 9 | "no-console" : false, 10 | "one-variable-per-declaration" : false, 11 | "space-within-parens": true, 12 | "no-internal-module": false, 13 | "no-namespace": false, 14 | "max-classes-per-file": false, 15 | "no-string-literal": false, 16 | "object-literal-shorthand": false, 17 | "object-literal-sort-keys": false 18 | }, 19 | "rulesDirectory": [] 20 | } -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | 'use strict'; 4 | 5 | module.exports = { 6 | devtool: 'source-map', 7 | entry: './src/app.ts', 8 | 9 | // We do not actually use the following modules, but emscripten emits JS bindings that 10 | // conditionally uses them. Therefore we need to tell webpack to skip over their "require" 11 | // statements. 12 | externals: { 13 | fs: 'fs', 14 | crypto: 'crypto', 15 | path: 'path' 16 | }, 17 | 18 | output: { 19 | path: path.resolve(__dirname, '../hexgl_public') 20 | }, 21 | 22 | module: { 23 | rules: [ 24 | { test: /\.tsx?$/, loader: 'ts-loader' } 25 | ] 26 | }, 27 | 28 | resolve: { 29 | extensions: [ '.ts', '.tsx', '.js' ], 30 | 31 | // This must be consistent with tsconfig.json: 32 | alias: { 33 | 'filament': path.resolve(__dirname, 'filament/filament'), 34 | } 35 | }, 36 | 37 | performance: { 38 | assetFilter: function(assetFilename) { 39 | return false; 40 | } 41 | } 42 | }; 43 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/gl-matrix@^2.4.4": 6 | version "2.4.4" 7 | resolved "https://registry.yarnpkg.com/@types/gl-matrix/-/gl-matrix-2.4.4.tgz#e9d06dc5552102eb6ced7beb78ceb3290b229959" 8 | integrity sha512-HyI/bS+CxFiewhtpuwUP9VftvPyImQulBuI9+VEUa5NnGILsuokliq2fFp9DqZsJHbGWxk/VOLwHaXb4vIkKBw== 9 | 10 | "@webassemblyjs/ast@1.7.11": 11 | version "1.7.11" 12 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" 13 | integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA== 14 | dependencies: 15 | "@webassemblyjs/helper-module-context" "1.7.11" 16 | "@webassemblyjs/helper-wasm-bytecode" "1.7.11" 17 | "@webassemblyjs/wast-parser" "1.7.11" 18 | 19 | "@webassemblyjs/floating-point-hex-parser@1.7.11": 20 | version "1.7.11" 21 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" 22 | integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== 23 | 24 | "@webassemblyjs/helper-api-error@1.7.11": 25 | version "1.7.11" 26 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" 27 | integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== 28 | 29 | "@webassemblyjs/helper-buffer@1.7.11": 30 | version "1.7.11" 31 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" 32 | integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== 33 | 34 | "@webassemblyjs/helper-code-frame@1.7.11": 35 | version "1.7.11" 36 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" 37 | integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw== 38 | dependencies: 39 | "@webassemblyjs/wast-printer" "1.7.11" 40 | 41 | "@webassemblyjs/helper-fsm@1.7.11": 42 | version "1.7.11" 43 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" 44 | integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== 45 | 46 | "@webassemblyjs/helper-module-context@1.7.11": 47 | version "1.7.11" 48 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" 49 | integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== 50 | 51 | "@webassemblyjs/helper-wasm-bytecode@1.7.11": 52 | version "1.7.11" 53 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" 54 | integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== 55 | 56 | "@webassemblyjs/helper-wasm-section@1.7.11": 57 | version "1.7.11" 58 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" 59 | integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q== 60 | dependencies: 61 | "@webassemblyjs/ast" "1.7.11" 62 | "@webassemblyjs/helper-buffer" "1.7.11" 63 | "@webassemblyjs/helper-wasm-bytecode" "1.7.11" 64 | "@webassemblyjs/wasm-gen" "1.7.11" 65 | 66 | "@webassemblyjs/ieee754@1.7.11": 67 | version "1.7.11" 68 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" 69 | integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ== 70 | dependencies: 71 | "@xtuc/ieee754" "^1.2.0" 72 | 73 | "@webassemblyjs/leb128@1.7.11": 74 | version "1.7.11" 75 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" 76 | integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw== 77 | dependencies: 78 | "@xtuc/long" "4.2.1" 79 | 80 | "@webassemblyjs/utf8@1.7.11": 81 | version "1.7.11" 82 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" 83 | integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== 84 | 85 | "@webassemblyjs/wasm-edit@1.7.11": 86 | version "1.7.11" 87 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" 88 | integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg== 89 | dependencies: 90 | "@webassemblyjs/ast" "1.7.11" 91 | "@webassemblyjs/helper-buffer" "1.7.11" 92 | "@webassemblyjs/helper-wasm-bytecode" "1.7.11" 93 | "@webassemblyjs/helper-wasm-section" "1.7.11" 94 | "@webassemblyjs/wasm-gen" "1.7.11" 95 | "@webassemblyjs/wasm-opt" "1.7.11" 96 | "@webassemblyjs/wasm-parser" "1.7.11" 97 | "@webassemblyjs/wast-printer" "1.7.11" 98 | 99 | "@webassemblyjs/wasm-gen@1.7.11": 100 | version "1.7.11" 101 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" 102 | integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA== 103 | dependencies: 104 | "@webassemblyjs/ast" "1.7.11" 105 | "@webassemblyjs/helper-wasm-bytecode" "1.7.11" 106 | "@webassemblyjs/ieee754" "1.7.11" 107 | "@webassemblyjs/leb128" "1.7.11" 108 | "@webassemblyjs/utf8" "1.7.11" 109 | 110 | "@webassemblyjs/wasm-opt@1.7.11": 111 | version "1.7.11" 112 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" 113 | integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg== 114 | dependencies: 115 | "@webassemblyjs/ast" "1.7.11" 116 | "@webassemblyjs/helper-buffer" "1.7.11" 117 | "@webassemblyjs/wasm-gen" "1.7.11" 118 | "@webassemblyjs/wasm-parser" "1.7.11" 119 | 120 | "@webassemblyjs/wasm-parser@1.7.11": 121 | version "1.7.11" 122 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" 123 | integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg== 124 | dependencies: 125 | "@webassemblyjs/ast" "1.7.11" 126 | "@webassemblyjs/helper-api-error" "1.7.11" 127 | "@webassemblyjs/helper-wasm-bytecode" "1.7.11" 128 | "@webassemblyjs/ieee754" "1.7.11" 129 | "@webassemblyjs/leb128" "1.7.11" 130 | "@webassemblyjs/utf8" "1.7.11" 131 | 132 | "@webassemblyjs/wast-parser@1.7.11": 133 | version "1.7.11" 134 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" 135 | integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ== 136 | dependencies: 137 | "@webassemblyjs/ast" "1.7.11" 138 | "@webassemblyjs/floating-point-hex-parser" "1.7.11" 139 | "@webassemblyjs/helper-api-error" "1.7.11" 140 | "@webassemblyjs/helper-code-frame" "1.7.11" 141 | "@webassemblyjs/helper-fsm" "1.7.11" 142 | "@xtuc/long" "4.2.1" 143 | 144 | "@webassemblyjs/wast-printer@1.7.11": 145 | version "1.7.11" 146 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" 147 | integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg== 148 | dependencies: 149 | "@webassemblyjs/ast" "1.7.11" 150 | "@webassemblyjs/wast-parser" "1.7.11" 151 | "@xtuc/long" "4.2.1" 152 | 153 | "@xtuc/ieee754@^1.2.0": 154 | version "1.2.0" 155 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" 156 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== 157 | 158 | "@xtuc/long@4.2.1": 159 | version "4.2.1" 160 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" 161 | integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== 162 | 163 | abbrev@1: 164 | version "1.1.1" 165 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 166 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 167 | 168 | acorn-dynamic-import@^3.0.0: 169 | version "3.0.0" 170 | resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" 171 | integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== 172 | dependencies: 173 | acorn "^5.0.0" 174 | 175 | acorn@^5.0.0, acorn@^5.6.2: 176 | version "5.7.3" 177 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" 178 | integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== 179 | 180 | ajv-errors@^1.0.0: 181 | version "1.0.0" 182 | resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" 183 | integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk= 184 | 185 | ajv-keywords@^3.1.0: 186 | version "3.2.0" 187 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" 188 | integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= 189 | 190 | ajv@^6.1.0: 191 | version "6.5.5" 192 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" 193 | integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== 194 | dependencies: 195 | fast-deep-equal "^2.0.1" 196 | fast-json-stable-stringify "^2.0.0" 197 | json-schema-traverse "^0.4.1" 198 | uri-js "^4.2.2" 199 | 200 | ansi-regex@^2.0.0: 201 | version "2.1.1" 202 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 203 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 204 | 205 | ansi-regex@^3.0.0: 206 | version "3.0.0" 207 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 208 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 209 | 210 | ansi-styles@^2.2.1: 211 | version "2.2.1" 212 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 213 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 214 | 215 | ansi-styles@^3.2.1: 216 | version "3.2.1" 217 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 218 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 219 | dependencies: 220 | color-convert "^1.9.0" 221 | 222 | anymatch@^2.0.0: 223 | version "2.0.0" 224 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 225 | integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== 226 | dependencies: 227 | micromatch "^3.1.4" 228 | normalize-path "^2.1.1" 229 | 230 | aproba@^1.0.3, aproba@^1.1.1: 231 | version "1.2.0" 232 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 233 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 234 | 235 | are-we-there-yet@~1.1.2: 236 | version "1.1.5" 237 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 238 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 239 | dependencies: 240 | delegates "^1.0.0" 241 | readable-stream "^2.0.6" 242 | 243 | argparse@^1.0.7: 244 | version "1.0.10" 245 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 246 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 247 | dependencies: 248 | sprintf-js "~1.0.2" 249 | 250 | arr-diff@^4.0.0: 251 | version "4.0.0" 252 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 253 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 254 | 255 | arr-flatten@^1.1.0: 256 | version "1.1.0" 257 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 258 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 259 | 260 | arr-union@^3.1.0: 261 | version "3.1.0" 262 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 263 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 264 | 265 | array-unique@^0.3.2: 266 | version "0.3.2" 267 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 268 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 269 | 270 | asn1.js@^4.0.0: 271 | version "4.10.1" 272 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" 273 | integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== 274 | dependencies: 275 | bn.js "^4.0.0" 276 | inherits "^2.0.1" 277 | minimalistic-assert "^1.0.0" 278 | 279 | assert@^1.1.1: 280 | version "1.4.1" 281 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" 282 | integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= 283 | dependencies: 284 | util "0.10.3" 285 | 286 | assign-symbols@^1.0.0: 287 | version "1.0.0" 288 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 289 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 290 | 291 | async-each@^1.0.0: 292 | version "1.0.1" 293 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 294 | integrity sha1-GdOGodntxufByF04iu28xW0zYC0= 295 | 296 | atob@^2.1.1: 297 | version "2.1.2" 298 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 299 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 300 | 301 | babel-code-frame@^6.22.0: 302 | version "6.26.0" 303 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 304 | integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= 305 | dependencies: 306 | chalk "^1.1.3" 307 | esutils "^2.0.2" 308 | js-tokens "^3.0.2" 309 | 310 | balanced-match@^1.0.0: 311 | version "1.0.0" 312 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 313 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 314 | 315 | base64-js@^1.0.2: 316 | version "1.3.0" 317 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" 318 | integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== 319 | 320 | base@^0.11.1: 321 | version "0.11.2" 322 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 323 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 324 | dependencies: 325 | cache-base "^1.0.1" 326 | class-utils "^0.3.5" 327 | component-emitter "^1.2.1" 328 | define-property "^1.0.0" 329 | isobject "^3.0.1" 330 | mixin-deep "^1.2.0" 331 | pascalcase "^0.1.1" 332 | 333 | big.js@^3.1.3: 334 | version "3.2.0" 335 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" 336 | integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== 337 | 338 | binary-extensions@^1.0.0: 339 | version "1.12.0" 340 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" 341 | integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== 342 | 343 | bluebird@^3.5.1: 344 | version "3.5.3" 345 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" 346 | integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== 347 | 348 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: 349 | version "4.11.8" 350 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" 351 | integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== 352 | 353 | brace-expansion@^1.1.7: 354 | version "1.1.11" 355 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 356 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 357 | dependencies: 358 | balanced-match "^1.0.0" 359 | concat-map "0.0.1" 360 | 361 | braces@^2.3.0, braces@^2.3.1: 362 | version "2.3.2" 363 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 364 | integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 365 | dependencies: 366 | arr-flatten "^1.1.0" 367 | array-unique "^0.3.2" 368 | extend-shallow "^2.0.1" 369 | fill-range "^4.0.0" 370 | isobject "^3.0.1" 371 | repeat-element "^1.1.2" 372 | snapdragon "^0.8.1" 373 | snapdragon-node "^2.0.1" 374 | split-string "^3.0.2" 375 | to-regex "^3.0.1" 376 | 377 | brorand@^1.0.1: 378 | version "1.1.0" 379 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 380 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 381 | 382 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 383 | version "1.2.0" 384 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" 385 | integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== 386 | dependencies: 387 | buffer-xor "^1.0.3" 388 | cipher-base "^1.0.0" 389 | create-hash "^1.1.0" 390 | evp_bytestokey "^1.0.3" 391 | inherits "^2.0.1" 392 | safe-buffer "^5.0.1" 393 | 394 | browserify-cipher@^1.0.0: 395 | version "1.0.1" 396 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" 397 | integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== 398 | dependencies: 399 | browserify-aes "^1.0.4" 400 | browserify-des "^1.0.0" 401 | evp_bytestokey "^1.0.0" 402 | 403 | browserify-des@^1.0.0: 404 | version "1.0.2" 405 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" 406 | integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== 407 | dependencies: 408 | cipher-base "^1.0.1" 409 | des.js "^1.0.0" 410 | inherits "^2.0.1" 411 | safe-buffer "^5.1.2" 412 | 413 | browserify-rsa@^4.0.0: 414 | version "4.0.1" 415 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 416 | integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= 417 | dependencies: 418 | bn.js "^4.1.0" 419 | randombytes "^2.0.1" 420 | 421 | browserify-sign@^4.0.0: 422 | version "4.0.4" 423 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" 424 | integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= 425 | dependencies: 426 | bn.js "^4.1.1" 427 | browserify-rsa "^4.0.0" 428 | create-hash "^1.1.0" 429 | create-hmac "^1.1.2" 430 | elliptic "^6.0.0" 431 | inherits "^2.0.1" 432 | parse-asn1 "^5.0.0" 433 | 434 | browserify-zlib@^0.2.0: 435 | version "0.2.0" 436 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" 437 | integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== 438 | dependencies: 439 | pako "~1.0.5" 440 | 441 | buffer-from@^1.0.0: 442 | version "1.1.1" 443 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 444 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 445 | 446 | buffer-xor@^1.0.3: 447 | version "1.0.3" 448 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 449 | integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= 450 | 451 | buffer@^4.3.0: 452 | version "4.9.1" 453 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 454 | integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= 455 | dependencies: 456 | base64-js "^1.0.2" 457 | ieee754 "^1.1.4" 458 | isarray "^1.0.0" 459 | 460 | builtin-modules@^1.1.1: 461 | version "1.1.1" 462 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 463 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 464 | 465 | builtin-status-codes@^3.0.0: 466 | version "3.0.0" 467 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 468 | integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= 469 | 470 | cacache@^11.0.2: 471 | version "11.3.1" 472 | resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" 473 | integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA== 474 | dependencies: 475 | bluebird "^3.5.1" 476 | chownr "^1.0.1" 477 | figgy-pudding "^3.1.0" 478 | glob "^7.1.2" 479 | graceful-fs "^4.1.11" 480 | lru-cache "^4.1.3" 481 | mississippi "^3.0.0" 482 | mkdirp "^0.5.1" 483 | move-concurrently "^1.0.1" 484 | promise-inflight "^1.0.1" 485 | rimraf "^2.6.2" 486 | ssri "^6.0.0" 487 | unique-filename "^1.1.0" 488 | y18n "^4.0.0" 489 | 490 | cache-base@^1.0.1: 491 | version "1.0.1" 492 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 493 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 494 | dependencies: 495 | collection-visit "^1.0.0" 496 | component-emitter "^1.2.1" 497 | get-value "^2.0.6" 498 | has-value "^1.0.0" 499 | isobject "^3.0.1" 500 | set-value "^2.0.0" 501 | to-object-path "^0.3.0" 502 | union-value "^1.0.0" 503 | unset-value "^1.0.0" 504 | 505 | camelcase@^5.0.0: 506 | version "5.0.0" 507 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" 508 | integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== 509 | 510 | chalk@^1.1.3: 511 | version "1.1.3" 512 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 513 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 514 | dependencies: 515 | ansi-styles "^2.2.1" 516 | escape-string-regexp "^1.0.2" 517 | has-ansi "^2.0.0" 518 | strip-ansi "^3.0.0" 519 | supports-color "^2.0.0" 520 | 521 | chalk@^2.3.0, chalk@^2.4.1: 522 | version "2.4.1" 523 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 524 | integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== 525 | dependencies: 526 | ansi-styles "^3.2.1" 527 | escape-string-regexp "^1.0.5" 528 | supports-color "^5.3.0" 529 | 530 | chokidar@^2.0.2: 531 | version "2.0.4" 532 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" 533 | integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== 534 | dependencies: 535 | anymatch "^2.0.0" 536 | async-each "^1.0.0" 537 | braces "^2.3.0" 538 | glob-parent "^3.1.0" 539 | inherits "^2.0.1" 540 | is-binary-path "^1.0.0" 541 | is-glob "^4.0.0" 542 | lodash.debounce "^4.0.8" 543 | normalize-path "^2.1.1" 544 | path-is-absolute "^1.0.0" 545 | readdirp "^2.0.0" 546 | upath "^1.0.5" 547 | optionalDependencies: 548 | fsevents "^1.2.2" 549 | 550 | chownr@^1.0.1, chownr@^1.1.1: 551 | version "1.1.1" 552 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" 553 | integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== 554 | 555 | chrome-trace-event@^1.0.0: 556 | version "1.0.0" 557 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" 558 | integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== 559 | dependencies: 560 | tslib "^1.9.0" 561 | 562 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 563 | version "1.0.4" 564 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 565 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 566 | dependencies: 567 | inherits "^2.0.1" 568 | safe-buffer "^5.0.1" 569 | 570 | class-utils@^0.3.5: 571 | version "0.3.6" 572 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 573 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 574 | dependencies: 575 | arr-union "^3.1.0" 576 | define-property "^0.2.5" 577 | isobject "^3.0.0" 578 | static-extend "^0.1.1" 579 | 580 | cliui@^4.0.0: 581 | version "4.1.0" 582 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" 583 | integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== 584 | dependencies: 585 | string-width "^2.1.1" 586 | strip-ansi "^4.0.0" 587 | wrap-ansi "^2.0.0" 588 | 589 | code-point-at@^1.0.0: 590 | version "1.1.0" 591 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 592 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 593 | 594 | collection-visit@^1.0.0: 595 | version "1.0.0" 596 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 597 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 598 | dependencies: 599 | map-visit "^1.0.0" 600 | object-visit "^1.0.0" 601 | 602 | color-convert@^1.9.0: 603 | version "1.9.3" 604 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 605 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 606 | dependencies: 607 | color-name "1.1.3" 608 | 609 | color-name@1.1.3: 610 | version "1.1.3" 611 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 612 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 613 | 614 | commander@^2.12.1: 615 | version "2.19.0" 616 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" 617 | integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== 618 | 619 | commander@~2.17.1: 620 | version "2.17.1" 621 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" 622 | integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== 623 | 624 | commondir@^1.0.1: 625 | version "1.0.1" 626 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 627 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 628 | 629 | component-emitter@^1.2.1: 630 | version "1.2.1" 631 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 632 | integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= 633 | 634 | concat-map@0.0.1: 635 | version "0.0.1" 636 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 637 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 638 | 639 | concat-stream@^1.5.0: 640 | version "1.6.2" 641 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 642 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 643 | dependencies: 644 | buffer-from "^1.0.0" 645 | inherits "^2.0.3" 646 | readable-stream "^2.2.2" 647 | typedarray "^0.0.6" 648 | 649 | console-browserify@^1.1.0: 650 | version "1.1.0" 651 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 652 | integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= 653 | dependencies: 654 | date-now "^0.1.4" 655 | 656 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 657 | version "1.1.0" 658 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 659 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 660 | 661 | constants-browserify@^1.0.0: 662 | version "1.0.0" 663 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 664 | integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= 665 | 666 | copy-concurrently@^1.0.0: 667 | version "1.0.5" 668 | resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" 669 | integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== 670 | dependencies: 671 | aproba "^1.1.1" 672 | fs-write-stream-atomic "^1.0.8" 673 | iferr "^0.1.5" 674 | mkdirp "^0.5.1" 675 | rimraf "^2.5.4" 676 | run-queue "^1.0.0" 677 | 678 | copy-descriptor@^0.1.0: 679 | version "0.1.1" 680 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 681 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 682 | 683 | core-util-is@~1.0.0: 684 | version "1.0.2" 685 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 686 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 687 | 688 | create-ecdh@^4.0.0: 689 | version "4.0.3" 690 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" 691 | integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== 692 | dependencies: 693 | bn.js "^4.1.0" 694 | elliptic "^6.0.0" 695 | 696 | create-hash@^1.1.0, create-hash@^1.1.2: 697 | version "1.2.0" 698 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 699 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 700 | dependencies: 701 | cipher-base "^1.0.1" 702 | inherits "^2.0.1" 703 | md5.js "^1.3.4" 704 | ripemd160 "^2.0.1" 705 | sha.js "^2.4.0" 706 | 707 | create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: 708 | version "1.1.7" 709 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 710 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 711 | dependencies: 712 | cipher-base "^1.0.3" 713 | create-hash "^1.1.0" 714 | inherits "^2.0.1" 715 | ripemd160 "^2.0.0" 716 | safe-buffer "^5.0.1" 717 | sha.js "^2.4.8" 718 | 719 | cross-spawn@^6.0.0, cross-spawn@^6.0.5: 720 | version "6.0.5" 721 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 722 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 723 | dependencies: 724 | nice-try "^1.0.4" 725 | path-key "^2.0.1" 726 | semver "^5.5.0" 727 | shebang-command "^1.2.0" 728 | which "^1.2.9" 729 | 730 | crypto-browserify@^3.11.0: 731 | version "3.12.0" 732 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 733 | integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== 734 | dependencies: 735 | browserify-cipher "^1.0.0" 736 | browserify-sign "^4.0.0" 737 | create-ecdh "^4.0.0" 738 | create-hash "^1.1.0" 739 | create-hmac "^1.1.0" 740 | diffie-hellman "^5.0.0" 741 | inherits "^2.0.1" 742 | pbkdf2 "^3.0.3" 743 | public-encrypt "^4.0.0" 744 | randombytes "^2.0.0" 745 | randomfill "^1.0.3" 746 | 747 | cyclist@~0.2.2: 748 | version "0.2.2" 749 | resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" 750 | integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= 751 | 752 | date-now@^0.1.4: 753 | version "0.1.4" 754 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 755 | integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= 756 | 757 | debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: 758 | version "2.6.9" 759 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 760 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 761 | dependencies: 762 | ms "2.0.0" 763 | 764 | decamelize@^1.2.0: 765 | version "1.2.0" 766 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 767 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 768 | 769 | decode-uri-component@^0.2.0: 770 | version "0.2.0" 771 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 772 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 773 | 774 | deep-extend@^0.6.0: 775 | version "0.6.0" 776 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 777 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 778 | 779 | define-property@^0.2.5: 780 | version "0.2.5" 781 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 782 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 783 | dependencies: 784 | is-descriptor "^0.1.0" 785 | 786 | define-property@^1.0.0: 787 | version "1.0.0" 788 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 789 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 790 | dependencies: 791 | is-descriptor "^1.0.0" 792 | 793 | define-property@^2.0.2: 794 | version "2.0.2" 795 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 796 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 797 | dependencies: 798 | is-descriptor "^1.0.2" 799 | isobject "^3.0.1" 800 | 801 | delegates@^1.0.0: 802 | version "1.0.0" 803 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 804 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 805 | 806 | des.js@^1.0.0: 807 | version "1.0.0" 808 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 809 | integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= 810 | dependencies: 811 | inherits "^2.0.1" 812 | minimalistic-assert "^1.0.0" 813 | 814 | detect-libc@^1.0.2: 815 | version "1.0.3" 816 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 817 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 818 | 819 | diff@^3.2.0: 820 | version "3.5.0" 821 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 822 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 823 | 824 | diffie-hellman@^5.0.0: 825 | version "5.0.3" 826 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" 827 | integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== 828 | dependencies: 829 | bn.js "^4.1.0" 830 | miller-rabin "^4.0.0" 831 | randombytes "^2.0.0" 832 | 833 | domain-browser@^1.1.1: 834 | version "1.2.0" 835 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 836 | integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== 837 | 838 | duplexify@^3.4.2, duplexify@^3.6.0: 839 | version "3.6.1" 840 | resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" 841 | integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== 842 | dependencies: 843 | end-of-stream "^1.0.0" 844 | inherits "^2.0.1" 845 | readable-stream "^2.0.0" 846 | stream-shift "^1.0.0" 847 | 848 | elliptic@^6.0.0: 849 | version "6.4.1" 850 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" 851 | integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== 852 | dependencies: 853 | bn.js "^4.4.0" 854 | brorand "^1.0.1" 855 | hash.js "^1.0.0" 856 | hmac-drbg "^1.0.0" 857 | inherits "^2.0.1" 858 | minimalistic-assert "^1.0.0" 859 | minimalistic-crypto-utils "^1.0.0" 860 | 861 | emojis-list@^2.0.0: 862 | version "2.1.0" 863 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 864 | integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= 865 | 866 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: 867 | version "1.4.1" 868 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 869 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== 870 | dependencies: 871 | once "^1.4.0" 872 | 873 | enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: 874 | version "4.1.0" 875 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" 876 | integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== 877 | dependencies: 878 | graceful-fs "^4.1.2" 879 | memory-fs "^0.4.0" 880 | tapable "^1.0.0" 881 | 882 | errno@^0.1.3, errno@~0.1.7: 883 | version "0.1.7" 884 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" 885 | integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== 886 | dependencies: 887 | prr "~1.0.1" 888 | 889 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 890 | version "1.0.5" 891 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 892 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 893 | 894 | eslint-scope@^4.0.0: 895 | version "4.0.0" 896 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" 897 | integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== 898 | dependencies: 899 | esrecurse "^4.1.0" 900 | estraverse "^4.1.1" 901 | 902 | esprima@^4.0.0: 903 | version "4.0.1" 904 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 905 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 906 | 907 | esrecurse@^4.1.0: 908 | version "4.2.1" 909 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 910 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 911 | dependencies: 912 | estraverse "^4.1.0" 913 | 914 | estraverse@^4.1.0, estraverse@^4.1.1: 915 | version "4.2.0" 916 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 917 | integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= 918 | 919 | esutils@^2.0.2: 920 | version "2.0.2" 921 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 922 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 923 | 924 | events@^1.0.0: 925 | version "1.1.1" 926 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 927 | integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= 928 | 929 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 930 | version "1.0.3" 931 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 932 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 933 | dependencies: 934 | md5.js "^1.3.4" 935 | safe-buffer "^5.1.1" 936 | 937 | execa@^0.10.0: 938 | version "0.10.0" 939 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" 940 | integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== 941 | dependencies: 942 | cross-spawn "^6.0.0" 943 | get-stream "^3.0.0" 944 | is-stream "^1.1.0" 945 | npm-run-path "^2.0.0" 946 | p-finally "^1.0.0" 947 | signal-exit "^3.0.0" 948 | strip-eof "^1.0.0" 949 | 950 | expand-brackets@^2.1.4: 951 | version "2.1.4" 952 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 953 | integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 954 | dependencies: 955 | debug "^2.3.3" 956 | define-property "^0.2.5" 957 | extend-shallow "^2.0.1" 958 | posix-character-classes "^0.1.0" 959 | regex-not "^1.0.0" 960 | snapdragon "^0.8.1" 961 | to-regex "^3.0.1" 962 | 963 | extend-shallow@^2.0.1: 964 | version "2.0.1" 965 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 966 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 967 | dependencies: 968 | is-extendable "^0.1.0" 969 | 970 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 971 | version "3.0.2" 972 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 973 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 974 | dependencies: 975 | assign-symbols "^1.0.0" 976 | is-extendable "^1.0.1" 977 | 978 | extglob@^2.0.4: 979 | version "2.0.4" 980 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 981 | integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 982 | dependencies: 983 | array-unique "^0.3.2" 984 | define-property "^1.0.0" 985 | expand-brackets "^2.1.4" 986 | extend-shallow "^2.0.1" 987 | fragment-cache "^0.2.1" 988 | regex-not "^1.0.0" 989 | snapdragon "^0.8.1" 990 | to-regex "^3.0.1" 991 | 992 | fast-deep-equal@^2.0.1: 993 | version "2.0.1" 994 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 995 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 996 | 997 | fast-json-stable-stringify@^2.0.0: 998 | version "2.0.0" 999 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 1000 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 1001 | 1002 | figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: 1003 | version "3.5.1" 1004 | resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" 1005 | integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== 1006 | 1007 | fill-range@^4.0.0: 1008 | version "4.0.0" 1009 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 1010 | integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 1011 | dependencies: 1012 | extend-shallow "^2.0.1" 1013 | is-number "^3.0.0" 1014 | repeat-string "^1.6.1" 1015 | to-regex-range "^2.1.0" 1016 | 1017 | find-cache-dir@^2.0.0: 1018 | version "2.0.0" 1019 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" 1020 | integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== 1021 | dependencies: 1022 | commondir "^1.0.1" 1023 | make-dir "^1.0.0" 1024 | pkg-dir "^3.0.0" 1025 | 1026 | find-up@^3.0.0: 1027 | version "3.0.0" 1028 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 1029 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 1030 | dependencies: 1031 | locate-path "^3.0.0" 1032 | 1033 | flush-write-stream@^1.0.0: 1034 | version "1.0.3" 1035 | resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" 1036 | integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== 1037 | dependencies: 1038 | inherits "^2.0.1" 1039 | readable-stream "^2.0.4" 1040 | 1041 | for-in@^1.0.2: 1042 | version "1.0.2" 1043 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1044 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 1045 | 1046 | fragment-cache@^0.2.1: 1047 | version "0.2.1" 1048 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1049 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 1050 | dependencies: 1051 | map-cache "^0.2.2" 1052 | 1053 | from2@^2.1.0: 1054 | version "2.3.0" 1055 | resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" 1056 | integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= 1057 | dependencies: 1058 | inherits "^2.0.1" 1059 | readable-stream "^2.0.0" 1060 | 1061 | fs-minipass@^1.2.5: 1062 | version "1.2.5" 1063 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 1064 | integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== 1065 | dependencies: 1066 | minipass "^2.2.1" 1067 | 1068 | fs-write-stream-atomic@^1.0.8: 1069 | version "1.0.10" 1070 | resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" 1071 | integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= 1072 | dependencies: 1073 | graceful-fs "^4.1.2" 1074 | iferr "^0.1.5" 1075 | imurmurhash "^0.1.4" 1076 | readable-stream "1 || 2" 1077 | 1078 | fs.realpath@^1.0.0: 1079 | version "1.0.0" 1080 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1081 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1082 | 1083 | fsevents@^1.2.2: 1084 | version "1.2.4" 1085 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" 1086 | integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== 1087 | dependencies: 1088 | nan "^2.9.2" 1089 | node-pre-gyp "^0.10.0" 1090 | 1091 | gauge@~2.7.3: 1092 | version "2.7.4" 1093 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1094 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 1095 | dependencies: 1096 | aproba "^1.0.3" 1097 | console-control-strings "^1.0.0" 1098 | has-unicode "^2.0.0" 1099 | object-assign "^4.1.0" 1100 | signal-exit "^3.0.0" 1101 | string-width "^1.0.1" 1102 | strip-ansi "^3.0.1" 1103 | wide-align "^1.1.0" 1104 | 1105 | get-caller-file@^1.0.1: 1106 | version "1.0.3" 1107 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" 1108 | integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== 1109 | 1110 | get-stream@^3.0.0: 1111 | version "3.0.0" 1112 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 1113 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 1114 | 1115 | get-value@^2.0.3, get-value@^2.0.6: 1116 | version "2.0.6" 1117 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1118 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 1119 | 1120 | gl-matrix@^2.8.1: 1121 | version "2.8.1" 1122 | resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-2.8.1.tgz#1c7873448eac61d2cd25803a074e837bd42581a3" 1123 | integrity sha512-0YCjVpE3pS5XWlN3J4X7AiAx65+nqAI54LndtVFnQZB6G/FVLkZH8y8V6R3cIoOQR4pUdfwQGd1iwyoXHJ4Qfw== 1124 | 1125 | glob-parent@^3.1.0: 1126 | version "3.1.0" 1127 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" 1128 | integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= 1129 | dependencies: 1130 | is-glob "^3.1.0" 1131 | path-dirname "^1.0.0" 1132 | 1133 | glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: 1134 | version "7.1.3" 1135 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1136 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 1137 | dependencies: 1138 | fs.realpath "^1.0.0" 1139 | inflight "^1.0.4" 1140 | inherits "2" 1141 | minimatch "^3.0.4" 1142 | once "^1.3.0" 1143 | path-is-absolute "^1.0.0" 1144 | 1145 | global-modules-path@^2.3.0: 1146 | version "2.3.0" 1147 | resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" 1148 | integrity sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag== 1149 | 1150 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 1151 | version "4.1.15" 1152 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 1153 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 1154 | 1155 | has-ansi@^2.0.0: 1156 | version "2.0.0" 1157 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1158 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 1159 | dependencies: 1160 | ansi-regex "^2.0.0" 1161 | 1162 | has-flag@^3.0.0: 1163 | version "3.0.0" 1164 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1165 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1166 | 1167 | has-unicode@^2.0.0: 1168 | version "2.0.1" 1169 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1170 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 1171 | 1172 | has-value@^0.3.1: 1173 | version "0.3.1" 1174 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1175 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 1176 | dependencies: 1177 | get-value "^2.0.3" 1178 | has-values "^0.1.4" 1179 | isobject "^2.0.0" 1180 | 1181 | has-value@^1.0.0: 1182 | version "1.0.0" 1183 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1184 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 1185 | dependencies: 1186 | get-value "^2.0.6" 1187 | has-values "^1.0.0" 1188 | isobject "^3.0.0" 1189 | 1190 | has-values@^0.1.4: 1191 | version "0.1.4" 1192 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1193 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 1194 | 1195 | has-values@^1.0.0: 1196 | version "1.0.0" 1197 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1198 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 1199 | dependencies: 1200 | is-number "^3.0.0" 1201 | kind-of "^4.0.0" 1202 | 1203 | hash-base@^3.0.0: 1204 | version "3.0.4" 1205 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" 1206 | integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= 1207 | dependencies: 1208 | inherits "^2.0.1" 1209 | safe-buffer "^5.0.1" 1210 | 1211 | hash.js@^1.0.0, hash.js@^1.0.3: 1212 | version "1.1.5" 1213 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" 1214 | integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== 1215 | dependencies: 1216 | inherits "^2.0.3" 1217 | minimalistic-assert "^1.0.1" 1218 | 1219 | hmac-drbg@^1.0.0: 1220 | version "1.0.1" 1221 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 1222 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 1223 | dependencies: 1224 | hash.js "^1.0.3" 1225 | minimalistic-assert "^1.0.0" 1226 | minimalistic-crypto-utils "^1.0.1" 1227 | 1228 | https-browserify@^1.0.0: 1229 | version "1.0.0" 1230 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 1231 | integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= 1232 | 1233 | iconv-lite@^0.4.4: 1234 | version "0.4.24" 1235 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1236 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1237 | dependencies: 1238 | safer-buffer ">= 2.1.2 < 3" 1239 | 1240 | ieee754@^1.1.4: 1241 | version "1.1.12" 1242 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" 1243 | integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== 1244 | 1245 | iferr@^0.1.5: 1246 | version "0.1.5" 1247 | resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" 1248 | integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= 1249 | 1250 | ignore-walk@^3.0.1: 1251 | version "3.0.1" 1252 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 1253 | integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== 1254 | dependencies: 1255 | minimatch "^3.0.4" 1256 | 1257 | import-local@^2.0.0: 1258 | version "2.0.0" 1259 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" 1260 | integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== 1261 | dependencies: 1262 | pkg-dir "^3.0.0" 1263 | resolve-cwd "^2.0.0" 1264 | 1265 | imurmurhash@^0.1.4: 1266 | version "0.1.4" 1267 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1268 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1269 | 1270 | indexof@0.0.1: 1271 | version "0.0.1" 1272 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 1273 | integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= 1274 | 1275 | inflight@^1.0.4: 1276 | version "1.0.6" 1277 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1278 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1279 | dependencies: 1280 | once "^1.3.0" 1281 | wrappy "1" 1282 | 1283 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: 1284 | version "2.0.3" 1285 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1286 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1287 | 1288 | inherits@2.0.1: 1289 | version "2.0.1" 1290 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1291 | integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= 1292 | 1293 | ini@~1.3.0: 1294 | version "1.3.5" 1295 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1296 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 1297 | 1298 | interpret@^1.1.0: 1299 | version "1.1.0" 1300 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" 1301 | integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= 1302 | 1303 | invert-kv@^2.0.0: 1304 | version "2.0.0" 1305 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" 1306 | integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== 1307 | 1308 | is-accessor-descriptor@^0.1.6: 1309 | version "0.1.6" 1310 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1311 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 1312 | dependencies: 1313 | kind-of "^3.0.2" 1314 | 1315 | is-accessor-descriptor@^1.0.0: 1316 | version "1.0.0" 1317 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1318 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 1319 | dependencies: 1320 | kind-of "^6.0.0" 1321 | 1322 | is-binary-path@^1.0.0: 1323 | version "1.0.1" 1324 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1325 | integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= 1326 | dependencies: 1327 | binary-extensions "^1.0.0" 1328 | 1329 | is-buffer@^1.1.5: 1330 | version "1.1.6" 1331 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1332 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1333 | 1334 | is-data-descriptor@^0.1.4: 1335 | version "0.1.4" 1336 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1337 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 1338 | dependencies: 1339 | kind-of "^3.0.2" 1340 | 1341 | is-data-descriptor@^1.0.0: 1342 | version "1.0.0" 1343 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1344 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 1345 | dependencies: 1346 | kind-of "^6.0.0" 1347 | 1348 | is-descriptor@^0.1.0: 1349 | version "0.1.6" 1350 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1351 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 1352 | dependencies: 1353 | is-accessor-descriptor "^0.1.6" 1354 | is-data-descriptor "^0.1.4" 1355 | kind-of "^5.0.0" 1356 | 1357 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1358 | version "1.0.2" 1359 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1360 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 1361 | dependencies: 1362 | is-accessor-descriptor "^1.0.0" 1363 | is-data-descriptor "^1.0.0" 1364 | kind-of "^6.0.2" 1365 | 1366 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1367 | version "0.1.1" 1368 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1369 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 1370 | 1371 | is-extendable@^1.0.1: 1372 | version "1.0.1" 1373 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1374 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 1375 | dependencies: 1376 | is-plain-object "^2.0.4" 1377 | 1378 | is-extglob@^2.1.0, is-extglob@^2.1.1: 1379 | version "2.1.1" 1380 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1381 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1382 | 1383 | is-fullwidth-code-point@^1.0.0: 1384 | version "1.0.0" 1385 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1386 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1387 | dependencies: 1388 | number-is-nan "^1.0.0" 1389 | 1390 | is-fullwidth-code-point@^2.0.0: 1391 | version "2.0.0" 1392 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1393 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1394 | 1395 | is-glob@^3.1.0: 1396 | version "3.1.0" 1397 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 1398 | integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= 1399 | dependencies: 1400 | is-extglob "^2.1.0" 1401 | 1402 | is-glob@^4.0.0: 1403 | version "4.0.0" 1404 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" 1405 | integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= 1406 | dependencies: 1407 | is-extglob "^2.1.1" 1408 | 1409 | is-number@^3.0.0: 1410 | version "3.0.0" 1411 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1412 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 1413 | dependencies: 1414 | kind-of "^3.0.2" 1415 | 1416 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1417 | version "2.0.4" 1418 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1419 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1420 | dependencies: 1421 | isobject "^3.0.1" 1422 | 1423 | is-stream@^1.1.0: 1424 | version "1.1.0" 1425 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1426 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1427 | 1428 | is-windows@^1.0.2: 1429 | version "1.0.2" 1430 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1431 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 1432 | 1433 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1434 | version "1.0.0" 1435 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1436 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1437 | 1438 | isexe@^2.0.0: 1439 | version "2.0.0" 1440 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1441 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1442 | 1443 | isobject@^2.0.0: 1444 | version "2.1.0" 1445 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1446 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1447 | dependencies: 1448 | isarray "1.0.0" 1449 | 1450 | isobject@^3.0.0, isobject@^3.0.1: 1451 | version "3.0.1" 1452 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1453 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 1454 | 1455 | js-tokens@^3.0.2: 1456 | version "3.0.2" 1457 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1458 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= 1459 | 1460 | js-yaml@^3.7.0: 1461 | version "3.12.0" 1462 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" 1463 | integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== 1464 | dependencies: 1465 | argparse "^1.0.7" 1466 | esprima "^4.0.0" 1467 | 1468 | json-parse-better-errors@^1.0.2: 1469 | version "1.0.2" 1470 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1471 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1472 | 1473 | json-schema-traverse@^0.4.1: 1474 | version "0.4.1" 1475 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1476 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1477 | 1478 | json5@^0.5.0: 1479 | version "0.5.1" 1480 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1481 | integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= 1482 | 1483 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1484 | version "3.2.2" 1485 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1486 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1487 | dependencies: 1488 | is-buffer "^1.1.5" 1489 | 1490 | kind-of@^4.0.0: 1491 | version "4.0.0" 1492 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1493 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1494 | dependencies: 1495 | is-buffer "^1.1.5" 1496 | 1497 | kind-of@^5.0.0: 1498 | version "5.1.0" 1499 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1500 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 1501 | 1502 | kind-of@^6.0.0, kind-of@^6.0.2: 1503 | version "6.0.2" 1504 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1505 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== 1506 | 1507 | lcid@^2.0.0: 1508 | version "2.0.0" 1509 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" 1510 | integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== 1511 | dependencies: 1512 | invert-kv "^2.0.0" 1513 | 1514 | loader-runner@^2.3.0: 1515 | version "2.3.1" 1516 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" 1517 | integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw== 1518 | 1519 | loader-utils@^1.0.2, loader-utils@^1.1.0: 1520 | version "1.1.0" 1521 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" 1522 | integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= 1523 | dependencies: 1524 | big.js "^3.1.3" 1525 | emojis-list "^2.0.0" 1526 | json5 "^0.5.0" 1527 | 1528 | locate-path@^3.0.0: 1529 | version "3.0.0" 1530 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1531 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1532 | dependencies: 1533 | p-locate "^3.0.0" 1534 | path-exists "^3.0.0" 1535 | 1536 | lodash.debounce@^4.0.8: 1537 | version "4.0.8" 1538 | resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" 1539 | integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= 1540 | 1541 | lru-cache@^4.1.3: 1542 | version "4.1.4" 1543 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.4.tgz#51cc46e8e6d9530771c857e24ccc720ecdbcc031" 1544 | integrity sha512-EPstzZ23znHUVLKj+lcXO1KvZkrlw+ZirdwvOmnAnA/1PB4ggyXJ77LRkCqkff+ShQ+cqoxCxLQOh4cKITO5iA== 1545 | dependencies: 1546 | pseudomap "^1.0.2" 1547 | yallist "^3.0.2" 1548 | 1549 | make-dir@^1.0.0: 1550 | version "1.3.0" 1551 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 1552 | integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== 1553 | dependencies: 1554 | pify "^3.0.0" 1555 | 1556 | map-age-cleaner@^0.1.1: 1557 | version "0.1.3" 1558 | resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" 1559 | integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== 1560 | dependencies: 1561 | p-defer "^1.0.0" 1562 | 1563 | map-cache@^0.2.2: 1564 | version "0.2.2" 1565 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1566 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 1567 | 1568 | map-visit@^1.0.0: 1569 | version "1.0.0" 1570 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1571 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 1572 | dependencies: 1573 | object-visit "^1.0.0" 1574 | 1575 | md5.js@^1.3.4: 1576 | version "1.3.5" 1577 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 1578 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 1579 | dependencies: 1580 | hash-base "^3.0.0" 1581 | inherits "^2.0.1" 1582 | safe-buffer "^5.1.2" 1583 | 1584 | mem@^4.0.0: 1585 | version "4.0.0" 1586 | resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" 1587 | integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== 1588 | dependencies: 1589 | map-age-cleaner "^0.1.1" 1590 | mimic-fn "^1.0.0" 1591 | p-is-promise "^1.1.0" 1592 | 1593 | memory-fs@^0.4.0, memory-fs@~0.4.1: 1594 | version "0.4.1" 1595 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" 1596 | integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= 1597 | dependencies: 1598 | errno "^0.1.3" 1599 | readable-stream "^2.0.1" 1600 | 1601 | micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: 1602 | version "3.1.10" 1603 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 1604 | integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 1605 | dependencies: 1606 | arr-diff "^4.0.0" 1607 | array-unique "^0.3.2" 1608 | braces "^2.3.1" 1609 | define-property "^2.0.2" 1610 | extend-shallow "^3.0.2" 1611 | extglob "^2.0.4" 1612 | fragment-cache "^0.2.1" 1613 | kind-of "^6.0.2" 1614 | nanomatch "^1.2.9" 1615 | object.pick "^1.3.0" 1616 | regex-not "^1.0.0" 1617 | snapdragon "^0.8.1" 1618 | to-regex "^3.0.2" 1619 | 1620 | miller-rabin@^4.0.0: 1621 | version "4.0.1" 1622 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 1623 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 1624 | dependencies: 1625 | bn.js "^4.0.0" 1626 | brorand "^1.0.1" 1627 | 1628 | mimic-fn@^1.0.0: 1629 | version "1.2.0" 1630 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 1631 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 1632 | 1633 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 1634 | version "1.0.1" 1635 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 1636 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 1637 | 1638 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 1639 | version "1.0.1" 1640 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 1641 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 1642 | 1643 | minimatch@^3.0.4: 1644 | version "3.0.4" 1645 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1646 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1647 | dependencies: 1648 | brace-expansion "^1.1.7" 1649 | 1650 | minimist@0.0.8: 1651 | version "0.0.8" 1652 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1653 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1654 | 1655 | minimist@^1.2.0: 1656 | version "1.2.0" 1657 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1658 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1659 | 1660 | minipass@^2.2.1, minipass@^2.3.4: 1661 | version "2.3.5" 1662 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" 1663 | integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== 1664 | dependencies: 1665 | safe-buffer "^5.1.2" 1666 | yallist "^3.0.0" 1667 | 1668 | minizlib@^1.1.1: 1669 | version "1.1.1" 1670 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" 1671 | integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg== 1672 | dependencies: 1673 | minipass "^2.2.1" 1674 | 1675 | mississippi@^3.0.0: 1676 | version "3.0.0" 1677 | resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" 1678 | integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== 1679 | dependencies: 1680 | concat-stream "^1.5.0" 1681 | duplexify "^3.4.2" 1682 | end-of-stream "^1.1.0" 1683 | flush-write-stream "^1.0.0" 1684 | from2 "^2.1.0" 1685 | parallel-transform "^1.1.0" 1686 | pump "^3.0.0" 1687 | pumpify "^1.3.3" 1688 | stream-each "^1.1.0" 1689 | through2 "^2.0.0" 1690 | 1691 | mixin-deep@^1.2.0: 1692 | version "1.3.1" 1693 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 1694 | integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== 1695 | dependencies: 1696 | for-in "^1.0.2" 1697 | is-extendable "^1.0.1" 1698 | 1699 | mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: 1700 | version "0.5.1" 1701 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1702 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1703 | dependencies: 1704 | minimist "0.0.8" 1705 | 1706 | move-concurrently@^1.0.1: 1707 | version "1.0.1" 1708 | resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" 1709 | integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= 1710 | dependencies: 1711 | aproba "^1.1.1" 1712 | copy-concurrently "^1.0.0" 1713 | fs-write-stream-atomic "^1.0.8" 1714 | mkdirp "^0.5.1" 1715 | rimraf "^2.5.4" 1716 | run-queue "^1.0.3" 1717 | 1718 | ms@2.0.0: 1719 | version "2.0.0" 1720 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1721 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1722 | 1723 | nan@^2.9.2: 1724 | version "2.11.1" 1725 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" 1726 | integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== 1727 | 1728 | nanomatch@^1.2.9: 1729 | version "1.2.13" 1730 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 1731 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 1732 | dependencies: 1733 | arr-diff "^4.0.0" 1734 | array-unique "^0.3.2" 1735 | define-property "^2.0.2" 1736 | extend-shallow "^3.0.2" 1737 | fragment-cache "^0.2.1" 1738 | is-windows "^1.0.2" 1739 | kind-of "^6.0.2" 1740 | object.pick "^1.3.0" 1741 | regex-not "^1.0.0" 1742 | snapdragon "^0.8.1" 1743 | to-regex "^3.0.1" 1744 | 1745 | needle@^2.2.1: 1746 | version "2.2.4" 1747 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" 1748 | integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== 1749 | dependencies: 1750 | debug "^2.1.2" 1751 | iconv-lite "^0.4.4" 1752 | sax "^1.2.4" 1753 | 1754 | neo-async@^2.5.0: 1755 | version "2.6.0" 1756 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" 1757 | integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== 1758 | 1759 | nice-try@^1.0.4: 1760 | version "1.0.5" 1761 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1762 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1763 | 1764 | node-libs-browser@^2.0.0: 1765 | version "2.1.0" 1766 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" 1767 | integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== 1768 | dependencies: 1769 | assert "^1.1.1" 1770 | browserify-zlib "^0.2.0" 1771 | buffer "^4.3.0" 1772 | console-browserify "^1.1.0" 1773 | constants-browserify "^1.0.0" 1774 | crypto-browserify "^3.11.0" 1775 | domain-browser "^1.1.1" 1776 | events "^1.0.0" 1777 | https-browserify "^1.0.0" 1778 | os-browserify "^0.3.0" 1779 | path-browserify "0.0.0" 1780 | process "^0.11.10" 1781 | punycode "^1.2.4" 1782 | querystring-es3 "^0.2.0" 1783 | readable-stream "^2.3.3" 1784 | stream-browserify "^2.0.1" 1785 | stream-http "^2.7.2" 1786 | string_decoder "^1.0.0" 1787 | timers-browserify "^2.0.4" 1788 | tty-browserify "0.0.0" 1789 | url "^0.11.0" 1790 | util "^0.10.3" 1791 | vm-browserify "0.0.4" 1792 | 1793 | node-pre-gyp@^0.10.0: 1794 | version "0.10.3" 1795 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" 1796 | integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== 1797 | dependencies: 1798 | detect-libc "^1.0.2" 1799 | mkdirp "^0.5.1" 1800 | needle "^2.2.1" 1801 | nopt "^4.0.1" 1802 | npm-packlist "^1.1.6" 1803 | npmlog "^4.0.2" 1804 | rc "^1.2.7" 1805 | rimraf "^2.6.1" 1806 | semver "^5.3.0" 1807 | tar "^4" 1808 | 1809 | nopt@^4.0.1: 1810 | version "4.0.1" 1811 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1812 | integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= 1813 | dependencies: 1814 | abbrev "1" 1815 | osenv "^0.1.4" 1816 | 1817 | normalize-path@^2.1.1: 1818 | version "2.1.1" 1819 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1820 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 1821 | dependencies: 1822 | remove-trailing-separator "^1.0.1" 1823 | 1824 | npm-bundled@^1.0.1: 1825 | version "1.0.5" 1826 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" 1827 | integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== 1828 | 1829 | npm-packlist@^1.1.6: 1830 | version "1.1.12" 1831 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" 1832 | integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== 1833 | dependencies: 1834 | ignore-walk "^3.0.1" 1835 | npm-bundled "^1.0.1" 1836 | 1837 | npm-run-path@^2.0.0: 1838 | version "2.0.2" 1839 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1840 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 1841 | dependencies: 1842 | path-key "^2.0.0" 1843 | 1844 | npmlog@^4.0.2: 1845 | version "4.1.2" 1846 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1847 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 1848 | dependencies: 1849 | are-we-there-yet "~1.1.2" 1850 | console-control-strings "~1.1.0" 1851 | gauge "~2.7.3" 1852 | set-blocking "~2.0.0" 1853 | 1854 | number-is-nan@^1.0.0: 1855 | version "1.0.1" 1856 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1857 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1858 | 1859 | object-assign@^4.1.0: 1860 | version "4.1.1" 1861 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1862 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1863 | 1864 | object-copy@^0.1.0: 1865 | version "0.1.0" 1866 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 1867 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 1868 | dependencies: 1869 | copy-descriptor "^0.1.0" 1870 | define-property "^0.2.5" 1871 | kind-of "^3.0.3" 1872 | 1873 | object-visit@^1.0.0: 1874 | version "1.0.1" 1875 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 1876 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 1877 | dependencies: 1878 | isobject "^3.0.0" 1879 | 1880 | object.pick@^1.3.0: 1881 | version "1.3.0" 1882 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 1883 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 1884 | dependencies: 1885 | isobject "^3.0.1" 1886 | 1887 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1888 | version "1.4.0" 1889 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1890 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1891 | dependencies: 1892 | wrappy "1" 1893 | 1894 | os-browserify@^0.3.0: 1895 | version "0.3.0" 1896 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 1897 | integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= 1898 | 1899 | os-homedir@^1.0.0: 1900 | version "1.0.2" 1901 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1902 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1903 | 1904 | os-locale@^3.0.0: 1905 | version "3.0.1" 1906 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" 1907 | integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== 1908 | dependencies: 1909 | execa "^0.10.0" 1910 | lcid "^2.0.0" 1911 | mem "^4.0.0" 1912 | 1913 | os-tmpdir@^1.0.0: 1914 | version "1.0.2" 1915 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1916 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1917 | 1918 | osenv@^0.1.4: 1919 | version "0.1.5" 1920 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1921 | integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== 1922 | dependencies: 1923 | os-homedir "^1.0.0" 1924 | os-tmpdir "^1.0.0" 1925 | 1926 | p-defer@^1.0.0: 1927 | version "1.0.0" 1928 | resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" 1929 | integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= 1930 | 1931 | p-finally@^1.0.0: 1932 | version "1.0.0" 1933 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1934 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 1935 | 1936 | p-is-promise@^1.1.0: 1937 | version "1.1.0" 1938 | resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" 1939 | integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= 1940 | 1941 | p-limit@^2.0.0: 1942 | version "2.0.0" 1943 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" 1944 | integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== 1945 | dependencies: 1946 | p-try "^2.0.0" 1947 | 1948 | p-locate@^3.0.0: 1949 | version "3.0.0" 1950 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1951 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1952 | dependencies: 1953 | p-limit "^2.0.0" 1954 | 1955 | p-try@^2.0.0: 1956 | version "2.0.0" 1957 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" 1958 | integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== 1959 | 1960 | pako@~1.0.5: 1961 | version "1.0.6" 1962 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" 1963 | integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== 1964 | 1965 | parallel-transform@^1.1.0: 1966 | version "1.1.0" 1967 | resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" 1968 | integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= 1969 | dependencies: 1970 | cyclist "~0.2.2" 1971 | inherits "^2.0.3" 1972 | readable-stream "^2.1.5" 1973 | 1974 | parse-asn1@^5.0.0: 1975 | version "5.1.1" 1976 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" 1977 | integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== 1978 | dependencies: 1979 | asn1.js "^4.0.0" 1980 | browserify-aes "^1.0.0" 1981 | create-hash "^1.1.0" 1982 | evp_bytestokey "^1.0.0" 1983 | pbkdf2 "^3.0.3" 1984 | 1985 | pascalcase@^0.1.1: 1986 | version "0.1.1" 1987 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 1988 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 1989 | 1990 | path-browserify@0.0.0: 1991 | version "0.0.0" 1992 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" 1993 | integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= 1994 | 1995 | path-dirname@^1.0.0: 1996 | version "1.0.2" 1997 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" 1998 | integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= 1999 | 2000 | path-exists@^3.0.0: 2001 | version "3.0.0" 2002 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2003 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 2004 | 2005 | path-is-absolute@^1.0.0: 2006 | version "1.0.1" 2007 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2008 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2009 | 2010 | path-key@^2.0.0, path-key@^2.0.1: 2011 | version "2.0.1" 2012 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2013 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 2014 | 2015 | path-parse@^1.0.5: 2016 | version "1.0.6" 2017 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 2018 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 2019 | 2020 | pbkdf2@^3.0.3: 2021 | version "3.0.17" 2022 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" 2023 | integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== 2024 | dependencies: 2025 | create-hash "^1.1.2" 2026 | create-hmac "^1.1.4" 2027 | ripemd160 "^2.0.1" 2028 | safe-buffer "^5.0.1" 2029 | sha.js "^2.4.8" 2030 | 2031 | pify@^3.0.0: 2032 | version "3.0.0" 2033 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 2034 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 2035 | 2036 | pkg-dir@^3.0.0: 2037 | version "3.0.0" 2038 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" 2039 | integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== 2040 | dependencies: 2041 | find-up "^3.0.0" 2042 | 2043 | posix-character-classes@^0.1.0: 2044 | version "0.1.1" 2045 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 2046 | integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 2047 | 2048 | process-nextick-args@~2.0.0: 2049 | version "2.0.0" 2050 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 2051 | integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== 2052 | 2053 | process@^0.11.10: 2054 | version "0.11.10" 2055 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 2056 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= 2057 | 2058 | promise-inflight@^1.0.1: 2059 | version "1.0.1" 2060 | resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" 2061 | integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= 2062 | 2063 | prr@~1.0.1: 2064 | version "1.0.1" 2065 | resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" 2066 | integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= 2067 | 2068 | pseudomap@^1.0.2: 2069 | version "1.0.2" 2070 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2071 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 2072 | 2073 | public-encrypt@^4.0.0: 2074 | version "4.0.3" 2075 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" 2076 | integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== 2077 | dependencies: 2078 | bn.js "^4.1.0" 2079 | browserify-rsa "^4.0.0" 2080 | create-hash "^1.1.0" 2081 | parse-asn1 "^5.0.0" 2082 | randombytes "^2.0.1" 2083 | safe-buffer "^5.1.2" 2084 | 2085 | pump@^2.0.0: 2086 | version "2.0.1" 2087 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 2088 | integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== 2089 | dependencies: 2090 | end-of-stream "^1.1.0" 2091 | once "^1.3.1" 2092 | 2093 | pump@^3.0.0: 2094 | version "3.0.0" 2095 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 2096 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 2097 | dependencies: 2098 | end-of-stream "^1.1.0" 2099 | once "^1.3.1" 2100 | 2101 | pumpify@^1.3.3: 2102 | version "1.5.1" 2103 | resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" 2104 | integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== 2105 | dependencies: 2106 | duplexify "^3.6.0" 2107 | inherits "^2.0.3" 2108 | pump "^2.0.0" 2109 | 2110 | punycode@1.3.2: 2111 | version "1.3.2" 2112 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 2113 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 2114 | 2115 | punycode@^1.2.4: 2116 | version "1.4.1" 2117 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2118 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 2119 | 2120 | punycode@^2.1.0: 2121 | version "2.1.1" 2122 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2123 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2124 | 2125 | querystring-es3@^0.2.0: 2126 | version "0.2.1" 2127 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 2128 | integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= 2129 | 2130 | querystring@0.2.0: 2131 | version "0.2.0" 2132 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 2133 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 2134 | 2135 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 2136 | version "2.0.6" 2137 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" 2138 | integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== 2139 | dependencies: 2140 | safe-buffer "^5.1.0" 2141 | 2142 | randomfill@^1.0.3: 2143 | version "1.0.4" 2144 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" 2145 | integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== 2146 | dependencies: 2147 | randombytes "^2.0.5" 2148 | safe-buffer "^5.1.0" 2149 | 2150 | rc@^1.2.7: 2151 | version "1.2.8" 2152 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2153 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 2154 | dependencies: 2155 | deep-extend "^0.6.0" 2156 | ini "~1.3.0" 2157 | minimist "^1.2.0" 2158 | strip-json-comments "~2.0.1" 2159 | 2160 | "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: 2161 | version "2.3.6" 2162 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 2163 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 2164 | dependencies: 2165 | core-util-is "~1.0.0" 2166 | inherits "~2.0.3" 2167 | isarray "~1.0.0" 2168 | process-nextick-args "~2.0.0" 2169 | safe-buffer "~5.1.1" 2170 | string_decoder "~1.1.1" 2171 | util-deprecate "~1.0.1" 2172 | 2173 | readdirp@^2.0.0: 2174 | version "2.2.1" 2175 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" 2176 | integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== 2177 | dependencies: 2178 | graceful-fs "^4.1.11" 2179 | micromatch "^3.1.10" 2180 | readable-stream "^2.0.2" 2181 | 2182 | regex-not@^1.0.0, regex-not@^1.0.2: 2183 | version "1.0.2" 2184 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 2185 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 2186 | dependencies: 2187 | extend-shallow "^3.0.2" 2188 | safe-regex "^1.1.0" 2189 | 2190 | remove-trailing-separator@^1.0.1: 2191 | version "1.1.0" 2192 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2193 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 2194 | 2195 | repeat-element@^1.1.2: 2196 | version "1.1.3" 2197 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 2198 | integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== 2199 | 2200 | repeat-string@^1.6.1: 2201 | version "1.6.1" 2202 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2203 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 2204 | 2205 | require-directory@^2.1.1: 2206 | version "2.1.1" 2207 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2208 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 2209 | 2210 | require-main-filename@^1.0.1: 2211 | version "1.0.1" 2212 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 2213 | integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= 2214 | 2215 | resolve-cwd@^2.0.0: 2216 | version "2.0.0" 2217 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" 2218 | integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= 2219 | dependencies: 2220 | resolve-from "^3.0.0" 2221 | 2222 | resolve-from@^3.0.0: 2223 | version "3.0.0" 2224 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" 2225 | integrity sha1-six699nWiBvItuZTM17rywoYh0g= 2226 | 2227 | resolve-url@^0.2.1: 2228 | version "0.2.1" 2229 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 2230 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 2231 | 2232 | resolve@^1.3.2: 2233 | version "1.8.1" 2234 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" 2235 | integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== 2236 | dependencies: 2237 | path-parse "^1.0.5" 2238 | 2239 | ret@~0.1.10: 2240 | version "0.1.15" 2241 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 2242 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 2243 | 2244 | rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: 2245 | version "2.6.2" 2246 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 2247 | integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== 2248 | dependencies: 2249 | glob "^7.0.5" 2250 | 2251 | ripemd160@^2.0.0, ripemd160@^2.0.1: 2252 | version "2.0.2" 2253 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 2254 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 2255 | dependencies: 2256 | hash-base "^3.0.0" 2257 | inherits "^2.0.1" 2258 | 2259 | run-queue@^1.0.0, run-queue@^1.0.3: 2260 | version "1.0.3" 2261 | resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" 2262 | integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= 2263 | dependencies: 2264 | aproba "^1.1.1" 2265 | 2266 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2267 | version "5.1.2" 2268 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2269 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2270 | 2271 | safe-regex@^1.1.0: 2272 | version "1.1.0" 2273 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 2274 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 2275 | dependencies: 2276 | ret "~0.1.10" 2277 | 2278 | "safer-buffer@>= 2.1.2 < 3": 2279 | version "2.1.2" 2280 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2281 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2282 | 2283 | sax@^1.2.4: 2284 | version "1.2.4" 2285 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 2286 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 2287 | 2288 | schema-utils@^0.4.4: 2289 | version "0.4.7" 2290 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" 2291 | integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== 2292 | dependencies: 2293 | ajv "^6.1.0" 2294 | ajv-keywords "^3.1.0" 2295 | 2296 | schema-utils@^1.0.0: 2297 | version "1.0.0" 2298 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" 2299 | integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== 2300 | dependencies: 2301 | ajv "^6.1.0" 2302 | ajv-errors "^1.0.0" 2303 | ajv-keywords "^3.1.0" 2304 | 2305 | semver@^5.0.1, semver@^5.3.0, semver@^5.5.0: 2306 | version "5.6.0" 2307 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 2308 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 2309 | 2310 | serialize-javascript@^1.4.0: 2311 | version "1.5.0" 2312 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" 2313 | integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== 2314 | 2315 | set-blocking@^2.0.0, set-blocking@~2.0.0: 2316 | version "2.0.0" 2317 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2318 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2319 | 2320 | set-value@^0.4.3: 2321 | version "0.4.3" 2322 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 2323 | integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= 2324 | dependencies: 2325 | extend-shallow "^2.0.1" 2326 | is-extendable "^0.1.1" 2327 | is-plain-object "^2.0.1" 2328 | to-object-path "^0.3.0" 2329 | 2330 | set-value@^2.0.0: 2331 | version "2.0.0" 2332 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 2333 | integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== 2334 | dependencies: 2335 | extend-shallow "^2.0.1" 2336 | is-extendable "^0.1.1" 2337 | is-plain-object "^2.0.3" 2338 | split-string "^3.0.1" 2339 | 2340 | setimmediate@^1.0.4: 2341 | version "1.0.5" 2342 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 2343 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 2344 | 2345 | sha.js@^2.4.0, sha.js@^2.4.8: 2346 | version "2.4.11" 2347 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 2348 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 2349 | dependencies: 2350 | inherits "^2.0.1" 2351 | safe-buffer "^5.0.1" 2352 | 2353 | shebang-command@^1.2.0: 2354 | version "1.2.0" 2355 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2356 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2357 | dependencies: 2358 | shebang-regex "^1.0.0" 2359 | 2360 | shebang-regex@^1.0.0: 2361 | version "1.0.0" 2362 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2363 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2364 | 2365 | signal-exit@^3.0.0: 2366 | version "3.0.2" 2367 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2368 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2369 | 2370 | snapdragon-node@^2.0.1: 2371 | version "2.1.1" 2372 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 2373 | integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 2374 | dependencies: 2375 | define-property "^1.0.0" 2376 | isobject "^3.0.0" 2377 | snapdragon-util "^3.0.1" 2378 | 2379 | snapdragon-util@^3.0.1: 2380 | version "3.0.1" 2381 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 2382 | integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 2383 | dependencies: 2384 | kind-of "^3.2.0" 2385 | 2386 | snapdragon@^0.8.1: 2387 | version "0.8.2" 2388 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 2389 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 2390 | dependencies: 2391 | base "^0.11.1" 2392 | debug "^2.2.0" 2393 | define-property "^0.2.5" 2394 | extend-shallow "^2.0.1" 2395 | map-cache "^0.2.2" 2396 | source-map "^0.5.6" 2397 | source-map-resolve "^0.5.0" 2398 | use "^3.1.0" 2399 | 2400 | source-list-map@^2.0.0: 2401 | version "2.0.1" 2402 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" 2403 | integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== 2404 | 2405 | source-map-resolve@^0.5.0: 2406 | version "0.5.2" 2407 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 2408 | integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== 2409 | dependencies: 2410 | atob "^2.1.1" 2411 | decode-uri-component "^0.2.0" 2412 | resolve-url "^0.2.1" 2413 | source-map-url "^0.4.0" 2414 | urix "^0.1.0" 2415 | 2416 | source-map-support@~0.5.6: 2417 | version "0.5.9" 2418 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" 2419 | integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== 2420 | dependencies: 2421 | buffer-from "^1.0.0" 2422 | source-map "^0.6.0" 2423 | 2424 | source-map-url@^0.4.0: 2425 | version "0.4.0" 2426 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 2427 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 2428 | 2429 | source-map@^0.5.6: 2430 | version "0.5.7" 2431 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2432 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2433 | 2434 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: 2435 | version "0.6.1" 2436 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2437 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2438 | 2439 | split-string@^3.0.1, split-string@^3.0.2: 2440 | version "3.1.0" 2441 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 2442 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 2443 | dependencies: 2444 | extend-shallow "^3.0.0" 2445 | 2446 | sprintf-js@~1.0.2: 2447 | version "1.0.3" 2448 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2449 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2450 | 2451 | ssri@^6.0.0: 2452 | version "6.0.1" 2453 | resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" 2454 | integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== 2455 | dependencies: 2456 | figgy-pudding "^3.5.1" 2457 | 2458 | static-extend@^0.1.1: 2459 | version "0.1.2" 2460 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 2461 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 2462 | dependencies: 2463 | define-property "^0.2.5" 2464 | object-copy "^0.1.0" 2465 | 2466 | stream-browserify@^2.0.1: 2467 | version "2.0.1" 2468 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 2469 | integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= 2470 | dependencies: 2471 | inherits "~2.0.1" 2472 | readable-stream "^2.0.2" 2473 | 2474 | stream-each@^1.1.0: 2475 | version "1.2.3" 2476 | resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" 2477 | integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== 2478 | dependencies: 2479 | end-of-stream "^1.1.0" 2480 | stream-shift "^1.0.0" 2481 | 2482 | stream-http@^2.7.2: 2483 | version "2.8.3" 2484 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" 2485 | integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== 2486 | dependencies: 2487 | builtin-status-codes "^3.0.0" 2488 | inherits "^2.0.1" 2489 | readable-stream "^2.3.6" 2490 | to-arraybuffer "^1.0.0" 2491 | xtend "^4.0.0" 2492 | 2493 | stream-shift@^1.0.0: 2494 | version "1.0.0" 2495 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" 2496 | integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= 2497 | 2498 | string-width@^1.0.1: 2499 | version "1.0.2" 2500 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2501 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 2502 | dependencies: 2503 | code-point-at "^1.0.0" 2504 | is-fullwidth-code-point "^1.0.0" 2505 | strip-ansi "^3.0.0" 2506 | 2507 | "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: 2508 | version "2.1.1" 2509 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2510 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2511 | dependencies: 2512 | is-fullwidth-code-point "^2.0.0" 2513 | strip-ansi "^4.0.0" 2514 | 2515 | string_decoder@^1.0.0, string_decoder@~1.1.1: 2516 | version "1.1.1" 2517 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2518 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2519 | dependencies: 2520 | safe-buffer "~5.1.0" 2521 | 2522 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2523 | version "3.0.1" 2524 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2525 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2526 | dependencies: 2527 | ansi-regex "^2.0.0" 2528 | 2529 | strip-ansi@^4.0.0: 2530 | version "4.0.0" 2531 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2532 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2533 | dependencies: 2534 | ansi-regex "^3.0.0" 2535 | 2536 | strip-eof@^1.0.0: 2537 | version "1.0.0" 2538 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2539 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 2540 | 2541 | strip-json-comments@~2.0.1: 2542 | version "2.0.1" 2543 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2544 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2545 | 2546 | supports-color@^2.0.0: 2547 | version "2.0.0" 2548 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2549 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 2550 | 2551 | supports-color@^5.3.0, supports-color@^5.5.0: 2552 | version "5.5.0" 2553 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2554 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2555 | dependencies: 2556 | has-flag "^3.0.0" 2557 | 2558 | tapable@^1.0.0, tapable@^1.1.0: 2559 | version "1.1.0" 2560 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" 2561 | integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== 2562 | 2563 | tar@^4: 2564 | version "4.4.8" 2565 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" 2566 | integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== 2567 | dependencies: 2568 | chownr "^1.1.1" 2569 | fs-minipass "^1.2.5" 2570 | minipass "^2.3.4" 2571 | minizlib "^1.1.1" 2572 | mkdirp "^0.5.0" 2573 | safe-buffer "^5.1.2" 2574 | yallist "^3.0.2" 2575 | 2576 | terser-webpack-plugin@^1.1.0: 2577 | version "1.1.0" 2578 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528" 2579 | integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA== 2580 | dependencies: 2581 | cacache "^11.0.2" 2582 | find-cache-dir "^2.0.0" 2583 | schema-utils "^1.0.0" 2584 | serialize-javascript "^1.4.0" 2585 | source-map "^0.6.1" 2586 | terser "^3.8.1" 2587 | webpack-sources "^1.1.0" 2588 | worker-farm "^1.5.2" 2589 | 2590 | terser@^3.8.1: 2591 | version "3.10.12" 2592 | resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.12.tgz#06d40765e40b33fd97977c0896c75b2b5d42142d" 2593 | integrity sha512-3ODPC1eVt25EVNb04s/PkHxOmzKBQUF6bwwuR6h2DbEF8/j265Y1UkwNtOk9am/pRxfJ5HPapOlUlO6c16mKQQ== 2594 | dependencies: 2595 | commander "~2.17.1" 2596 | source-map "~0.6.1" 2597 | source-map-support "~0.5.6" 2598 | 2599 | through2@^2.0.0: 2600 | version "2.0.5" 2601 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" 2602 | integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== 2603 | dependencies: 2604 | readable-stream "~2.3.6" 2605 | xtend "~4.0.1" 2606 | 2607 | timers-browserify@^2.0.4: 2608 | version "2.0.10" 2609 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" 2610 | integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== 2611 | dependencies: 2612 | setimmediate "^1.0.4" 2613 | 2614 | to-arraybuffer@^1.0.0: 2615 | version "1.0.1" 2616 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 2617 | integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= 2618 | 2619 | to-object-path@^0.3.0: 2620 | version "0.3.0" 2621 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 2622 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 2623 | dependencies: 2624 | kind-of "^3.0.2" 2625 | 2626 | to-regex-range@^2.1.0: 2627 | version "2.1.1" 2628 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 2629 | integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 2630 | dependencies: 2631 | is-number "^3.0.0" 2632 | repeat-string "^1.6.1" 2633 | 2634 | to-regex@^3.0.1, to-regex@^3.0.2: 2635 | version "3.0.2" 2636 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 2637 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 2638 | dependencies: 2639 | define-property "^2.0.2" 2640 | extend-shallow "^3.0.2" 2641 | regex-not "^1.0.2" 2642 | safe-regex "^1.1.0" 2643 | 2644 | ts-loader@^5.0.0: 2645 | version "5.3.0" 2646 | resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.3.0.tgz#4bac24e57bc5189391ab14987d9898ce53ef5cf7" 2647 | integrity sha512-lGSNs7szRFj/rK9T1EQuayE3QNLg6izDUxt5jpmq0RG1rU2bapAt7E7uLckLCUPeO1jwxCiet2oRaWovc53UAg== 2648 | dependencies: 2649 | chalk "^2.3.0" 2650 | enhanced-resolve "^4.0.0" 2651 | loader-utils "^1.0.2" 2652 | micromatch "^3.1.4" 2653 | semver "^5.0.1" 2654 | 2655 | tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: 2656 | version "1.9.3" 2657 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 2658 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 2659 | 2660 | tslint@^5.11.0: 2661 | version "5.11.0" 2662 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" 2663 | integrity sha1-mPMMAurjzecAYgHkwzywi0hYHu0= 2664 | dependencies: 2665 | babel-code-frame "^6.22.0" 2666 | builtin-modules "^1.1.1" 2667 | chalk "^2.3.0" 2668 | commander "^2.12.1" 2669 | diff "^3.2.0" 2670 | glob "^7.1.1" 2671 | js-yaml "^3.7.0" 2672 | minimatch "^3.0.4" 2673 | resolve "^1.3.2" 2674 | semver "^5.3.0" 2675 | tslib "^1.8.0" 2676 | tsutils "^2.27.2" 2677 | 2678 | tsutils@^2.27.2: 2679 | version "2.29.0" 2680 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 2681 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 2682 | dependencies: 2683 | tslib "^1.8.1" 2684 | 2685 | tty-browserify@0.0.0: 2686 | version "0.0.0" 2687 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 2688 | integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= 2689 | 2690 | typed-web-workers@^2.1.1: 2691 | version "2.1.1" 2692 | resolved "https://registry.yarnpkg.com/typed-web-workers/-/typed-web-workers-2.1.1.tgz#1a2e5879647809e5f1c072990ff9b29d6f509845" 2693 | integrity sha512-btq2XsP9MD806A85QSdrFfOjTzu1ck6iGxMQsFSNrujVKTgLwfyHq9d5LE0C+FS1mbiqiaaAkkVDNVRxhaHApg== 2694 | 2695 | typedarray@^0.0.6: 2696 | version "0.0.6" 2697 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2698 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 2699 | 2700 | typescript@^3.0.0: 2701 | version "3.1.6" 2702 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" 2703 | integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== 2704 | 2705 | union-value@^1.0.0: 2706 | version "1.0.0" 2707 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 2708 | integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= 2709 | dependencies: 2710 | arr-union "^3.1.0" 2711 | get-value "^2.0.6" 2712 | is-extendable "^0.1.1" 2713 | set-value "^0.4.3" 2714 | 2715 | unique-filename@^1.1.0: 2716 | version "1.1.1" 2717 | resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" 2718 | integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== 2719 | dependencies: 2720 | unique-slug "^2.0.0" 2721 | 2722 | unique-slug@^2.0.0: 2723 | version "2.0.1" 2724 | resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" 2725 | integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== 2726 | dependencies: 2727 | imurmurhash "^0.1.4" 2728 | 2729 | unset-value@^1.0.0: 2730 | version "1.0.0" 2731 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 2732 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 2733 | dependencies: 2734 | has-value "^0.3.1" 2735 | isobject "^3.0.0" 2736 | 2737 | upath@^1.0.5: 2738 | version "1.1.0" 2739 | resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" 2740 | integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== 2741 | 2742 | uri-js@^4.2.2: 2743 | version "4.2.2" 2744 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2745 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 2746 | dependencies: 2747 | punycode "^2.1.0" 2748 | 2749 | urix@^0.1.0: 2750 | version "0.1.0" 2751 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 2752 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 2753 | 2754 | url@^0.11.0: 2755 | version "0.11.0" 2756 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 2757 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= 2758 | dependencies: 2759 | punycode "1.3.2" 2760 | querystring "0.2.0" 2761 | 2762 | use@^3.1.0: 2763 | version "3.1.1" 2764 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 2765 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 2766 | 2767 | util-deprecate@~1.0.1: 2768 | version "1.0.2" 2769 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2770 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2771 | 2772 | util@0.10.3: 2773 | version "0.10.3" 2774 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 2775 | integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= 2776 | dependencies: 2777 | inherits "2.0.1" 2778 | 2779 | util@^0.10.3: 2780 | version "0.10.4" 2781 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" 2782 | integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== 2783 | dependencies: 2784 | inherits "2.0.3" 2785 | 2786 | v8-compile-cache@^2.0.2: 2787 | version "2.0.2" 2788 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" 2789 | integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== 2790 | 2791 | vm-browserify@0.0.4: 2792 | version "0.0.4" 2793 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" 2794 | integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= 2795 | dependencies: 2796 | indexof "0.0.1" 2797 | 2798 | watchpack@^1.5.0: 2799 | version "1.6.0" 2800 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" 2801 | integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== 2802 | dependencies: 2803 | chokidar "^2.0.2" 2804 | graceful-fs "^4.1.2" 2805 | neo-async "^2.5.0" 2806 | 2807 | webpack-cli@^3.1.2: 2808 | version "3.1.2" 2809 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.2.tgz#17d7e01b77f89f884a2bbf9db545f0f6a648e746" 2810 | integrity sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ== 2811 | dependencies: 2812 | chalk "^2.4.1" 2813 | cross-spawn "^6.0.5" 2814 | enhanced-resolve "^4.1.0" 2815 | global-modules-path "^2.3.0" 2816 | import-local "^2.0.0" 2817 | interpret "^1.1.0" 2818 | loader-utils "^1.1.0" 2819 | supports-color "^5.5.0" 2820 | v8-compile-cache "^2.0.2" 2821 | yargs "^12.0.2" 2822 | 2823 | webpack-sources@^1.1.0, webpack-sources@^1.3.0: 2824 | version "1.3.0" 2825 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" 2826 | integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== 2827 | dependencies: 2828 | source-list-map "^2.0.0" 2829 | source-map "~0.6.1" 2830 | 2831 | webpack@^4.0.0: 2832 | version "4.26.0" 2833 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.26.0.tgz#adbe80b869148c8d108b7d88965d00d72b3178de" 2834 | integrity sha512-J/dP9SJIc5OtX2FZ/+U9ikQtd6H6Mcbqt0xeXtmPwYGDKf8nkbOQQA9KL2Y0rJOsN1Al9Pdn+/j63X58ub8gvQ== 2835 | dependencies: 2836 | "@webassemblyjs/ast" "1.7.11" 2837 | "@webassemblyjs/helper-module-context" "1.7.11" 2838 | "@webassemblyjs/wasm-edit" "1.7.11" 2839 | "@webassemblyjs/wasm-parser" "1.7.11" 2840 | acorn "^5.6.2" 2841 | acorn-dynamic-import "^3.0.0" 2842 | ajv "^6.1.0" 2843 | ajv-keywords "^3.1.0" 2844 | chrome-trace-event "^1.0.0" 2845 | enhanced-resolve "^4.1.0" 2846 | eslint-scope "^4.0.0" 2847 | json-parse-better-errors "^1.0.2" 2848 | loader-runner "^2.3.0" 2849 | loader-utils "^1.1.0" 2850 | memory-fs "~0.4.1" 2851 | micromatch "^3.1.8" 2852 | mkdirp "~0.5.0" 2853 | neo-async "^2.5.0" 2854 | node-libs-browser "^2.0.0" 2855 | schema-utils "^0.4.4" 2856 | tapable "^1.1.0" 2857 | terser-webpack-plugin "^1.1.0" 2858 | watchpack "^1.5.0" 2859 | webpack-sources "^1.3.0" 2860 | 2861 | which-module@^2.0.0: 2862 | version "2.0.0" 2863 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 2864 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 2865 | 2866 | which@^1.2.9: 2867 | version "1.3.1" 2868 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2869 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2870 | dependencies: 2871 | isexe "^2.0.0" 2872 | 2873 | wide-align@^1.1.0: 2874 | version "1.1.3" 2875 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2876 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 2877 | dependencies: 2878 | string-width "^1.0.2 || 2" 2879 | 2880 | worker-farm@^1.5.2: 2881 | version "1.6.0" 2882 | resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" 2883 | integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== 2884 | dependencies: 2885 | errno "~0.1.7" 2886 | 2887 | wrap-ansi@^2.0.0: 2888 | version "2.1.0" 2889 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 2890 | integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= 2891 | dependencies: 2892 | string-width "^1.0.1" 2893 | strip-ansi "^3.0.1" 2894 | 2895 | wrappy@1: 2896 | version "1.0.2" 2897 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2898 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2899 | 2900 | xtend@^4.0.0, xtend@~4.0.1: 2901 | version "4.0.1" 2902 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2903 | integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= 2904 | 2905 | "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: 2906 | version "4.0.0" 2907 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 2908 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 2909 | 2910 | yallist@^3.0.0, yallist@^3.0.2: 2911 | version "3.0.3" 2912 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" 2913 | integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== 2914 | 2915 | yargs-parser@^11.1.1: 2916 | version "11.1.1" 2917 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" 2918 | integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== 2919 | dependencies: 2920 | camelcase "^5.0.0" 2921 | decamelize "^1.2.0" 2922 | 2923 | yargs@^12.0.2: 2924 | version "12.0.5" 2925 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" 2926 | integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== 2927 | dependencies: 2928 | cliui "^4.0.0" 2929 | decamelize "^1.2.0" 2930 | find-up "^3.0.0" 2931 | get-caller-file "^1.0.1" 2932 | os-locale "^3.0.0" 2933 | require-directory "^2.1.1" 2934 | require-main-filename "^1.0.1" 2935 | set-blocking "^2.0.0" 2936 | string-width "^2.0.0" 2937 | which-module "^2.0.0" 2938 | y18n "^3.2.1 || ^4.0.0" 2939 | yargs-parser "^11.1.1" 2940 | --------------------------------------------------------------------------------