PageSourceSearch

https://erin-doyle-react-global-summit-2020.netlify.app/deck.js

js erin-doyle-react-global-summit-2020.netlify.app collected 2026-10-03 10:42:29 UTC 2,052,632 bytes, 39,465 lines download raw bytes

vendor: 3,609 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
40/******/ 		}
41/******/ 	};
42/******/
43/******/ 	// define __esModule on exports
44/******/ 	__webpack_require__.r = function(exports) {
45/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47/******/ 		}
48/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
49/******/ 	};
50/******/
51/******/ 	// create a fake namespace object
52/******/ 	// mode & 1: value is a module id, require it
53/******/ 	// mode & 2: merge all properties of value into the ns
54/******/ 	// mode & 4: return value when already ns object
55/******/ 	// mode & 8|1: behave like require
56/******/ 	__webpack_require__.t = function(value, mode) {
57/******/ 		if(mode & 1) value = __webpack_require__(value);
58/******/ 		if(mode & 8) return value;
59/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60/******/ 		var ns = Object.create(null);
61/******/ 		__webpack_require__.r(ns);
62/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64/******/ 		return ns;
65/******/ 	};
66/******/
67/******/ 	// getDefaultExport function for compatibility with non-harmony modules
68/******/ 	__webpack_require__.n = function(module) {
69/******/ 		var getter = module && module.__esModule ?
70/******/ 			function getDefault() { return module['default']; } :
71/******/ 			function getModuleExports() { return module; };
72/******/ 		__webpack_require__.d(getter, 'a', getter);
73/******/ 		return getter;
74/******/ 	};
75/******/
76/******/ 	// Object.prototype.hasOwnProperty.call
77/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78/******/
79/******/ 	// __webpack_public_path__
80/******/ 	__webpack_require__.p = "";
81/******/
82/******/
83/******/ 	// Load entry module and return exports
84/******/ 	return __webpack_require__(__webpack_require__.s = "./src/index.js");
85/******/ })
86/************************************************************************/
87/******/ ({
88
89/***/ "./assets/GitHub_Action_Results.png":
90/*!******************************************!*\
91  !*** ./assets/GitHub_Action_Results.png ***!
92  \******************************************/
93/*! exports provided: default */
94/***/ (function(module, __webpack_exports__, __webpack_require__) {
95
96"use strict";
97__webpack_require__.r(__webpack_exports__);
98/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "304c9d3583ef209df42e2461c696d88e.png");
99
100/***/ }),
101
102/***/ "./assets/GitHub_Action_Results_lint.png":
103/*!***********************************************!*\
104  !*** ./assets/GitHub_Action_Results_lint.png ***!
105  \***********************************************/
106/*! exports provided: default */
107/***/ (function(module, __webpack_exports__, __webpack_require__) {
108
109"use strict";
110__webpack_require__.r(__webpack_exports__);
111/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "350109e0f7b93c218679bf1e0c0ee9aa.png");
112
113/***/ }),
114
115/***/ "./assets/IDE_screenshot.png":
116/*!***********************************!*\
117  !*** ./assets/IDE_screenshot.png ***!
118  \***********************************/
119/*! exports provided: default */
120/***/ (function(module, __webpack_exports__, __webpack_require__) {
121
122"use strict";
123__webpack_require__.r(__webpack_exports__);
124/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "5914f288720d7122e4eb70076cda31bb.png");
125
126/***/ }),
127
128/***/ "./assets/Jenkins-logo.png":
129/*!*********************************!*\
130  !*** ./assets/Jenkins-logo.png ***!
131  \*********************************/
132/*! exports provided: default */
133/***/ (function(module, __webpack_exports__, __webpack_require__) {
134
135"use strict";
136__webpack_require__.r(__webpack_exports__);
137/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "b54e1fc08496ee4414616e5da116ccdd.png");
138
139/***/ }),
140
141/***/ "./assets/Jenkins_Lighthouse_Plugin.png":
142/*!**********************************************!*\
143  !*** ./assets/Jenkins_Lighthouse_Plugin.png ***!
144  \**********************************************/
145/*! exports provided: default */
146/***/ (function(module, __webpack_exports__, __webpack_require__) {
147
148"use strict";
149__webpack_require__.r(__webpack_exports__);
150/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8d87276400e2dacbe0bdfeefc12d86fc.png");
151
152/***/ }),
153
154/***/ "./assets/Lighthouse_GitHub_App_Install.png":
155/*!**************************************************!*\
156  !*** ./assets/Lighthouse_GitHub_App_Install.png ***!
157  \**************************************************/
158/*! exports provided: default */
159/***/ (function(module, __webpack_exports__, __webpack_require__) {
160
161"use strict";
162__webpack_require__.r(__webpack_exports__);
163/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "112cf4f9c5ded43dc30cda62ae1c72c3.png");
164
165/***/ }),
166
167/***/ "./assets/Lighthouse_Report.png":
168/*!**************************************!*\
169  !*** ./assets/Lighthouse_Report.png ***!
170  \**************************************/
171/*! exports provided: default */
172/***/ (function(module, __webpack_exports__, __webpack_require__) {
173
174"use strict";
175__webpack_require__.r(__webpack_exports__);
176/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "098302ea49d5761544dc788143e70811.png");
177
178/***/ }),
179
180/***/ "./assets/Lighthouse_Status_Check.png":
181/*!********************************************!*\
182  !*** ./assets/Lighthouse_Status_Check.png ***!
183  \********************************************/
184/*! exports provided: default */
185/***/ (function(module, __webpack_exports__, __webpack_require__) {
186
187"use strict";
188__webpack_require__.r(__webpack_exports__);
189/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "0914ac39aab55858c22caab69213b1fa.png");
190
191/***/ }),
192
193/***/ "./assets/Twitter_Logo_Blue.svg":
194/*!**************************************!*\
195  !*** ./assets/Twitter_Logo_Blue.svg ***!
196  \**************************************/
197/*! exports provided: default */
198/***/ (function(module, __webpack_exports__, __webpack_require__) {
199
200"use strict";
201__webpack_require__.r(__webpack_exports__);
202/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "a7a925c7c07f163f3274df0c1ab2c321.svg");
203
204/***/ }),
205
206/***/ "./assets/aXe_documentation_1.png":
207/*!****************************************!*\
208  !*** ./assets/aXe_documentation_1.png ***!
209  \****************************************/
210/*! exports provided: default */
211/***/ (function(module, __webpack_exports__, __webpack_require__) {
212
213"use strict";
214__webpack_require__.r(__webpack_exports__);
215/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "029d3521be5b156046c7a7a4df54d4bf.png");
216
217/***/ }),
218
219/***/ "./assets/aXe_documentation_2.png":
220/*!****************************************!*\
221  !*** ./assets/aXe_documentation_2.png ***!
222  \****************************************/
223/*! exports provided: default */
224/***/ (function(module, __webpack_exports__, __webpack_require__) {
225
226"use strict";
227__webpack_require__.r(__webpack_exports__);
228/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4909de9edb855dea90057b635e332c46.png");
229
230/***/ }),
231
232/***/ "./assets/aXe_documentation_3.png":
233/*!****************************************!*\
234  !*** ./assets/aXe_documentation_3.png ***!
235  \****************************************/
236/*! exports provided: default */
237/***/ (function(module, __webpack_exports__, __webpack_require__) {
238
239"use strict";
240__webpack_require__.r(__webpack_exports__);
241/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "72ccfccf1733890f6a3e7a9dcaf77164.png");
242
243/***/ }),
244
245/***/ "./assets/blue_hair_headshot.jpg":
246/*!***************************************!*\
247  !*** ./assets/blue_hair_headshot.jpg ***!
248  \***************************************/
249/*! exports provided: default */
250/***/ (function(module, __webpack_exports__, __webpack_require__) {
251
252"use strict";
253__webpack_require__.r(__webpack_exports__);
254/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "74acc99dcb784e85f28e63247f0ca426.jpg");
255
256/***/ }),
257
258/***/ "./assets/broken_arm.jpg":
259/*!*******************************!*\
260  !*** ./assets/broken_arm.jpg ***!
261  \*******************************/
262/*! exports provided: default */
263/***/ (function(module, __webpack_exports__, __webpack_require__) {
264
265"use strict";
266__webpack_require__.r(__webpack_exports__);
267/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "a8161c62bb573f1a2ecd3c34ad1c190a.jpg");
268
269/***/ }),
270
271/***/ "./assets/can_telephone.jpg":
272/*!**********************************!*\
273  !*** ./assets/can_telephone.jpg ***!
274  \**********************************/
275/*! exports provided: default */
276/***/ (function(module, __webpack_exports__, __webpack_require__) {
277
278"use strict";
279__webpack_require__.r(__webpack_exports__);
280/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "63fe3032ef52ae4a9ff5b51503e3f550.jpg");
281
282/***/ }),
283
284/***/ "./assets/circle-logo-horizontal-white.png":
285/*!*************************************************!*\
286  !*** ./assets/circle-logo-horizontal-white.png ***!
287  \*************************************************/
288/*! exports provided: default */
289/***/ (function(module, __webpack_exports__, __webpack_require__) {
290
291"use strict";
292__webpack_require__.r(__webpack_exports__);
293/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "fd48c4065198e6c99542ae6918352843.png");
294
295/***/ }),
296
297/***/ "./assets/computer_vision.jpg":
298/*!************************************!*\
299  !*** ./assets/computer_vision.jpg ***!
300  \************************************/
301/*! exports provided: default */
302/***/ (function(module, __webpack_exports__, __webpack_require__) {
303
304"use strict";
305__webpack_require__.r(__webpack_exports__);
306/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8d4a6ae0e9edae9afc7b714ca093d571.jpg");
307
308/***/ }),
309
310/***/ "./assets/cypress-logo.png":
311/*!*********************************!*\
312  !*** ./assets/cypress-logo.png ***!
313  \*********************************/
314/*! exports provided: default */
315/***/ (function(module, __webpack_exports__, __webpack_require__) {
316
317"use strict";
318__webpack_require__.r(__webpack_exports__);
319/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "ab790903dfa344b56e4f5a03b25519a0.png");
320
321/***/ }),
322
323/***/ "./assets/cypress_app.png":
324/*!********************************!*\
325  !*** ./assets/cypress_app.png ***!
326  \********************************/
327/*! exports provided: default */
328/***/ (function(module, __webpack_exports__, __webpack_require__) {
329
330"use strict";
331__webpack_require__.r(__webpack_exports__);
332/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "6381e0775f49919f628edc9e8f3aeb7a.png");
333
334/***/ }),
335
336/***/ "./assets/cypress_app_run_test.png":
337/*!*****************************************!*\
338  !*** ./assets/cypress_app_run_test.png ***!
339  \*****************************************/
340/*! exports provided: default */
341/***/ (function(module, __webpack_exports__, __webpack_require__) {
342
343"use strict";
344__webpack_require__.r(__webpack_exports__);
345/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "ad808646ada78942cb82caa05ea28bc4.png");
346
347/***/ }),
348
349/***/ "./assets/cypress_results_in_console.png":
350/*!***********************************************!*\
351  !*** ./assets/cypress_results_in_console.png ***!
352  \***********************************************/
353/*! exports provided: default */
354/***/ (function(module, __webpack_exports__, __webpack_require__) {
355
356"use strict";
357__webpack_require__.r(__webpack_exports__);
358/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "edb06969089e2d3f436922a0530355bf.png");
359
360/***/ }),
361
362/***/ "./assets/cypress_run_results.png":
363/*!****************************************!*\
364  !*** ./assets/cypress_run_results.png ***!
365  \****************************************/
366/*! exports provided: default */
367/***/ (function(module, __webpack_exports__, __webpack_require__) {
368
369"use strict";
370__webpack_require__.r(__webpack_exports__);
371/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "b05e2b51e1fde29b570be7c6db0cce7a.png");
372
373/***/ }),
374
375/***/ "./assets/cypress_run_results_error.png":
376/*!**********************************************!*\
377  !*** ./assets/cypress_run_results_error.png ***!
378  \**********************************************/
379/*! exports provided: default */
380/***/ (function(module, __webpack_exports__, __webpack_require__) {
381
382"use strict";
383__webpack_require__.r(__webpack_exports__);
384/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "1be5a67d9b736f27ff0f524930c6d1e9.png");
385
386/***/ }),
387
388/***/ "./assets/deque_logo.png":
389/*!*******************************!*\
390  !*** ./assets/deque_logo.png ***!
391  \*******************************/
392/*! exports provided: default */
393/***/ (function(module, __webpack_exports__, __webpack_require__) {
394
395"use strict";
396__webpack_require__.r(__webpack_exports__);
397/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "c2c57418d059d192a459c481f94478e0.png");
398
399/***/ }),
400
401/***/ "./assets/eslint_logo.png":
402/*!********************************!*\
403  !*** ./assets/eslint_logo.png ***!
404  \********************************/
405/*! exports provided: default */
406/***/ (function(module, __webpack_exports__, __webpack_require__) {
407
408"use strict";
409__webpack_require__.r(__webpack_exports__);
410/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "fde298bbc01e44d034e6eac70c59729f.png");
411
412/***/ }),
413
414/***/ "./assets/eslint_terminal.png":
415/*!************************************!*\
416  !*** ./assets/eslint_terminal.png ***!
417  \************************************/
418/*! exports provided: default */
419/***/ (function(module, __webpack_exports__, __webpack_require__) {
420
421"use strict";
422__webpack_require__.r(__webpack_exports__);
423/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "71ab606914e3d690983bffde55d4ae7c.png");
424
425/***/ }),
426
427/***/ "./assets/example-button-args.png":
428/*!****************************************!*\
429  !*** ./assets/example-button-args.png ***!
430  \****************************************/
431/*! exports provided: default */
432/***/ (function(module, __webpack_exports__, __webpack_require__) {
433
434"use strict";
435__webpack_require__.r(__webpack_exports__);
436/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "707b96e9d0a243e4d232005b7a27c379.png");
437
438/***/ }),
439
440/***/ "./assets/ghost_busters_book_stack.jpg":
441/*!*********************************************!*\
442  !*** ./assets/ghost_busters_book_stack.jpg ***!
443  \*********************************************/
444/*! exports provided: default */
445/***/ (function(module, __webpack_exports__, __webpack_require__) {
446
447"use strict";
448__webpack_require__.r(__webpack_exports__);
449/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "3f1e21dca6e31456c5c15909ad734ece.jpg");
450
451/***/ }),
452
453/***/ "./assets/gitHub_Action_Results_unittest.png":
454/*!***************************************************!*\
455  !*** ./assets/gitHub_Action_Results_unittest.png ***!
456  \***************************************************/
457/*! exports provided: default */
458/***/ (function(module, __webpack_exports__, __webpack_require__) {
459
460"use strict";
461__webpack_require__.r(__webpack_exports__);
462/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "e733589ba9cfdc80e81f92e1067aa75f.png");
463
464/***/ }),
465
466/***/ "./assets/github_logo.png":
467/*!********************************!*\
468  !*** ./assets/github_logo.png ***!
469  \********************************/
470/*! exports provided: default */
471/***/ (function(module, __webpack_exports__, __webpack_require__) {
472
473"use strict";
474__webpack_require__.r(__webpack_exports__);
475/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "c92b2e8ccb2aaf52dd3ace0f8fc9e83d.png");
476
477/***/ }),
478
479/***/ "./assets/jest-axe_output.png":
480/*!************************************!*\
481  !*** ./assets/jest-axe_output.png ***!
482  \************************************/
483/*! exports provided: default */
484/***/ (function(module, __webpack_exports__, __webpack_require__) {
485
486"use strict";
487__webpack_require__.r(__webpack_exports__);
488/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "3c0f1f9f134b9b6f17de6b56c832ba4b.png");
489
490/***/ }),
491
492/***/ "./assets/jest_logo.png":
493/*!******************************!*\
494  !*** ./assets/jest_logo.png ***!
495  \******************************/
496/*! exports provided: default */
497/***/ (function(module, __webpack_exports__, __webpack_require__) {
498
499"use strict";
500__webpack_require__.r(__webpack_exports__);
501/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "08b7e749efb6f9fee1ee08cc0dc4aeba.png");
502
503/***/ }),
504
505/***/ "./assets/jsx-a11y_rule_detail.png":
506/*!*****************************************!*\
507  !*** ./assets/jsx-a11y_rule_detail.png ***!
508  \*****************************************/
509/*! exports provided: default */
510/***/ (function(module, __webpack_exports__, __webpack_require__) {
511
512"use strict";
513__webpack_require__.r(__webpack_exports__);
514/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "6a316bcb4ad9eb0921aa8afa86042d84.png");
515
516/***/ }),
517
518/***/ "./assets/jsx-a11y_rules_documentation.png":
519/*!*************************************************!*\
520  !*** ./assets/jsx-a11y_rules_documentation.png ***!
521  \*************************************************/
522/*! exports provided: default */
523/***/ (function(module, __webpack_exports__, __webpack_require__) {
524
525"use strict";
526__webpack_require__.r(__webpack_exports__);
527/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "fce9d335c5260be86ead2c164e374275.png");
528
529/***/ }),
530
531/***/ "./assets/lighthouse-logo.png":
532/*!************************************!*\
533  !*** ./assets/lighthouse-logo.png ***!
534  \************************************/
535/*! exports provided: default */
536/***/ (function(module, __webpack_exports__, __webpack_require__) {
537
538"use strict";
539__webpack_require__.r(__webpack_exports__);
540/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "1eab774a411f398a97de4904743622a5.png");
541
542/***/ }),
543
544/***/ "./assets/living-with-disabilities_ambulatory.jpg":
545/*!********************************************************!*\
546  !*** ./assets/living-with-disabilities_ambulatory.jpg ***!
547  \********************************************************/
548/*! exports provided: default */
549/***/ (function(module, __webpack_exports__, __webpack_require__) {
550
551"use strict";
552__webpack_require__.r(__webpack_exports__);
553/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "d407989f434a3f3ec9b53b23b09faf76.jpg");
554
555/***/ }),
556
557/***/ "./assets/living-with-disabilities_cognitive.jpg":
558/*!*******************************************************!*\
559  !*** ./assets/living-with-disabilities_cognitive.jpg ***!
560  \*******************************************************/
561/*! exports provided: default */
562/***/ (function(module, __webpack_exports__, __webpack_require__) {
563
564"use strict";
565__webpack_require__.r(__webpack_exports__);
566/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4a6099541af2a864b0d81213e053eed4.jpg");
567
568/***/ }),
569
570/***/ "./assets/living-with-disabilities_hearing.jpg":
571/*!*****************************************************!*\
572  !*** ./assets/living-with-disabilities_hearing.jpg ***!
573  \*****************************************************/
574/*! exports provided: default */
575/***/ (function(module, __webpack_exports__, __webpack_require__) {
576
577"use strict";
578__webpack_require__.r(__webpack_exports__);
579/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "e3246ec9a1b691841bc4f2dd77841b4d.jpg");
580
581/***/ }),
582
583/***/ "./assets/living-with-disabilities_independent.jpg":
584/*!*********************************************************!*\
585  !*** ./assets/living-with-disabilities_independent.jpg ***!
586  \*********************************************************/
587/*! exports provided: default */
588/***/ (function(module, __webpack_exports__, __webpack_require__) {
589
590"use strict";
591__webpack_require__.r(__webpack_exports__);
592/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "cb77baa6d25ee9317fc6394b526da4f5.jpg");
593
594/***/ }),
595
596/***/ "./assets/living-with-disabilities_legend.jpg":
597/*!****************************************************!*\
598  !*** ./assets/living-with-disabilities_legend.jpg ***!
599  \****************************************************/
600/*! exports provided: default */
601/***/ (function(module, __webpack_exports__, __webpack_require__) {
602
603"use strict";
604__webpack_require__.r(__webpack_exports__);
605/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "3041c4bf078d1e43cad19770803c4b8c.jpg");
606
607/***/ }),
608
609/***/ "./assets/living-with-disabilities_selfcare.jpg":
610/*!******************************************************!*\
611  !*** ./assets/living-with-disabilities_selfcare.jpg ***!
612  \******************************************************/
613/*! exports provided: default */
614/***/ (function(module, __webpack_exports__, __webpack_require__) {
615
616"use strict";
617__webpack_require__.r(__webpack_exports__);
618/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "9785681a1e6ec9981a673add549d1cc0.jpg");
619
620/***/ }),
621
622/***/ "./assets/living-with-disabilities_vision.jpg":
623/*!****************************************************!*\
624  !*** ./assets/living-with-disabilities_vision.jpg ***!
625  \****************************************************/
626/*! exports provided: default */
627/***/ (function(module, __webpack_exports__, __webpack_require__) {
628
629"use strict";
630__webpack_require__.r(__webpack_exports__);
631/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "be28cf9b9c882efad4df5e6e87297c81.jpg");
632
633/***/ }),
634
635/***/ "./assets/mobile_screen_glare.jpg":
636/*!****************************************!*\
637  !*** ./assets/mobile_screen_glare.jpg ***!
638  \****************************************/
639/*! exports provided: default */
640/***/ (function(module, __webpack_exports__, __webpack_require__) {
641
642"use strict";
643__webpack_require__.r(__webpack_exports__);
644/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "6cd35235b10b8bb003a432941387ab2a.jpg");
645
646/***/ }),
647
648/***/ "./assets/mouse_cat.jpg":
649/*!******************************!*\
650  !*** ./assets/mouse_cat.jpg ***!
651  \******************************/
652/*! exports provided: default */
653/***/ (function(module, __webpack_exports__, __webpack_require__) {
654
655"use strict";
656__webpack_require__.r(__webpack_exports__);
657/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "1715e2b5f1b0ffd8e6722c78bdb59d83.jpg");
658
659/***/ }),
660
661/***/ "./assets/netlify_logo.png":
662/*!*********************************!*\
663  !*** ./assets/netlify_logo.png ***!
664  \*********************************/
665/*! exports provided: default */
666/***/ (function(module, __webpack_exports__, __webpack_require__) {
667
668"use strict";
669__webpack_require__.r(__webpack_exports__);
670/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "27945efc06def8bb176c19087a32e7b7.png");
671
672/***/ }),
673
674/***/ "./assets/out_of_the_box.jpg":
675/*!***********************************!*\
676  !*** ./assets/out_of_the_box.jpg ***!
677  \***********************************/
678/*! exports provided: default */
679/***/ (function(module, __webpack_exports__, __webpack_require__) {
680
681"use strict";
682__webpack_require__.r(__webpack_exports__);
683/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "66850652d70f3850b15940eed3c24f4d.jpg");
684
685/***/ }),
686
687/***/ "./assets/pa11y_logo.png":
688/*!*******************************!*\
689  !*** ./assets/pa11y_logo.png ***!
690  \*******************************/
691/*! exports provided: default */
692/***/ (function(module, __webpack_exports__, __webpack_require__) {
693
694"use strict";
695__webpack_require__.r(__webpack_exports__);
696/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "c7a21793ac6daada9ce78316e4e7e5ef.png");
697
698/***/ }),
699
700/***/ "./assets/pa11y_travis_results.png":
701/*!*****************************************!*\
702  !*** ./assets/pa11y_travis_results.png ***!
703  \*****************************************/
704/*! exports provided: default */
705/***/ (function(module, __webpack_exports__, __webpack_require__) {
706
707"use strict";
708__webpack_require__.r(__webpack_exports__);
709/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "04cd6584ff112ff95b5d674077dc651a.png");
710
711/***/ }),
712
713/***/ "./assets/react-axe_screenshot.png":
714/*!*****************************************!*\
715  !*** ./assets/react-axe_screenshot.png ***!
716  \*****************************************/
717/*! exports provided: default */
718/***/ (function(module, __webpack_exports__, __webpack_require__) {
719
720"use strict";
721__webpack_require__.r(__webpack_exports__);
722/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "9b5913823d3857a05668ebdcfa3ea060.png");
723
724/***/ }),
725
726/***/ "./assets/react-axe_screenshot_expanded.png":
727/*!**************************************************!*\
728  !*** ./assets/react-axe_screenshot_expanded.png ***!
729  \**************************************************/
730/*! exports provided: default */
731/***/ (function(module, __webpack_exports__, __webpack_require__) {
732
733"use strict";
734__webpack_require__.r(__webpack_exports__);
735/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "1664d20cdaaa6e9a255c691cbd9bab19.png");
736
737/***/ }),
738
739/***/ "./assets/selenium_logo_large.png":
740/*!****************************************!*\
741  !*** ./assets/selenium_logo_large.png ***!
742  \****************************************/
743/*! exports provided: default */
744/***/ (function(module, __webpack_exports__, __webpack_require__) {
745
746"use strict";
747__webpack_require__.r(__webpack_exports__);
748/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "f7726897c5c65a62320d588d38c107f8.png");
749
750/***/ }),
751
752/***/ "./assets/sick_at_computer.jpg":
753/*!*************************************!*\
754  !*** ./assets/sick_at_computer.jpg ***!
755  \*************************************/
756/*! exports provided: default */
757/***/ (function(module, __webpack_exports__, __webpack_require__) {
758
759"use strict";
760__webpack_require__.r(__webpack_exports__);
761/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8fc4e7082411975c26157f1832d39301.jpg");
762
763/***/ }),
764
765/***/ "./assets/storybook_a11y_addon.png":
766/*!*****************************************!*\
767  !*** ./assets/storybook_a11y_addon.png ***!
768  \*****************************************/
769/*! exports provided: default */
770/***/ (function(module, __webpack_exports__, __webpack_require__) {
771
772"use strict";
773__webpack_require__.r(__webpack_exports__);
774/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "c888b27a3b59f0d75dfe922ebee3d8ff.png");
775
776/***/ }),
777
778/***/ "./assets/storybook_logo.png":
779/*!***********************************!*\
780  !*** ./assets/storybook_logo.png ***!
781  \***********************************/
782/*! exports provided: default */
783/***/ (function(module, __webpack_exports__, __webpack_require__) {
784
785"use strict";
786__webpack_require__.r(__webpack_exports__);
787/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4497eedaf0c8cde8fa881f47a8ba196b.png");
788
789/***/ }),
790
791/***/ "./assets/t&p-favicon.png":
792/*!********************************!*\
793  !*** ./assets/t&p-favicon.png ***!
794  \********************************/
795/*! exports provided: default */
796/***/ (function(module, __webpack_exports__, __webpack_require__) {
797
798"use strict";
799__webpack_require__.r(__webpack_exports__);
800/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "3c4e083b77e7ce8f7e4e03cedaee57da.png");
801
802/***/ }),
803
804/***/ "./assets/toolbar-walkthrough-optimized.mp4":
805/*!**************************************************!*\
806  !*** ./assets/toolbar-walkthrough-optimized.mp4 ***!
807  \**************************************************/
808/*! exports provided: default */
809/***/ (function(module, __webpack_exports__, __webpack_require__) {
810
811"use strict";
812__webpack_require__.r(__webpack_exports__);
813/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8b083907d74e7f2b9a298e5f324cc751.mp4");
814
815/***/ }),
816
817/***/ "./assets/travisci_logo.png":
818/*!**********************************!*\
819  !*** ./assets/travisci_logo.png ***!
820  \**********************************/
821/*! exports provided: default */
822/***/ (function(module, __webpack_exports__, __webpack_require__) {
823
824"use strict";
825__webpack_require__.r(__webpack_exports__);
826/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "cbdc7e9f241e185945fa7a6d6bf4ca59.png");
827
828/***/ }),
829
830/***/ "./assets/video_in_loud_room.png":
831/*!***************************************!*\
832  !*** ./assets/video_in_loud_room.png ***!
833  \***************************************/
834/*! exports provided: default */
835/***/ (function(module, __webpack_exports__, __webpack_require__) {
836
837"use strict";
838__webpack_require__.r(__webpack_exports__);
839/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "a8ccf1413354931d57b04e84d1d0f2ab.png");
840
841/***/ }),
842
843/***/ "./assets/webdriver_chrome_window.png":
844/*!********************************************!*\
845  !*** ./assets/webdriver_chrome_window.png ***!
846  \********************************************/
847/*! exports provided: default */
848/***/ (function(module, __webpack_exports__, __webpack_require__) {
849
850"use strict";
851__webpack_require__.r(__webpack_exports__);
852/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4386fa9c7f4584d51881ec4c4ed4e101.png");
853
854/***/ }),
855
856/***/ "./assets/webdriver_results_page1.png":
857/*!********************************************!*\
858  !*** ./assets/webdriver_results_page1.png ***!
859  \********************************************/
860/*! exports provided: default */
861/***/ (function(module, __webpack_exports__, __webpack_require__) {
862
863"use strict";
864__webpack_require__.r(__webpack_exports__);
865/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "75699ca351ab68e66a8578e37792faf0.png");
866
867/***/ }),
868
869/***/ "./assets/webdriver_results_page2.png":
870/*!********************************************!*\
871  !*** ./assets/webdriver_results_page2.png ***!
872  \********************************************/
873/*! exports provided: default */
874/***/ (function(module, __webpack_exports__, __webpack_require__) {
875
876"use strict";
877__webpack_require__.r(__webpack_exports__);
878/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "f842127f1bff19fee896a26aba3b5c1d.png");
879
880/***/ }),
881
882/***/ "./assets/webdriver_results_page3.png":
883/*!********************************************!*\
884  !*** ./assets/webdriver_results_page3.png ***!
885  \********************************************/
886/*! exports provided: default */
887/***/ (function(module, __webpack_exports__, __webpack_require__) {
888
889"use strict";
890__webpack_require__.r(__webpack_exports__);
891/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4d7567947229c339b8d00b01e02d24e6.png");
892
893/***/ }),
894
895/***/ "./assets/webdriver_results_page4.png":
896/*!********************************************!*\
897  !*** ./assets/webdriver_results_page4.png ***!
898  \********************************************/
899/*! exports provided: default */
900/***/ (function(module, __webpack_exports__, __webpack_require__) {
901
902"use strict";
903__webpack_require__.r(__webpack_exports__);
904/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8a1b01b68572b714cb7f365bbb429991.png");
905
906/***/ }),
907
vendor: 933 bytes, lines 908-937
908/***/ "./node_modules/@babel/runtime/helpers/esm/extends.js":
909/*!************************************************************!*\
910  !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!
911  \************************************************************/
912/*! exports provided: default */
913/***/ (function(module, __webpack_exports__, __webpack_require__) {
914
915"use strict";
916__webpack_require__.r(__webpack_exports__);
917/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _extends; });
918function _extends() {
919  _extends = Object.assign || function (target) {
920    for (var i = 1; i < arguments.length; i++) {
921      var source = arguments[i];
922
923      for (var key in source) {
924        if (Object.prototype.hasOwnProperty.call(source, key)) {
925          target[key] = source[key];
926        }
927      }
928    }
929
930    return target;
931  };
932
933  return _extends.apply(this, arguments);
934}
935
936/***/ }),
937
vendor: 991 bytes, lines 938-964
938/***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js":
939/*!*********************************************************************************!*\
940  !*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***!
941  \*********************************************************************************/
942/*! exports provided: default */
943/***/ (function(module, __webpack_exports__, __webpack_require__) {
944
945"use strict";
946__webpack_require__.r(__webpack_exports__);
947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _objectWithoutPropertiesLoose; });
948function _objectWithoutPropertiesLoose(source, excluded) {
949  if (source == null) return {};
950  var target = {};
951  var sourceKeys = Object.keys(source);
952  var key, i;
953
954  for (i = 0; i < sourceKeys.length; i++) {
955    key = sourceKeys[i];
956    if (excluded.indexOf(key) >= 0) continue;
957    target[key] = source[key];
958  }
959
960  return target;
961}
962
963/***/ }),
964
vendor: 5,092 bytes, lines 965-990
965/***/ "./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js":
966/*!*******************************************************************************!*\
967  !*** ./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js ***!
968  \*******************************************************************************/
969/*! exports provided: default */
970/***/ (function(module, __webpack_exports__, __webpack_require__) {
971
972"use strict";
973__webpack_require__.r(__webpack_exports__);
974/* harmony import */ var _emotion_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/memoize */ "./node_modules/@emotion/memoize/dist/memoize.browser.esm.js");
975
976var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23
977
978var index = Object(_emotion_memoize__WEBPACK_IMPORTED_MODULE_0__["default"])(function (prop) {
979  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111
980  /* o */
981  && prop.charCodeAt(1) === 110
982  /* n */
983  && prop.charCodeAt(2) < 91;
984}
985/* Z+1 */
986);
987/* harmony default export */ __webpack_exports__["default"] = (index);
988
989/***/ }),
990
vendor: 686 bytes, lines 991-1011
991/***/ "./node_modules/@emotion/memoize/dist/memoize.browser.esm.js":
992/*!*******************************************************************!*\
993  !*** ./node_modules/@emotion/memoize/dist/memoize.browser.esm.js ***!
994  \*******************************************************************/
995/*! exports provided: default */
996/***/ (function(module, __webpack_exports__, __webpack_require__) {
997
998"use strict";
999__webpack_require__.r(__webpack_exports__);
1000function memoize(fn) {
1001  var cache = {};
1002  return function (arg) {
1003    if (cache[arg] === undefined) cache[arg] = fn(arg);
1004    return cache[arg];
1005  };
1006}
1007
1008/* harmony default export */ __webpack_exports__["default"] = (memoize);
1009
1010/***/ }),
1011
vendor: 1,414 bytes, lines 1012-1072
1012/***/ "./node_modules/@emotion/unitless/dist/unitless.browser.esm.js":
1013/*!*********************************************************************!*\
1014  !*** ./node_modules/@emotion/unitless/dist/unitless.browser.esm.js ***!
1015  \*********************************************************************/
1016/*! exports provided: default */
1017/***/ (function(module, __webpack_exports__, __webpack_require__) {
1018
1019"use strict";
1020__webpack_require__.r(__webpack_exports__);
1021var unitlessKeys = {
1022  animationIterationCount: 1,
1023  borderImageOutset: 1,
1024  borderImageSlice: 1,
1025  borderImageWidth: 1,
1026  boxFlex: 1,
1027  boxFlexGroup: 1,
1028  boxOrdinalGroup: 1,
1029  columnCount: 1,
1030  columns: 1,
1031  flex: 1,
1032  flexGrow: 1,
1033  flexPositive: 1,
1034  flexShrink: 1,
1035  flexNegative: 1,
1036  flexOrder: 1,
1037  gridRow: 1,
1038  gridRowEnd: 1,
1039  gridRowSpan: 1,
1040  gridRowStart: 1,
1041  gridColumn: 1,
1042  gridColumnEnd: 1,
1043  gridColumnSpan: 1,
1044  gridColumnStart: 1,
1045  msGridRow: 1,
1046  msGridRowSpan: 1,
1047  msGridColumn: 1,
1048  msGridColumnSpan: 1,
1049  fontWeight: 1,
1050  lineHeight: 1,
1051  opacity: 1,
1052  order: 1,
1053  orphans: 1,
1054  tabSize: 1,
1055  widows: 1,
1056  zIndex: 1,
1057  zoom: 1,
1058  WebkitLineClamp: 1,
1059  // SVG-related properties
1060  fillOpacity: 1,
1061  floodOpacity: 1,
1062  stopOpacity: 1,
1063  strokeDasharray: 1,
1064  strokeDashoffset: 1,
1065  strokeMiterlimit: 1,
1066  strokeOpacity: 1,
1067  strokeWidth: 1
1068};
1069/* harmony default export */ __webpack_exports__["default"] = (unitlessKeys);
1070
1071/***/ }),
1072
vendor: 1,251 bytes, lines 1073-1100
1073/***/ "./node_modules/@styled-system/background/dist/index.esm.js":
1074/*!******************************************************************!*\
1075  !*** ./node_modules/@styled-system/background/dist/index.esm.js ***!
1076  \******************************************************************/
1077/*! exports provided: background, default */
1078/***/ (function(module, __webpack_exports__, __webpack_require__) {
1079
1080"use strict";
1081__webpack_require__.r(__webpack_exports__);
1082/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "background", function() { return background; });
1083/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1084
1085var config = {
1086  background: true,
1087  backgroundImage: true,
1088  backgroundSize: true,
1089  backgroundPosition: true,
1090  backgroundRepeat: true
1091};
1092config.bgImage = config.backgroundImage;
1093config.bgSize = config.backgroundSize;
1094config.bgPosition = config.backgroundPosition;
1095config.bgRepeat = config.backgroundRepeat;
1096var background = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config);
1097/* harmony default export */ __webpack_exports__["default"] = (background);
1098
1099/***/ }),
1100
vendor: 3,465 bytes, lines 1101-1243
1101/***/ "./node_modules/@styled-system/border/dist/index.esm.js":
1102/*!**************************************************************!*\
1103  !*** ./node_modules/@styled-system/border/dist/index.esm.js ***!
1104  \**************************************************************/
1105/*! exports provided: border, default */
1106/***/ (function(module, __webpack_exports__, __webpack_require__) {
1107
1108"use strict";
1109__webpack_require__.r(__webpack_exports__);
1110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "border", function() { return border; });
1111/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1112
1113var config = {
1114  border: {
1115    property: 'border',
1116    scale: 'borders'
1117  },
1118  borderWidth: {
1119    property: 'borderWidth',
1120    scale: 'borderWidths'
1121  },
1122  borderStyle: {
1123    property: 'borderStyle',
1124    scale: 'borderStyles'
1125  },
1126  borderColor: {
1127    property: 'borderColor',
1128    scale: 'colors'
1129  },
1130  borderRadius: {
1131    property: 'borderRadius',
1132    scale: 'radii'
1133  },
1134  borderTop: {
1135    property: 'borderTop',
1136    scale: 'borders'
1137  },
1138  borderTopLeftRadius: {
1139    property: 'borderTopLeftRadius',
1140    scale: 'radii'
1141  },
1142  borderTopRightRadius: {
1143    property: 'borderTopRightRadius',
1144    scale: 'radii'
1145  },
1146  borderRight: {
1147    property: 'borderRight',
1148    scale: 'borders'
1149  },
1150  borderBottom: {
1151    property: 'borderBottom',
1152    scale: 'borders'
1153  },
1154  borderBottomLeftRadius: {
1155    property: 'borderBottomLeftRadius',
1156    scale: 'radii'
1157  },
1158  borderBottomRightRadius: {
1159    property: 'borderBottomRightRadius',
1160    scale: 'radii'
1161  },
1162  borderLeft: {
1163    property: 'borderLeft',
1164    scale: 'borders'
1165  },
1166  borderX: {
1167    properties: ['borderLeft', 'borderRight'],
1168    scale: 'borders'
1169  },
1170  borderY: {
1171    properties: ['borderTop', 'borderBottom'],
1172    scale: 'borders'
1173  }
1174};
1175config.borderTopWidth = {
1176  property: 'borderTopWidth',
1177  scale: 'borderWidths'
1178};
1179config.borderTopColor = {
1180  property: 'borderTopColor',
1181  scale: 'colors'
1182};
1183config.borderTopStyle = {
1184  property: 'borderTopStyle',
1185  scale: 'borderStyles'
1186};
1187config.borderTopLeftRadius = {
1188  property: 'borderTopLeftRadius',
1189  scale: 'radii'
1190};
1191config.borderTopRightRadius = {
1192  property: 'borderTopRightRadius',
1193  scale: 'radii'
1194};
1195config.borderBottomWidth = {
1196  property: 'borderBottomWidth',
1197  scale: 'borderWidths'
1198};
1199config.borderBottomColor = {
1200  property: 'borderBottomColor',
1201  scale: 'colors'
1202};
1203config.borderBottomStyle = {
1204  property: 'borderBottomStyle',
1205  scale: 'borderStyles'
1206};
1207config.borderBottomLeftRadius = {
1208  property: 'borderBottomLeftRadius',
1209  scale: 'radii'
1210};
1211config.borderBottomRightRadius = {
1212  property: 'borderBottomRightRadius',
1213  scale: 'radii'
1214};
1215config.borderLeftWidth = {
1216  property: 'borderLeftWidth',
1217  scale: 'borderWidths'
1218};
1219config.borderLeftColor = {
1220  property: 'borderLeftColor',
1221  scale: 'colors'
1222};
1223config.borderLeftStyle = {
1224  property: 'borderLeftStyle',
1225  scale: 'borderStyles'
1226};
1227config.borderRightWidth = {
1228  property: 'borderRightWidth',
1229  scale: 'borderWidths'
1230};
1231config.borderRightColor = {
1232  property: 'borderRightColor',
1233  scale: 'colors'
1234};
1235config.borderRightStyle = {
1236  property: 'borderRightStyle',
1237  scale: 'borderStyles'
1238};
1239var border = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config);
1240/* harmony default export */ __webpack_exports__["default"] = (border);
1241
1242/***/ }),
1243
vendor: 1,104 bytes, lines 1244-1272
1244/***/ "./node_modules/@styled-system/color/dist/index.esm.js":
1245/*!*************************************************************!*\
1246  !*** ./node_modules/@styled-system/color/dist/index.esm.js ***!
1247  \*************************************************************/
1248/*! exports provided: color, default */
1249/***/ (function(module, __webpack_exports__, __webpack_require__) {
1250
1251"use strict";
1252__webpack_require__.r(__webpack_exports__);
1253/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "color", function() { return color; });
1254/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1255
1256var config = {
1257  color: {
1258    property: 'color',
1259    scale: 'colors'
1260  },
1261  backgroundColor: {
1262    property: 'backgroundColor',
1263    scale: 'colors'
1264  },
1265  opacity: true
1266};
1267config.bg = config.backgroundColor;
1268var color = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config);
1269/* harmony default export */ __webpack_exports__["default"] = (color);
1270
1271/***/ }),
1272
vendor: 7,307 bytes, lines 1273-1506
1273/***/ "./node_modules/@styled-system/core/dist/index.esm.js":
1274/*!************************************************************!*\
1275  !*** ./node_modules/@styled-system/core/dist/index.esm.js ***!
1276  \************************************************************/
1277/*! exports provided: merge, get, createParser, createStyleFunction, system, compose */
1278/***/ (function(module, __webpack_exports__, __webpack_require__) {
1279
1280"use strict";
1281__webpack_require__.r(__webpack_exports__);
1282/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; });
1283/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
1284/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createParser", function() { return createParser; });
1285/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createStyleFunction", function() { return createStyleFunction; });
1286/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "system", function() { return system; });
1287/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return compose; });
1288/* harmony import */ var object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
1289/* harmony import */ var object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(object_assign__WEBPACK_IMPORTED_MODULE_0__);
1290
1291var merge = function merge(a, b) {
1292  var result = object_assign__WEBPACK_IMPORTED_MODULE_0___default()({}, a, b);
1293
1294  for (var key in a) {
1295    var _assign;
1296
1297    if (!a[key] || typeof b[key] !== 'object') continue;
1298    object_assign__WEBPACK_IMPORTED_MODULE_0___default()(result, (_assign = {}, _assign[key] = object_assign__WEBPACK_IMPORTED_MODULE_0___default()(a[key], b[key]), _assign));
1299  }
1300
1301  return result;
1302}; // sort object-value responsive styles
1303
1304var sort = function sort(obj) {
1305  var next = {};
1306  Object.keys(obj).sort(function (a, b) {
1307    return a.localeCompare(b, undefined, {
1308      numeric: true,
1309      sensitivity: 'base'
1310    });
1311  }).forEach(function (key) {
1312    next[key] = obj[key];
1313  });
1314  return next;
1315};
1316
1317var defaults = {
1318  breakpoints: [40, 52, 64].map(function (n) {
1319    return n + 'em';
1320  })
1321};
1322
1323var createMediaQuery = function createMediaQuery(n) {
1324  return "@media screen and (min-width: " + n + ")";
1325};
1326
1327var getValue = function getValue(n, scale) {
1328  return get(scale, n, n);
1329};
1330
1331var get = function get(obj, key, def, p, undef) {
1332  key = key && key.split ? key.split('.') : [key];
1333
1334  for (p = 0; p < key.length; p++) {
1335    obj = obj ? obj[key[p]] : undef;
1336  }
1337
1338  return obj === undef ? def : obj;
1339};
1340var createParser = function createParser(config) {
1341  var cache = {};
1342
1343  var parse = function parse(props) {
1344    var styles = {};
1345    var shouldSort = false;
1346    var isCacheDisabled = props.theme && props.theme.disableStyledSystemCache;
1347
1348    for (var key in props) {
1349      if (!config[key]) continue;
1350      var sx = config[key];
1351      var raw = props[key];
1352      var scale = get(props.theme, sx.scale, sx.defaults);
1353
1354      if (typeof raw === 'object') {
1355        cache.breakpoints = !isCacheDisabled && cache.breakpoints || get(props.theme, 'breakpoints', defaults.breakpoints);
1356
1357        if (Array.isArray(raw)) {
1358          cache.media = !isCacheDisabled && cache.media || [null].concat(cache.breakpoints.map(createMediaQuery));
1359          styles = merge(styles, parseResponsiveStyle(cache.media, sx, scale, raw, props));
1360          continue;
1361        }
1362
1363        if (raw !== null) {
1364          styles = merge(styles, parseResponsiveObject(cache.breakpoints, sx, scale, raw, props));
1365          shouldSort = true;
1366        }
1367
1368        continue;
1369      }
1370
1371      object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, sx(raw, scale, props));
1372    } // sort object-based responsive styles
1373
1374
1375    if (shouldSort) {
1376      styles = sort(styles);
1377    }
1378
1379    return styles;
1380  };
1381
1382  parse.config = config;
1383  parse.propNames = Object.keys(config);
1384  parse.cache = cache;
1385  var keys = Object.keys(config).filter(function (k) {
1386    return k !== 'config';
1387  });
1388
1389  if (keys.length > 1) {
1390    keys.forEach(function (key) {
1391      var _createParser;
1392
1393      parse[key] = createParser((_createParser = {}, _createParser[key] = config[key], _createParser));
1394    });
1395  }
1396
1397  return parse;
1398};
1399
1400var parseResponsiveStyle = function parseResponsiveStyle(mediaQueries, sx, scale, raw, _props) {
1401  var styles = {};
1402  raw.slice(0, mediaQueries.length).forEach(function (value, i) {
1403    var media = mediaQueries[i];
1404    var style = sx(value, scale, _props);
1405
1406    if (!media) {
1407      object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, style);
1408    } else {
1409      var _assign2;
1410
1411      object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, (_assign2 = {}, _assign2[media] = object_assign__WEBPACK_IMPORTED_MODULE_0___default()({}, styles[media], style), _assign2));
1412    }
1413  });
1414  return styles;
1415};
1416
1417var parseResponsiveObject = function parseResponsiveObject(breakpoints, sx, scale, raw, _props) {
1418  var styles = {};
1419
1420  for (var key in raw) {
1421    var breakpoint = breakpoints[key];
1422    var value = raw[key];
1423    var style = sx(value, scale, _props);
1424
1425    if (!breakpoint) {
1426      object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, style);
1427    } else {
1428      var _assign3;
1429
1430      var media = createMediaQuery(breakpoint);
1431      object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, (_assign3 = {}, _assign3[media] = object_assign__WEBPACK_IMPORTED_MODULE_0___default()({}, styles[media], style), _assign3));
1432    }
1433  }
1434
1435  return styles;
1436};
1437
1438var createStyleFunction = function createStyleFunction(_ref) {
1439  var properties = _ref.properties,
1440      property = _ref.property,
1441      scale = _ref.scale,
1442      _ref$transform = _ref.transform,
1443      transform = _ref$transform === void 0 ? getValue : _ref$transform,
1444      defaultScale = _ref.defaultScale;
1445  properties = properties || [property];
1446
1447  var sx = function sx(value, scale, _props) {
1448    var result = {};
1449    var n = transform(value, scale, _props);
1450    if (n === null) return;
1451    properties.forEach(function (prop) {
1452      result[prop] = n;
1453    });
1454    return result;
1455  };
1456
1457  sx.scale = scale;
1458  sx.defaults = defaultScale;
1459  return sx;
1460}; // new v5 API
1461
1462var system = function system(args) {
1463  if (args === void 0) {
1464    args = {};
1465  }
1466
1467  var config = {};
1468  Object.keys(args).forEach(function (key) {
1469    var conf = args[key];
1470
1471    if (conf === true) {
1472      // shortcut definition
1473      config[key] = createStyleFunction({
1474        property: key,
1475        scale: key
1476      });
1477      return;
1478    }
1479
1480    if (typeof conf === 'function') {
1481      config[key] = conf;
1482      return;
1483    }
1484
1485    config[key] = createStyleFunction(conf);
1486  });
1487  var parser = createParser(config);
1488  return parser;
1489};
1490var compose = function compose() {
1491  var config = {};
1492
1493  for (var _len = arguments.length, parsers = new Array(_len), _key = 0; _key < _len; _key++) {
1494    parsers[_key] = arguments[_key];
1495  }
1496
1497  parsers.forEach(function (parser) {
1498    if (!parser || !parser.config) return;
1499    object_assign__WEBPACK_IMPORTED_MODULE_0___default()(config, parser.config);
1500  });
1501  var parser = createParser(config);
1502  return parser;
1503};
1504
1505/***/ }),
1506
vendor: 6,719 bytes, lines 1507-1752
1507/***/ "./node_modules/@styled-system/css/dist/index.esm.js":
1508/*!***********************************************************!*\
1509  !*** ./node_modules/@styled-system/css/dist/index.esm.js ***!
1510  \***********************************************************/
1511/*! exports provided: get, responsive, css, default */
1512/***/ (function(module, __webpack_exports__, __webpack_require__) {
1513
1514"use strict";
1515__webpack_require__.r(__webpack_exports__);
1516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
1517/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "responsive", function() { return responsive; });
1518/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; });
1519function _extends() {
1520  _extends = Object.assign || function (target) {
1521    for (var i = 1; i < arguments.length; i++) {
1522      var source = arguments[i];
1523
1524      for (var key in source) {
1525        if (Object.prototype.hasOwnProperty.call(source, key)) {
1526          target[key] = source[key];
1527        }
1528      }
1529    }
1530
1531    return target;
1532  };
1533
1534  return _extends.apply(this, arguments);
1535} // based on https://github.com/developit/dlv
1536
1537
1538var get = function get(obj, key, def, p, undef) {
1539  key = key && key.split ? key.split('.') : [key];
1540
1541  for (p = 0; p < key.length; p++) {
1542    obj = obj ? obj[key[p]] : undef;
1543  }
1544
1545  return obj === undef ? def : obj;
1546};
1547var defaultBreakpoints = [40, 52, 64].map(function (n) {
1548  return n + 'em';
1549});
1550var defaultTheme = {
1551  space: [0, 4, 8, 16, 32, 64, 128, 256, 512],
1552  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]
1553};
1554var aliases = {
1555  bg: 'backgroundColor',
1556  m: 'margin',
1557  mt: 'marginTop',
1558  mr: 'marginRight',
1559  mb: 'marginBottom',
1560  ml: 'marginLeft',
1561  mx: 'marginX',
1562  my: 'marginY',
1563  p: 'padding',
1564  pt: 'paddingTop',
1565  pr: 'paddingRight',
1566  pb: 'paddingBottom',
1567  pl: 'paddingLeft',
1568  px: 'paddingX',
1569  py: 'paddingY'
1570};
1571var multiples = {
1572  marginX: ['marginLeft', 'marginRight'],
1573  marginY: ['marginTop', 'marginBottom'],
1574  paddingX: ['paddingLeft', 'paddingRight'],
1575  paddingY: ['paddingTop', 'paddingBottom'],
1576  size: ['width', 'height']
1577};
1578var scales = {
1579  color: 'colors',
1580  backgroundColor: 'colors',
1581  borderColor: 'colors',
1582  margin: 'space',
1583  marginTop: 'space',
1584  marginRight: 'space',
1585  marginBottom: 'space',
1586  marginLeft: 'space',
1587  marginX: 'space',
1588  marginY: 'space',
1589  padding: 'space',
1590  paddingTop: 'space',
1591  paddingRight: 'space',
1592  paddingBottom: 'space',
1593  paddingLeft: 'space',
1594  paddingX: 'space',
1595  paddingY: 'space',
1596  top: 'space',
1597  right: 'space',
1598  bottom: 'space',
1599  left: 'space',
1600  gridGap: 'space',
1601  gridColumnGap: 'space',
1602  gridRowGap: 'space',
1603  gap: 'space',
1604  columnGap: 'space',
1605  rowGap: 'space',
1606  fontFamily: 'fonts',
1607  fontSize: 'fontSizes',
1608  fontWeight: 'fontWeights',
1609  lineHeight: 'lineHeights',
1610  letterSpacing: 'letterSpacings',
1611  border: 'borders',
1612  borderTop: 'borders',
1613  borderRight: 'borders',
1614  borderBottom: 'borders',
1615  borderLeft: 'borders',
1616  borderWidth: 'borderWidths',
1617  borderStyle: 'borderStyles',
1618  borderRadius: 'radii',
1619  borderTopRightRadius: 'radii',
1620  borderTopLeftRadius: 'radii',
1621  borderBottomRightRadius: 'radii',
1622  borderBottomLeftRadius: 'radii',
1623  borderTopWidth: 'borderWidths',
1624  borderTopColor: 'colors',
1625  borderTopStyle: 'borderStyles',
1626  borderBottomWidth: 'borderWidths',
1627  borderBottomColor: 'colors',
1628  borderBottomStyle: 'borderStyles',
1629  borderLeftWidth: 'borderWidths',
1630  borderLeftColor: 'colors',
1631  borderLeftStyle: 'borderStyles',
1632  borderRightWidth: 'borderWidths',
1633  borderRightColor: 'colors',
1634  borderRightStyle: 'borderStyles',
1635  outlineColor: 'colors',
1636  boxShadow: 'shadows',
1637  textShadow: 'shadows',
1638  zIndex: 'zIndices',
1639  width: 'sizes',
1640  minWidth: 'sizes',
1641  maxWidth: 'sizes',
1642  height: 'sizes',
1643  minHeight: 'sizes',
1644  maxHeight: 'sizes',
1645  flexBasis: 'sizes',
1646  size: 'sizes',
1647  // svg
1648  fill: 'colors',
1649  stroke: 'colors'
1650};
1651
1652var positiveOrNegative = function positiveOrNegative(scale, value) {
1653  if (typeof value !== 'number' || value >= 0) {
1654    return get(scale, value, value);
1655  }
1656
1657  var absolute = Math.abs(value);
1658  var n = get(scale, absolute, absolute);
1659  if (typeof n === 'string') return '-' + n;
1660  return n * -1;
1661};
1662
1663var transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {
1664  var _extends2;
1665
1666  return _extends({}, acc, (_extends2 = {}, _extends2[curr] = positiveOrNegative, _extends2));
1667}, {});
1668var responsive = function responsive(styles) {
1669  return function (theme) {
1670    var next = {};
1671    var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);
1672    var mediaQueries = [null].concat(breakpoints.map(function (n) {
1673      return "@media screen and (min-width: " + n + ")";
1674    }));
1675
1676    for (var key in styles) {
1677      var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];
1678      if (value == null) continue;
1679
1680      if (!Array.isArray(value)) {
1681        next[key] = value;
1682        continue;
1683      }
1684
1685      for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {
1686        var media = mediaQueries[i];
1687
1688        if (!media) {
1689          next[key] = value[i];
1690          continue;
1691        }
1692
1693        next[media] = next[media] || {};
1694        if (value[i] == null) continue;
1695        next[media][key] = value[i];
1696      }
1697    }
1698
1699    return next;
1700  };
1701};
1702var css = function css(args) {
1703  return function (props) {
1704    if (props === void 0) {
1705      props = {};
1706    }
1707
1708    var theme = _extends({}, defaultTheme, {}, props.theme || props);
1709
1710    var result = {};
1711    var obj = typeof args === 'function' ? args(theme) : args;
1712    var styles = responsive(obj)(theme);
1713
1714    for (var key in styles) {
1715      var x = styles[key];
1716      var val = typeof x === 'function' ? x(theme) : x;
1717
1718      if (key === 'variant') {
1719        var variant = css(get(theme, val))(theme);
1720        result = _extends({}, result, {}, variant);
1721        continue;
1722      }
1723
1724      if (val && typeof val === 'object') {
1725        result[key] = css(val)(theme);
1726        continue;
1727      }
1728
1729      var prop = get(aliases, key, key);
1730      var scaleName = get(scales, prop);
1731      var scale = get(theme, scaleName, get(theme, prop, {}));
1732      var transform = get(transforms, prop, get);
1733      var value = transform(scale, val, val);
1734
1735      if (multiples[prop]) {
1736        var dirs = multiples[prop];
1737
1738        for (var i = 0; i < dirs.length; i++) {
1739          result[dirs[i]] = value;
1740        }
1741      } else {
1742        result[prop] = value;
1743      }
1744    }
1745
1746    return result;
1747  };
1748};
1749/* harmony default export */ __webpack_exports__["default"] = (css);
1750
1751/***/ }),
1752
vendor: 1,196 bytes, lines 1753-1785
1753/***/ "./node_modules/@styled-system/flexbox/dist/index.esm.js":
1754/*!***************************************************************!*\
1755  !*** ./node_modules/@styled-system/flexbox/dist/index.esm.js ***!
1756  \***************************************************************/
1757/*! exports provided: flexbox, default */
1758/***/ (function(module, __webpack_exports__, __webpack_require__) {
1759
1760"use strict";
1761__webpack_require__.r(__webpack_exports__);
1762/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexbox", function() { return flexbox; });
1763/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1764
1765var config = {
1766  alignItems: true,
1767  alignContent: true,
1768  justifyItems: true,
1769  justifyContent: true,
1770  flexWrap: true,
1771  flexDirection: true,
1772  // item
1773  flex: true,
1774  flexGrow: true,
1775  flexShrink: true,
1776  flexBasis: true,
1777  justifySelf: true,
1778  alignSelf: true,
1779  order: true
1780};
1781var flexbox = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config);
1782/* harmony default export */ __webpack_exports__["default"] = (flexbox);
1783
1784/***/ }),
1785
vendor: 1,482 bytes, lines 1786-1831
1786/***/ "./node_modules/@styled-system/grid/dist/index.esm.js":
1787/*!************************************************************!*\
1788  !*** ./node_modules/@styled-system/grid/dist/index.esm.js ***!
1789  \************************************************************/
1790/*! exports provided: grid, default */
1791/***/ (function(module, __webpack_exports__, __webpack_require__) {
1792
1793"use strict";
1794__webpack_require__.r(__webpack_exports__);
1795/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "grid", function() { return grid; });
1796/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1797
1798var defaults = {
1799  space: [0, 4, 8, 16, 32, 64, 128, 256, 512]
1800};
1801var config = {
1802  gridGap: {
1803    property: 'gridGap',
1804    scale: 'space',
1805    defaultScale: defaults.space
1806  },
1807  gridColumnGap: {
1808    property: 'gridColumnGap',
1809    scale: 'space',
1810    defaultScale: defaults.space
1811  },
1812  gridRowGap: {
1813    property: 'gridRowGap',
1814    scale: 'space',
1815    defaultScale: defaults.space
1816  },
1817  gridColumn: true,
1818  gridRow: true,
1819  gridAutoFlow: true,
1820  gridAutoColumns: true,
1821  gridAutoRows: true,
1822  gridTemplateColumns: true,
1823  gridTemplateRows: true,
1824  gridTemplateAreas: true,
1825  gridArea: true
1826};
1827var grid = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config);
1828/* harmony default export */ __webpack_exports__["default"] = (grid);
1829
1830/***/ }),
1831
vendor: 1,756 bytes, lines 1832-1893
1832/***/ "./node_modules/@styled-system/layout/dist/index.esm.js":
1833/*!**************************************************************!*\
1834  !*** ./node_modules/@styled-system/layout/dist/index.esm.js ***!
1835  \**************************************************************/
1836/*! exports provided: layout, default */
1837/***/ (function(module, __webpack_exports__, __webpack_require__) {
1838
1839"use strict";
1840__webpack_require__.r(__webpack_exports__);
1841/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "layout", function() { return layout; });
1842/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1843
1844
1845var isNumber = function isNumber(n) {
1846  return typeof n === 'number' && !isNaN(n);
1847};
1848
1849var getWidth = function getWidth(n, scale) {
1850  return Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, n, !isNumber(n) || n > 1 ? n : n * 100 + '%');
1851};
1852
1853var config = {
1854  width: {
1855    property: 'width',
1856    scale: 'sizes',
1857    transform: getWidth
1858  },
1859  height: {
1860    property: 'height',
1861    scale: 'sizes'
1862  },
1863  minWidth: {
1864    property: 'minWidth',
1865    scale: 'sizes'
1866  },
1867  minHeight: {
1868    property: 'minHeight',
1869    scale: 'sizes'
1870  },
1871  maxWidth: {
1872    property: 'maxWidth',
1873    scale: 'sizes'
1874  },
1875  maxHeight: {
1876    property: 'maxHeight',
1877    scale: 'sizes'
1878  },
1879  size: {
1880    properties: ['width', 'height'],
1881    scale: 'sizes'
1882  },
1883  overflow: true,
1884  overflowX: true,
1885  overflowY: true,
1886  display: true,
1887  verticalAlign: true
1888};
1889var layout = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config);
1890/* harmony default export */ __webpack_exports__["default"] = (layout);
1891
1892/***/ }),
1893
vendor: 1,451 bytes, lines 1894-1940
1894/***/ "./node_modules/@styled-system/position/dist/index.esm.js":
1895/*!****************************************************************!*\
1896  !*** ./node_modules/@styled-system/position/dist/index.esm.js ***!
1897  \****************************************************************/
1898/*! exports provided: position, default */
1899/***/ (function(module, __webpack_exports__, __webpack_require__) {
1900
1901"use strict";
1902__webpack_require__.r(__webpack_exports__);
1903/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "position", function() { return position; });
1904/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1905
1906var defaults = {
1907  space: [0, 4, 8, 16, 32, 64, 128, 256, 512]
1908};
1909var config = {
1910  position: true,
1911  zIndex: {
1912    property: 'zIndex',
1913    scale: 'zIndices'
1914  },
1915  top: {
1916    property: 'top',
1917    scale: 'space',
1918    defaultScale: defaults.space
1919  },
1920  right: {
1921    property: 'right',
1922    scale: 'space',
1923    defaultScale: defaults.space
1924  },
1925  bottom: {
1926    property: 'bottom',
1927    scale: 'space',
1928    defaultScale: defaults.space
1929  },
1930  left: {
1931    property: 'left',
1932    scale: 'space',
1933    defaultScale: defaults.space
1934  }
1935};
1936var position = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config);
1937/* harmony default export */ __webpack_exports__["default"] = (position);
1938
1939/***/ }),
1940
vendor: 1,039 bytes, lines 1941-1966
1941/***/ "./node_modules/@styled-system/shadow/dist/index.esm.js":
1942/*!**************************************************************!*\
1943  !*** ./node_modules/@styled-system/shadow/dist/index.esm.js ***!
1944  \**************************************************************/
1945/*! exports provided: shadow, default */
1946/***/ (function(module, __webpack_exports__, __webpack_require__) {
1947
1948"use strict";
1949__webpack_require__.r(__webpack_exports__);
1950/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shadow", function() { return shadow; });
1951/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1952
1953var shadow = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])({
1954  boxShadow: {
1955    property: 'boxShadow',
1956    scale: 'shadows'
1957  },
1958  textShadow: {
1959    property: 'textShadow',
1960    scale: 'shadows'
1961  }
1962});
1963/* harmony default export */ __webpack_exports__["default"] = (shadow);
1964
1965/***/ }),
1966
vendor: 4,357 bytes, lines 1967-2107
1967/***/ "./node_modules/@styled-system/space/dist/index.esm.js":
1968/*!*************************************************************!*\
1969  !*** ./node_modules/@styled-system/space/dist/index.esm.js ***!
1970  \*************************************************************/
1971/*! exports provided: margin, padding, space, default */
1972/***/ (function(module, __webpack_exports__, __webpack_require__) {
1973
1974"use strict";
1975__webpack_require__.r(__webpack_exports__);
1976/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "margin", function() { return margin; });
1977/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "padding", function() { return padding; });
1978/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "space", function() { return space; });
1979/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
1980
1981var defaults = {
1982  space: [0, 4, 8, 16, 32, 64, 128, 256, 512]
1983};
1984
1985var isNumber = function isNumber(n) {
1986  return typeof n === 'number' && !isNaN(n);
1987};
1988
1989var getMargin = function getMargin(n, scale) {
1990  if (!isNumber(n)) {
1991    return Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, n, n);
1992  }
1993
1994  var isNegative = n < 0;
1995  var absolute = Math.abs(n);
1996  var value = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, absolute, absolute);
1997
1998  if (!isNumber(value)) {
1999    return isNegative ? '-' + value : value;
2000  }
2001
2002  return value * (isNegative ? -1 : 1);
2003};
2004
2005var configs = {};
2006configs.margin = {
2007  margin: {
2008    property: 'margin',
2009    scale: 'space',
2010    transform: getMargin,
2011    defaultScale: defaults.space
2012  },
2013  marginTop: {
2014    property: 'marginTop',
2015    scale: 'space',
2016    transform: getMargin,
2017    defaultScale: defaults.space
2018  },
2019  marginRight: {
2020    property: 'marginRight',
2021    scale: 'space',
2022    transform: getMargin,
2023    defaultScale: defaults.space
2024  },
2025  marginBottom: {
2026    property: 'marginBottom',
2027    scale: 'space',
2028    transform: getMargin,
2029    defaultScale: defaults.space
2030  },
2031  marginLeft: {
2032    property: 'marginLeft',
2033    scale: 'space',
2034    transform: getMargin,
2035    defaultScale: defaults.space
2036  },
2037  marginX: {
2038    properties: ['marginLeft', 'marginRight'],
2039    scale: 'space',
2040    transform: getMargin,
2041    defaultScale: defaults.space
2042  },
2043  marginY: {
2044    properties: ['marginTop', 'marginBottom'],
2045    scale: 'space',
2046    transform: getMargin,
2047    defaultScale: defaults.space
2048  }
2049};
2050configs.margin.m = configs.margin.margin;
2051configs.margin.mt = configs.margin.marginTop;
2052configs.margin.mr = configs.margin.marginRight;
2053configs.margin.mb = configs.margin.marginBottom;
2054configs.margin.ml = configs.margin.marginLeft;
2055configs.margin.mx = configs.margin.marginX;
2056configs.margin.my = configs.margin.marginY;
2057configs.padding = {
2058  padding: {
2059    property: 'padding',
2060    scale: 'space',
2061    defaultScale: defaults.space
2062  },
2063  paddingTop: {
2064    property: 'paddingTop',
2065    scale: 'space',
2066    defaultScale: defaults.space
2067  },
2068  paddingRight: {
2069    property: 'paddingRight',
2070    scale: 'space',
2071    defaultScale: defaults.space
2072  },
2073  paddingBottom: {
2074    property: 'paddingBottom',
2075    scale: 'space',
2076    defaultScale: defaults.space
2077  },
2078  paddingLeft: {
2079    property: 'paddingLeft',
2080    scale: 'space',
2081    defaultScale: defaults.space
2082  },
2083  paddingX: {
2084    properties: ['paddingLeft', 'paddingRight'],
2085    scale: 'space',
2086    defaultScale: defaults.space
2087  },
2088  paddingY: {
2089    properties: ['paddingTop', 'paddingBottom'],
2090    scale: 'space',
2091    defaultScale: defaults.space
2092  }
2093};
2094configs.padding.p = configs.padding.padding;
2095configs.padding.pt = configs.padding.paddingTop;
2096configs.padding.pr = configs.padding.paddingRight;
2097configs.padding.pb = configs.padding.paddingBottom;
2098configs.padding.pl = configs.padding.paddingLeft;
2099configs.padding.px = configs.padding.paddingX;
2100configs.padding.py = configs.padding.paddingY;
2101var margin = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(configs.margin);
2102var padding = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(configs.padding);
2103var space = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["compose"])(margin, padding);
2104/* harmony default export */ __webpack_exports__["default"] = (space);
2105
2106/***/ }),
2107
vendor: 1,471 bytes, lines 2108-2152
2108/***/ "./node_modules/@styled-system/typography/dist/index.esm.js":
2109/*!******************************************************************!*\
2110  !*** ./node_modules/@styled-system/typography/dist/index.esm.js ***!
2111  \******************************************************************/
2112/*! exports provided: typography, default */
2113/***/ (function(module, __webpack_exports__, __webpack_require__) {
2114
2115"use strict";
2116__webpack_require__.r(__webpack_exports__);
2117/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "typography", function() { return typography; });
2118/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
2119
2120var defaults = {
2121  fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]
2122};
2123var config = {
2124  fontFamily: {
2125    property: 'fontFamily',
2126    scale: 'fonts'
2127  },
2128  fontSize: {
2129    property: 'fontSize',
2130    scale: 'fontSizes',
2131    defaultScale: defaults.fontSizes
2132  },
2133  fontWeight: {
2134    property: 'fontWeight',
2135    scale: 'fontWeights'
2136  },
2137  lineHeight: {
2138    property: 'lineHeight',
2139    scale: 'lineHeights'
2140  },
2141  letterSpacing: {
2142    property: 'letterSpacing',
2143    scale: 'letterSpacings'
2144  },
2145  textAlign: true,
2146  fontStyle: true
2147};
2148var typography = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config);
2149/* harmony default export */ __webpack_exports__["default"] = (typography);
2150
2151/***/ }),
2152
vendor: 2,559 bytes, lines 2153-2211
2153/***/ "./node_modules/@styled-system/variant/dist/index.esm.js":
2154/*!***************************************************************!*\
2155  !*** ./node_modules/@styled-system/variant/dist/index.esm.js ***!
2156  \***************************************************************/
2157/*! exports provided: variant, default, buttonStyle, textStyle, colorStyle */
2158/***/ (function(module, __webpack_exports__, __webpack_require__) {
2159
2160"use strict";
2161__webpack_require__.r(__webpack_exports__);
2162/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "variant", function() { return variant; });
2163/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttonStyle", function() { return buttonStyle; });
2164/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "textStyle", function() { return textStyle; });
2165/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "colorStyle", function() { return colorStyle; });
2166/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
2167/* harmony import */ var _styled_system_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @styled-system/css */ "./node_modules/@styled-system/css/dist/index.esm.js");
2168
2169
2170var variant = function variant(_ref) {
2171  var _config;
2172
2173  var scale = _ref.scale,
2174      _ref$prop = _ref.prop,
2175      prop = _ref$prop === void 0 ? 'variant' : _ref$prop,
2176      _ref$variants = _ref.variants,
2177      variants = _ref$variants === void 0 ? {} : _ref$variants,
2178      key = _ref.key;
2179  var sx;
2180
2181  if (Object.keys(variants).length) {
2182    sx = function sx(value, scale, props) {
2183      return Object(_styled_system_css__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, value, null))(props.theme);
2184    };
2185  } else {
2186    sx = function sx(value, scale) {
2187      return Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, value, null);
2188    };
2189  }
2190
2191  sx.scale = scale || key;
2192  sx.defaults = variants;
2193  var config = (_config = {}, _config[prop] = sx, _config);
2194  var parser = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createParser"])(config);
2195  return parser;
2196};
2197/* harmony default export */ __webpack_exports__["default"] = (variant);
2198var buttonStyle = variant({
2199  key: 'buttons'
2200});
2201var textStyle = variant({
2202  key: 'textStyles',
2203  prop: 'textStyle'
2204});
2205var colorStyle = variant({
2206  key: 'colorStyles',
2207  prop: 'colors'
2208});
2209
2210/***/ }),
2211
vendor: 4,067 bytes, lines 2212-2341
2212/***/ "./node_modules/base64-js/index.js":
2213/*!*****************************************!*\
2214  !*** ./node_modules/base64-js/index.js ***!
2215  \*****************************************/
2216/*! no static exports found */
2217/***/ (function(module, exports, __webpack_require__) {
2218
2219"use strict";
2220
2221
2222exports.byteLength = byteLength;
2223exports.toByteArray = toByteArray;
2224exports.fromByteArray = fromByteArray;
2225var lookup = [];
2226var revLookup = [];
2227var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
2228var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
2229
2230for (var i = 0, len = code.length; i < len; ++i) {
2231  lookup[i] = code[i];
2232  revLookup[code.charCodeAt(i)] = i;
2233} // Support decoding URL-safe base64 strings, as Node.js does.
2234// See: https://en.wikipedia.org/wiki/Base64#URL_applications
2235
2236
2237revLookup['-'.charCodeAt(0)] = 62;
2238revLookup['_'.charCodeAt(0)] = 63;
2239
2240function getLens(b64) {
2241  var len = b64.length;
2242
2243  if (len % 4 > 0) {
2244    throw new Error('Invalid string. Length must be a multiple of 4');
2245  } // Trim off extra bytes after placeholder bytes are found
2246  // See: https://github.com/beatgammit/base64-js/issues/42
2247
2248
2249  var validLen = b64.indexOf('=');
2250  if (validLen === -1) validLen = len;
2251  var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;
2252  return [validLen, placeHoldersLen];
2253} // base64 is 4/3 + up to two characters of the original data
2254
2255
2256function byteLength(b64) {
2257  var lens = getLens(b64);
2258  var validLen = lens[0];
2259  var placeHoldersLen = lens[1];
2260  return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
2261}
2262
2263function _byteLength(b64, validLen, placeHoldersLen) {
2264  return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
2265}
2266
2267function toByteArray(b64) {
2268  var tmp;
2269  var lens = getLens(b64);
2270  var validLen = lens[0];
2271  var placeHoldersLen = lens[1];
2272  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
2273  var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars
2274
2275  var len = placeHoldersLen > 0 ? validLen - 4 : validLen;
2276  var i;
2277
2278  for (i = 0; i < len; i += 4) {
2279    tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];
2280    arr[curByte++] = tmp >> 16 & 0xFF;
2281    arr[curByte++] = tmp >> 8 & 0xFF;
2282    arr[curByte++] = tmp & 0xFF;
2283  }
2284
2285  if (placeHoldersLen === 2) {
2286    tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;
2287    arr[curByte++] = tmp & 0xFF;
2288  }
2289
2290  if (placeHoldersLen === 1) {
2291    tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;
2292    arr[curByte++] = tmp >> 8 & 0xFF;
2293    arr[curByte++] = tmp & 0xFF;
2294  }
2295
2296  return arr;
2297}
2298
2299function tripletToBase64(num) {
2300  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];
2301}
2302
2303function encodeChunk(uint8, start, end) {
2304  var tmp;
2305  var output = [];
2306
2307  for (var i = start; i < end; i += 3) {
2308    tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);
2309    output.push(tripletToBase64(tmp));
2310  }
2311
2312  return output.join('');
2313}
2314
2315function fromByteArray(uint8) {
2316  var tmp;
2317  var len = uint8.length;
2318  var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
2319
2320  var parts = [];
2321  var maxChunkLength = 16383; // must be multiple of 3
2322  // go through the array every three bytes, we'll deal with trailing stuff later
2323
2324  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
2325    parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));
2326  } // pad the end with zeros, but make sure to not forget the extra bytes
2327
2328
2329  if (extraBytes === 1) {
2330    tmp = uint8[len - 1];
2331    parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');
2332  } else if (extraBytes === 2) {
2333    tmp = (uint8[len - 2] << 8) + uint8[len - 1];
2334    parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');
2335  }
2336
2337  return parts.join('');
2338}
2339
2340/***/ }),
2341
vendor: 2,840 bytes, lines 2342-2448
2342/***/ "./node_modules/broadcastchannel-polyfill/index.js":
2343/*!*********************************************************!*\
2344  !*** ./node_modules/broadcastchannel-polyfill/index.js ***!
2345  \*********************************************************/
2346/*! no static exports found */
2347/***/ (function(module, exports) {
2348
2349(function (global) {
2350  var channels = [];
2351
2352  function BroadcastChannel(channel) {
2353    var $this = this;
2354    channel = String(channel);
2355    var id = '$BroadcastChannel$' + channel + '$';
2356    channels[id] = channels[id] || [];
2357    channels[id].push(this);
2358    this._name = channel;
2359    this._id = id;
2360    this._closed = false;
2361    this._mc = new MessageChannel();
2362
2363    this._mc.port1.start();
2364
2365    this._mc.port2.start();
2366
2367    global.addEventListener('storage', function (e) {
2368      if (e.storageArea !== global.localStorage) return;
2369      if (e.newValue == null || e.newValue === '') return;
2370      if (e.key.substring(0, id.length) !== id) return;
2371      var data = JSON.parse(e.newValue);
2372
2373      $this._mc.port2.postMessage(data);
2374    });
2375  }
2376
2377  BroadcastChannel.prototype = {
2378    // BroadcastChannel API
2379    get name() {
2380      return this._name;
2381    },
2382
2383    postMessage: function (message) {
2384      var $this = this;
2385
2386      if (this._closed) {
2387        var e = new Error();
2388        e.name = 'InvalidStateError';
2389        throw e;
2390      }
2391
2392      var value = JSON.stringify(message); // Broadcast to other contexts via storage events...
2393
2394      var key = this._id + String(Date.now()) + '$' + String(Math.random());
2395      global.localStorage.setItem(key, value);
2396      setTimeout(function () {
2397        global.localStorage.removeItem(key);
2398      }, 500); // Broadcast to current context via ports
2399
2400      channels[this._id].forEach(function (bc) {
2401        if (bc === $this) return;
2402
2403        bc._mc.port2.postMessage(JSON.parse(value));
2404      });
2405    },
2406    close: function () {
2407      if (this._closed) return;
2408      this._closed = true;
2409
2410      this._mc.port1.close();
2411
2412      this._mc.port2.close();
2413
2414      var index = channels[this._id].indexOf(this);
2415
2416      channels[this._id].splice(index, 1);
2417    },
2418
2419    // EventTarget API
2420    get onmessage() {
2421      return this._mc.port1.onmessage;
2422    },
2423
2424    set onmessage(value) {
2425      this._mc.port1.onmessage = value;
2426    },
2427
2428    addEventListener: function ()
2429    /*type, listener , useCapture*/
2430    {
2431      return this._mc.port1.addEventListener.apply(this._mc.port1, arguments);
2432    },
2433    removeEventListener: function ()
2434    /*type, listener , useCapture*/
2435    {
2436      return this._mc.port1.removeEventListener.apply(this._mc.port1, arguments);
2437    },
2438    dispatchEvent: function ()
2439    /*event*/
2440    {
2441      return this._mc.port1.dispatchEvent.apply(this._mc.port1, arguments);
2442    }
2443  };
2444  global.BroadcastChannel = global.BroadcastChannel || BroadcastChannel;
2445})(self);
2446
2447/***/ }),
2448
vendor: 49,440 bytes, lines 2449-4313
2449/***/ "./node_modules/buffer/index.js":
2450/*!**************************************!*\
2451  !*** ./node_modules/buffer/index.js ***!
2452  \**************************************/
2453/*! no static exports found */
2454/***/ (function(module, exports, __webpack_require__) {
2455
2456"use strict";
2457/* WEBPACK VAR INJECTION */(function(global) {/*!
2458 * The buffer module from node.js, for the browser.
2459 *
2460 * @author   Feross Aboukhadijeh <http://feross.org>
2461 * @license  MIT
2462 */
2463
2464/* eslint-disable no-proto */
2465
2466
2467var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js");
2468
2469var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js");
2470
2471var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js");
2472
2473exports.Buffer = Buffer;
2474exports.SlowBuffer = SlowBuffer;
2475exports.INSPECT_MAX_BYTES = 50;
2476/**
2477 * If `Buffer.TYPED_ARRAY_SUPPORT`:
2478 *   === true    Use Uint8Array implementation (fastest)
2479 *   === false   Use Object implementation (most compatible, even IE6)
2480 *
2481 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
2482 * Opera 11.6+, iOS 4.2+.
2483 *
2484 * Due to various browser bugs, sometimes the Object implementation will be used even
2485 * when the browser supports typed arrays.
2486 *
2487 * Note:
2488 *
2489 *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
2490 *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
2491 *
2492 *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
2493 *
2494 *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
2495 *     incorrect length in some situations.
2496
2497 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
2498 * get the Object implementation, which is slower but behaves correctly.
2499 */
2500
2501Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();
2502/*
2503 * Export kMaxLength after typed array support is determined.
2504 */
2505
2506exports.kMaxLength = kMaxLength();
2507
2508function typedArraySupport() {
2509  try {
2510    var arr = new Uint8Array(1);
2511    arr.__proto__ = {
2512      __proto__: Uint8Array.prototype,
2513      foo: function () {
2514        return 42;
2515      }
2516    };
2517    return arr.foo() === 42 && // typed array instances can be augmented
2518    typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
2519    arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`
2520  } catch (e) {
2521    return false;
2522  }
2523}
2524
2525function kMaxLength() {
2526  return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;
2527}
2528
2529function createBuffer(that, length) {
2530  if (kMaxLength() < length) {
2531    throw new RangeError('Invalid typed array length');
2532  }
2533
2534  if (Buffer.TYPED_ARRAY_SUPPORT) {
2535    // Return an augmented `Uint8Array` instance, for best performance
2536    that = new Uint8Array(length);
2537    that.__proto__ = Buffer.prototype;
2538  } else {
2539    // Fallback: Return an object instance of the Buffer class
2540    if (that === null) {
2541      that = new Buffer(length);
2542    }
2543
2544    that.length = length;
2545  }
2546
2547  return that;
2548}
2549/**
2550 * The Buffer constructor returns instances of `Uint8Array` that have their
2551 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
2552 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
2553 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
2554 * returns a single octet.
2555 *
2556 * The `Uint8Array` prototype remains unmodified.
2557 */
2558
2559
2560function Buffer(arg, encodingOrOffset, length) {
2561  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
2562    return new Buffer(arg, encodingOrOffset, length);
2563  } // Common case.
2564
2565
2566  if (typeof arg === 'number') {
2567    if (typeof encodingOrOffset === 'string') {
2568      throw new Error('If encoding is specified then the first argument must be a string');
2569    }
2570
2571    return allocUnsafe(this, arg);
2572  }
2573
2574  return from(this, arg, encodingOrOffset, length);
2575}
2576
2577Buffer.poolSize = 8192; // not used by this implementation
2578// TODO: Legacy, not needed anymore. Remove in next major version.
2579
2580Buffer._augment = function (arr) {
2581  arr.__proto__ = Buffer.prototype;
2582  return arr;
2583};
2584
2585function from(that, value, encodingOrOffset, length) {
2586  if (typeof value === 'number') {
2587    throw new TypeError('"value" argument must not be a number');
2588  }
2589
2590  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
2591    return fromArrayBuffer(that, value, encodingOrOffset, length);
2592  }
2593
2594  if (typeof value === 'string') {
2595    return fromString(that, value, encodingOrOffset);
2596  }
2597
2598  return fromObject(that, value);
2599}
2600/**
2601 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
2602 * if value is a number.
2603 * Buffer.from(str[, encoding])
2604 * Buffer.from(array)
2605 * Buffer.from(buffer)
2606 * Buffer.from(arrayBuffer[, byteOffset[, length]])
2607 **/
2608
2609
2610Buffer.from = function (value, encodingOrOffset, length) {
2611  return from(null, value, encodingOrOffset, length);
2612};
2613
2614if (Buffer.TYPED_ARRAY_SUPPORT) {
2615  Buffer.prototype.__proto__ = Uint8Array.prototype;
2616  Buffer.__proto__ = Uint8Array;
2617
2618  if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {
2619    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
2620    Object.defineProperty(Buffer, Symbol.species, {
2621      value: null,
2622      configurable: true
2623    });
2624  }
2625}
2626
2627function assertSize(size) {
2628  if (typeof size !== 'number') {
2629    throw new TypeError('"size" argument must be a number');
2630  } else if (size < 0) {
2631    throw new RangeError('"size" argument must not be negative');
2632  }
2633}
2634
2635function alloc(that, size, fill, encoding) {
2636  assertSize(size);
2637
2638  if (size <= 0) {
2639    return createBuffer(that, size);
2640  }
2641
2642  if (fill !== undefined) {
2643    // Only pay attention to encoding if it's a string. This
2644    // prevents accidentally sending in a number that would
2645    // be interpretted as a start offset.
2646    return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);
2647  }
2648
2649  return createBuffer(that, size);
2650}
2651/**
2652 * Creates a new filled Buffer instance.
2653 * alloc(size[, fill[, encoding]])
2654 **/
2655
2656
2657Buffer.alloc = function (size, fill, encoding) {
2658  return alloc(null, size, fill, encoding);
2659};
2660
2661function allocUnsafe(that, size) {
2662  assertSize(size);
2663  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
2664
2665  if (!Buffer.TYPED_ARRAY_SUPPORT) {
2666    for (var i = 0; i < size; ++i) {
2667      that[i] = 0;
2668    }
2669  }
2670
2671  return that;
2672}
2673/**
2674 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
2675 * */
2676
2677
2678Buffer.allocUnsafe = function (size) {
2679  return allocUnsafe(null, size);
2680};
2681/**
2682 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
2683 */
2684
2685
2686Buffer.allocUnsafeSlow = function (size) {
2687  return allocUnsafe(null, size);
2688};
2689
2690function fromString(that, string, encoding) {
2691  if (typeof encoding !== 'string' || encoding === '') {
2692    encoding = 'utf8';
2693  }
2694
2695  if (!Buffer.isEncoding(encoding)) {
2696    throw new TypeError('"encoding" must be a valid string encoding');
2697  }
2698
2699  var length = byteLength(string, encoding) | 0;
2700  that = createBuffer(that, length);
2701  var actual = that.write(string, encoding);
2702
2703  if (actual !== length) {
2704    // Writing a hex string, for example, that contains invalid characters will
2705    // cause everything after the first invalid character to be ignored. (e.g.
2706    // 'abxxcd' will be treated as 'ab')
2707    that = that.slice(0, actual);
2708  }
2709
2710  return that;
2711}
2712
2713function fromArrayLike(that, array) {
2714  var length = array.length < 0 ? 0 : checked(array.length) | 0;
2715  that = createBuffer(that, length);
2716
2717  for (var i = 0; i < length; i += 1) {
2718    that[i] = array[i] & 255;
2719  }
2720
2721  return that;
2722}
2723
2724function fromArrayBuffer(that, array, byteOffset, length) {
2725  array.byteLength; // this throws if `array` is not a valid ArrayBuffer
2726
2727  if (byteOffset < 0 || array.byteLength < byteOffset) {
2728    throw new RangeError('\'offset\' is out of bounds');
2729  }
2730
2731  if (array.byteLength < byteOffset + (length || 0)) {
2732    throw new RangeError('\'length\' is out of bounds');
2733  }
2734
2735  if (byteOffset === undefined && length === undefined) {
2736    array = new Uint8Array(array);
2737  } else if (length === undefined) {
2738    array = new Uint8Array(array, byteOffset);
2739  } else {
2740    array = new Uint8Array(array, byteOffset, length);
2741  }
2742
2743  if (Buffer.TYPED_ARRAY_SUPPORT) {
2744    // Return an augmented `Uint8Array` instance, for best performance
2745    that = array;
2746    that.__proto__ = Buffer.prototype;
2747  } else {
2748    // Fallback: Return an object instance of the Buffer class
2749    that = fromArrayLike(that, array);
2750  }
2751
2752  return that;
2753}
2754
2755function fromObject(that, obj) {
2756  if (Buffer.isBuffer(obj)) {
2757    var len = checked(obj.length) | 0;
2758    that = createBuffer(that, len);
2759
2760    if (that.length === 0) {
2761      return that;
2762    }
2763
2764    obj.copy(that, 0, 0, len);
2765    return that;
2766  }
2767
2768  if (obj) {
2769    if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {
2770      if (typeof obj.length !== 'number' || isnan(obj.length)) {
2771        return createBuffer(that, 0);
2772      }
2773
2774      return fromArrayLike(that, obj);
2775    }
2776
2777    if (obj.type === 'Buffer' && isArray(obj.data)) {
2778      return fromArrayLike(that, obj.data);
2779    }
2780  }
2781
2782  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');
2783}
2784
2785function checked(length) {
2786  // Note: cannot use `length < kMaxLength()` here because that fails when
2787  // length is NaN (which is otherwise coerced to zero.)
2788  if (length >= kMaxLength()) {
2789    throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');
2790  }
2791
2792  return length | 0;
2793}
2794
2795function SlowBuffer(length) {
2796  if (+length != length) {
2797    // eslint-disable-line eqeqeq
2798    length = 0;
2799  }
2800
2801  return Buffer.alloc(+length);
2802}
2803
2804Buffer.isBuffer = function isBuffer(b) {
2805  return !!(b != null && b._isBuffer);
2806};
2807
2808Buffer.compare = function compare(a, b) {
2809  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
2810    throw new TypeError('Arguments must be Buffers');
2811  }
2812
2813  if (a === b) return 0;
2814  var x = a.length;
2815  var y = b.length;
2816
2817  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
2818    if (a[i] !== b[i]) {
2819      x = a[i];
2820      y = b[i];
2821      break;
2822    }
2823  }
2824
2825  if (x < y) return -1;
2826  if (y < x) return 1;
2827  return 0;
2828};
2829
2830Buffer.isEncoding = function isEncoding(encoding) {
2831  switch (String(encoding).toLowerCase()) {
2832    case 'hex':
2833    case 'utf8':
2834    case 'utf-8':
2835    case 'ascii':
2836    case 'latin1':
2837    case 'binary':
2838    case 'base64':
2839    case 'ucs2':
2840    case 'ucs-2':
2841    case 'utf16le':
2842    case 'utf-16le':
2843      return true;
2844
2845    default:
2846      return false;
2847  }
2848};
2849
2850Buffer.concat = function concat(list, length) {
2851  if (!isArray(list)) {
2852    throw new TypeError('"list" argument must be an Array of Buffers');
2853  }
2854
2855  if (list.length === 0) {
2856    return Buffer.alloc(0);
2857  }
2858
2859  var i;
2860
2861  if (length === undefined) {
2862    length = 0;
2863
2864    for (i = 0; i < list.length; ++i) {
2865      length += list[i].length;
2866    }
2867  }
2868
2869  var buffer = Buffer.allocUnsafe(length);
2870  var pos = 0;
2871
2872  for (i = 0; i < list.length; ++i) {
2873    var buf = list[i];
2874
2875    if (!Buffer.isBuffer(buf)) {
2876      throw new TypeError('"list" argument must be an Array of Buffers');
2877    }
2878
2879    buf.copy(buffer, pos);
2880    pos += buf.length;
2881  }
2882
2883  return buffer;
2884};
2885
2886function byteLength(string, encoding) {
2887  if (Buffer.isBuffer(string)) {
2888    return string.length;
2889  }
2890
2891  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
2892    return string.byteLength;
2893  }
2894
2895  if (typeof string !== 'string') {
2896    string = '' + string;
2897  }
2898
2899  var len = string.length;
2900  if (len === 0) return 0; // Use a for loop to avoid recursion
2901
2902  var loweredCase = false;
2903
2904  for (;;) {
2905    switch (encoding) {
2906      case 'ascii':
2907      case 'latin1':
2908      case 'binary':
2909        return len;
2910
2911      case 'utf8':
2912      case 'utf-8':
2913      case undefined:
2914        return utf8ToBytes(string).length;
2915
2916      case 'ucs2':
2917      case 'ucs-2':
2918      case 'utf16le':
2919      case 'utf-16le':
2920        return len * 2;
2921
2922      case 'hex':
2923        return len >>> 1;
2924
2925      case 'base64':
2926        return base64ToBytes(string).length;
2927
2928      default:
2929        if (loweredCase) return utf8ToBytes(string).length; // assume utf8
2930
2931        encoding = ('' + encoding).toLowerCase();
2932        loweredCase = true;
2933    }
2934  }
2935}
2936
2937Buffer.byteLength = byteLength;
2938
2939function slowToString(encoding, start, end) {
2940  var loweredCase = false; // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
2941  // property of a typed array.
2942  // This behaves neither like String nor Uint8Array in that we set start/end
2943  // to their upper/lower bounds if the value passed is out of range.
2944  // undefined is handled specially as per ECMA-262 6th Edition,
2945  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
2946
2947  if (start === undefined || start < 0) {
2948    start = 0;
2949  } // Return early if start > this.length. Done here to prevent potential uint32
2950  // coercion fail below.
2951
2952
2953  if (start > this.length) {
2954    return '';
2955  }
2956
2957  if (end === undefined || end > this.length) {
2958    end = this.length;
2959  }
2960
2961  if (end <= 0) {
2962    return '';
2963  } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
2964
2965
2966  end >>>= 0;
2967  start >>>= 0;
2968
2969  if (end <= start) {
2970    return '';
2971  }
2972
2973  if (!encoding) encoding = 'utf8';
2974
2975  while (true) {
2976    switch (encoding) {
2977      case 'hex':
2978        return hexSlice(this, start, end);
2979
2980      case 'utf8':
2981      case 'utf-8':
2982        return utf8Slice(this, start, end);
2983
2984      case 'ascii':
2985        return asciiSlice(this, start, end);
2986
2987      case 'latin1':
2988      case 'binary':
2989        return latin1Slice(this, start, end);
2990
2991      case 'base64':
2992        return base64Slice(this, start, end);
2993
2994      case 'ucs2':
2995      case 'ucs-2':
2996      case 'utf16le':
2997      case 'utf-16le':
2998        return utf16leSlice(this, start, end);
2999
3000      default:
3001        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
3002        encoding = (encoding + '').toLowerCase();
3003        loweredCase = true;
3004    }
3005  }
3006} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
3007// Buffer instances.
3008
3009
3010Buffer.prototype._isBuffer = true;
3011
3012function swap(b, n, m) {
3013  var i = b[n];
3014  b[n] = b[m];
3015  b[m] = i;
3016}
3017
3018Buffer.prototype.swap16 = function swap16() {
3019  var len = this.length;
3020
3021  if (len % 2 !== 0) {
3022    throw new RangeError('Buffer size must be a multiple of 16-bits');
3023  }
3024
3025  for (var i = 0; i < len; i += 2) {
3026    swap(this, i, i + 1);
3027  }
3028
3029  return this;
3030};
3031
3032Buffer.prototype.swap32 = function swap32() {
3033  var len = this.length;
3034
3035  if (len % 4 !== 0) {
3036    throw new RangeError('Buffer size must be a multiple of 32-bits');
3037  }
3038
3039  for (var i = 0; i < len; i += 4) {
3040    swap(this, i, i + 3);
3041    swap(this, i + 1, i + 2);
3042  }
3043
3044  return this;
3045};
3046
3047Buffer.prototype.swap64 = function swap64() {
3048  var len = this.length;
3049
3050  if (len % 8 !== 0) {
3051    throw new RangeError('Buffer size must be a multiple of 64-bits');
3052  }
3053
3054  for (var i = 0; i < len; i += 8) {
3055    swap(this, i, i + 7);
3056    swap(this, i + 1, i + 6);
3057    swap(this, i + 2, i + 5);
3058    swap(this, i + 3, i + 4);
3059  }
3060
3061  return this;
3062};
3063
3064Buffer.prototype.toString = function toString() {
3065  var length = this.length | 0;
3066  if (length === 0) return '';
3067  if (arguments.length === 0) return utf8Slice(this, 0, length);
3068  return slowToString.apply(this, arguments);
3069};
3070
3071Buffer.prototype.equals = function equals(b) {
3072  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');
3073  if (this === b) return true;
3074  return Buffer.compare(this, b) === 0;
3075};
3076
3077Buffer.prototype.inspect = function inspect() {
3078  var str = '';
3079  var max = exports.INSPECT_MAX_BYTES;
3080
3081  if (this.length > 0) {
3082    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
3083    if (this.length > max) str += ' ... ';
3084  }
3085
3086  return '<Buffer ' + str + '>';
3087};
3088
3089Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
3090  if (!Buffer.isBuffer(target)) {
3091    throw new TypeError('Argument must be a Buffer');
3092  }
3093
3094  if (start === undefined) {
3095    start = 0;
3096  }
3097
3098  if (end === undefined) {
3099    end = target ? target.length : 0;
3100  }
3101
3102  if (thisStart === undefined) {
3103    thisStart = 0;
3104  }
3105
3106  if (thisEnd === undefined) {
3107    thisEnd = this.length;
3108  }
3109
3110  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
3111    throw new RangeError('out of range index');
3112  }
3113
3114  if (thisStart >= thisEnd && start >= end) {
3115    return 0;
3116  }
3117
3118  if (thisStart >= thisEnd) {
3119    return -1;
3120  }
3121
3122  if (start >= end) {
3123    return 1;
3124  }
3125
3126  start >>>= 0;
3127  end >>>= 0;
3128  thisStart >>>= 0;
3129  thisEnd >>>= 0;
3130  if (this === target) return 0;
3131  var x = thisEnd - thisStart;
3132  var y = end - start;
3133  var len = Math.min(x, y);
3134  var thisCopy = this.slice(thisStart, thisEnd);
3135  var targetCopy = target.slice(start, end);
3136
3137  for (var i = 0; i < len; ++i) {
3138    if (thisCopy[i] !== targetCopy[i]) {
3139      x = thisCopy[i];
3140      y = targetCopy[i];
3141      break;
3142    }
3143  }
3144
3145  if (x < y) return -1;
3146  if (y < x) return 1;
3147  return 0;
3148}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
3149// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
3150//
3151// Arguments:
3152// - buffer - a Buffer to search
3153// - val - a string, Buffer, or number
3154// - byteOffset - an index into `buffer`; will be clamped to an int32
3155// - encoding - an optional encoding, relevant is val is a string
3156// - dir - true for indexOf, false for lastIndexOf
3157
3158
3159function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
3160  // Empty buffer means no match
3161  if (buffer.length === 0) return -1; // Normalize byteOffset
3162
3163  if (typeof byteOffset === 'string') {
3164    encoding = byteOffset;
3165    byteOffset = 0;
3166  } else if (byteOffset > 0x7fffffff) {
3167    byteOffset = 0x7fffffff;
3168  } else if (byteOffset < -0x80000000) {
3169    byteOffset = -0x80000000;
3170  }
3171
3172  byteOffset = +byteOffset; // Coerce to Number.
3173
3174  if (isNaN(byteOffset)) {
3175    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
3176    byteOffset = dir ? 0 : buffer.length - 1;
3177  } // Normalize byteOffset: negative offsets start from the end of the buffer
3178
3179
3180  if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
3181
3182  if (byteOffset >= buffer.length) {
3183    if (dir) return -1;else byteOffset = buffer.length - 1;
3184  } else if (byteOffset < 0) {
3185    if (dir) byteOffset = 0;else return -1;
3186  } // Normalize val
3187
3188
3189  if (typeof val === 'string') {
3190    val = Buffer.from(val, encoding);
3191  } // Finally, search either indexOf (if dir is true) or lastIndexOf
3192
3193
3194  if (Buffer.isBuffer(val)) {
3195    // Special case: looking for empty string/buffer always fails
3196    if (val.length === 0) {
3197      return -1;
3198    }
3199
3200    return arrayIndexOf(buffer, val, byteOffset, encoding, dir);
3201  } else if (typeof val === 'number') {
3202    val = val & 0xFF; // Search for a byte value [0-255]
3203
3204    if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {
3205      if (dir) {
3206        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
3207      } else {
3208        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
3209      }
3210    }
3211
3212    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);
3213  }
3214
3215  throw new TypeError('val must be string, number or Buffer');
3216}
3217
3218function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
3219  var indexSize = 1;
3220  var arrLength = arr.length;
3221  var valLength = val.length;
3222
3223  if (encoding !== undefined) {
3224    encoding = String(encoding).toLowerCase();
3225
3226    if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {
3227      if (arr.length < 2 || val.length < 2) {
3228        return -1;
3229      }
3230
3231      indexSize = 2;
3232      arrLength /= 2;
3233      valLength /= 2;
3234      byteOffset /= 2;
3235    }
3236  }
3237
3238  function read(buf, i) {
3239    if (indexSize === 1) {
3240      return buf[i];
3241    } else {
3242      return buf.readUInt16BE(i * indexSize);
3243    }
3244  }
3245
3246  var i;
3247
3248  if (dir) {
3249    var foundIndex = -1;
3250
3251    for (i = byteOffset; i < arrLength; i++) {
3252      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
3253        if (foundIndex === -1) foundIndex = i;
3254        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;
3255      } else {
3256        if (foundIndex !== -1) i -= i - foundIndex;
3257        foundIndex = -1;
3258      }
3259    }
3260  } else {
3261    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
3262
3263    for (i = byteOffset; i >= 0; i--) {
3264      var found = true;
3265
3266      for (var j = 0; j < valLength; j++) {
3267        if (read(arr, i + j) !== read(val, j)) {
3268          found = false;
3269          break;
3270        }
3271      }
3272
3273      if (found) return i;
3274    }
3275  }
3276
3277  return -1;
3278}
3279
3280Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
3281  return this.indexOf(val, byteOffset, encoding) !== -1;
3282};
3283
3284Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
3285  return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
3286};
3287
3288Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
3289  return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
3290};
3291
3292function hexWrite(buf, string, offset, length) {
3293  offset = Number(offset) || 0;
3294  var remaining = buf.length - offset;
3295
3296  if (!length) {
3297    length = remaining;
3298  } else {
3299    length = Number(length);
3300
3301    if (length > remaining) {
3302      length = remaining;
3303    }
3304  } // must be an even number of digits
3305
3306
3307  var strLen = string.length;
3308  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');
3309
3310  if (length > strLen / 2) {
3311    length = strLen / 2;
3312  }
3313
3314  for (var i = 0; i < length; ++i) {
3315    var parsed = parseInt(string.substr(i * 2, 2), 16);
3316    if (isNaN(parsed)) return i;
3317    buf[offset + i] = parsed;
3318  }
3319
3320  return i;
3321}
3322
3323function utf8Write(buf, string, offset, length) {
3324  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
3325}
3326
3327function asciiWrite(buf, string, offset, length) {
3328  return blitBuffer(asciiToBytes(string), buf, offset, length);
3329}
3330
3331function latin1Write(buf, string, offset, length) {
3332  return asciiWrite(buf, string, offset, length);
3333}
3334
3335function base64Write(buf, string, offset, length) {
3336  return blitBuffer(base64ToBytes(string), buf, offset, length);
3337}
3338
3339function ucs2Write(buf, string, offset, length) {
3340  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
3341}
3342
3343Buffer.prototype.write = function write(string, offset, length, encoding) {
3344  // Buffer#write(string)
3345  if (offset === undefined) {
3346    encoding = 'utf8';
3347    length = this.length;
3348    offset = 0; // Buffer#write(string, encoding)
3349  } else if (length === undefined && typeof offset === 'string') {
3350    encoding = offset;
3351    length = this.length;
3352    offset = 0; // Buffer#write(string, offset[, length][, encoding])
3353  } else if (isFinite(offset)) {
3354    offset = offset | 0;
3355
3356    if (isFinite(length)) {
3357      length = length | 0;
3358      if (encoding === undefined) encoding = 'utf8';
3359    } else {
3360      encoding = length;
3361      length = undefined;
3362    } // legacy write(string, encoding, offset, length) - remove in v0.13
3363
3364  } else {
3365    throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');
3366  }
3367
3368  var remaining = this.length - offset;
3369  if (length === undefined || length > remaining) length = remaining;
3370
3371  if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
3372    throw new RangeError('Attempt to write outside buffer bounds');
3373  }
3374
3375  if (!encoding) encoding = 'utf8';
3376  var loweredCase = false;
3377
3378  for (;;) {
3379    switch (encoding) {
3380      case 'hex':
3381        return hexWrite(this, string, offset, length);
3382
3383      case 'utf8':
3384      case 'utf-8':
3385        return utf8Write(this, string, offset, length);
3386
3387      case 'ascii':
3388        return asciiWrite(this, string, offset, length);
3389
3390      case 'latin1':
3391      case 'binary':
3392        return latin1Write(this, string, offset, length);
3393
3394      case 'base64':
3395        // Warning: maxLength not taken into account in base64Write
3396        return base64Write(this, string, offset, length);
3397
3398      case 'ucs2':
3399      case 'ucs-2':
3400      case 'utf16le':
3401      case 'utf-16le':
3402        return ucs2Write(this, string, offset, length);
3403
3404      default:
3405        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
3406        encoding = ('' + encoding).toLowerCase();
3407        loweredCase = true;
3408    }
3409  }
3410};
3411
3412Buffer.prototype.toJSON = function toJSON() {
3413  return {
3414    type: 'Buffer',
3415    data: Array.prototype.slice.call(this._arr || this, 0)
3416  };
3417};
3418
3419function base64Slice(buf, start, end) {
3420  if (start === 0 && end === buf.length) {
3421    return base64.fromByteArray(buf);
3422  } else {
3423    return base64.fromByteArray(buf.slice(start, end));
3424  }
3425}
3426
3427function utf8Slice(buf, start, end) {
3428  end = Math.min(buf.length, end);
3429  var res = [];
3430  var i = start;
3431
3432  while (i < end) {
3433    var firstByte = buf[i];
3434    var codePoint = null;
3435    var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;
3436
3437    if (i + bytesPerSequence <= end) {
3438      var secondByte, thirdByte, fourthByte, tempCodePoint;
3439
3440      switch (bytesPerSequence) {
3441        case 1:
3442          if (firstByte < 0x80) {
3443            codePoint = firstByte;
3444          }
3445
3446          break;
3447
3448        case 2:
3449          secondByte = buf[i + 1];
3450
3451          if ((secondByte & 0xC0) === 0x80) {
3452            tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;
3453
3454            if (tempCodePoint > 0x7F) {
3455              codePoint = tempCodePoint;
3456            }
3457          }
3458
3459          break;
3460
3461        case 3:
3462          secondByte = buf[i + 1];
3463          thirdByte = buf[i + 2];
3464
3465          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
3466            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;
3467
3468            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
3469              codePoint = tempCodePoint;
3470            }
3471          }
3472
3473          break;
3474
3475        case 4:
3476          secondByte = buf[i + 1];
3477          thirdByte = buf[i + 2];
3478          fourthByte = buf[i + 3];
3479
3480          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
3481            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;
3482
3483            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
3484              codePoint = tempCodePoint;
3485            }
3486          }
3487
3488      }
3489    }
3490
3491    if (codePoint === null) {
3492      // we did not generate a valid codePoint so insert a
3493      // replacement char (U+FFFD) and advance only 1 byte
3494      codePoint = 0xFFFD;
3495      bytesPerSequence = 1;
3496    } else if (codePoint > 0xFFFF) {
3497      // encode to utf16 (surrogate pair dance)
3498      codePoint -= 0x10000;
3499      res.push(codePoint >>> 10 & 0x3FF | 0xD800);
3500      codePoint = 0xDC00 | codePoint & 0x3FF;
3501    }
3502
3503    res.push(codePoint);
3504    i += bytesPerSequence;
3505  }
3506
3507  return decodeCodePointsArray(res);
3508} // Based on http://stackoverflow.com/a/22747272/680742, the browser with
3509// the lowest limit is Chrome, with 0x10000 args.
3510// We go 1 magnitude less, for safety
3511
3512
3513var MAX_ARGUMENTS_LENGTH = 0x1000;
3514
3515function decodeCodePointsArray(codePoints) {
3516  var len = codePoints.length;
3517
3518  if (len <= MAX_ARGUMENTS_LENGTH) {
3519    return String.fromCharCode.apply(String, codePoints); // avoid extra slice()
3520  } // Decode in chunks to avoid "call stack size exceeded".
3521
3522
3523  var res = '';
3524  var i = 0;
3525
3526  while (i < len) {
3527    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));
3528  }
3529
3530  return res;
3531}
3532
3533function asciiSlice(buf, start, end) {
3534  var ret = '';
3535  end = Math.min(buf.length, end);
3536
3537  for (var i = start; i < end; ++i) {
3538    ret += String.fromCharCode(buf[i] & 0x7F);
3539  }
3540
3541  return ret;
3542}
3543
3544function latin1Slice(buf, start, end) {
3545  var ret = '';
3546  end = Math.min(buf.length, end);
3547
3548  for (var i = start; i < end; ++i) {
3549    ret += String.fromCharCode(buf[i]);
3550  }
3551
3552  return ret;
3553}
3554
3555function hexSlice(buf, start, end) {
3556  var len = buf.length;
3557  if (!start || start < 0) start = 0;
3558  if (!end || end < 0 || end > len) end = len;
3559  var out = '';
3560
3561  for (var i = start; i < end; ++i) {
3562    out += toHex(buf[i]);
3563  }
3564
3565  return out;
3566}
3567
3568function utf16leSlice(buf, start, end) {
3569  var bytes = buf.slice(start, end);
3570  var res = '';
3571
3572  for (var i = 0; i < bytes.length; i += 2) {
3573    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
3574  }
3575
3576  return res;
3577}
3578
3579Buffer.prototype.slice = function slice(start, end) {
3580  var len = this.length;
3581  start = ~~start;
3582  end = end === undefined ? len : ~~end;
3583
3584  if (start < 0) {
3585    start += len;
3586    if (start < 0) start = 0;
3587  } else if (start > len) {
3588    start = len;
3589  }
3590
3591  if (end < 0) {
3592    end += len;
3593    if (end < 0) end = 0;
3594  } else if (end > len) {
3595    end = len;
3596  }
3597
3598  if (end < start) end = start;
3599  var newBuf;
3600
3601  if (Buffer.TYPED_ARRAY_SUPPORT) {
3602    newBuf = this.subarray(start, end);
3603    newBuf.__proto__ = Buffer.prototype;
3604  } else {
3605    var sliceLen = end - start;
3606    newBuf = new Buffer(sliceLen, undefined);
3607
3608    for (var i = 0; i < sliceLen; ++i) {
3609      newBuf[i] = this[i + start];
3610    }
3611  }
3612
3613  return newBuf;
3614};
3615/*
3616 * Need to make sure that buffer isn't trying to write out of bounds.
3617 */
3618
3619
3620function checkOffset(offset, ext, length) {
3621  if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');
3622  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');
3623}
3624
3625Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {
3626  offset = offset | 0;
3627  byteLength = byteLength | 0;
3628  if (!noAssert) checkOffset(offset, byteLength, this.length);
3629  var val = this[offset];
3630  var mul = 1;
3631  var i = 0;
3632
3633  while (++i < byteLength && (mul *= 0x100)) {
3634    val += this[offset + i] * mul;
3635  }
3636
3637  return val;
3638};
3639
3640Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {
3641  offset = offset | 0;
3642  byteLength = byteLength | 0;
3643
3644  if (!noAssert) {
3645    checkOffset(offset, byteLength, this.length);
3646  }
3647
3648  var val = this[offset + --byteLength];
3649  var mul = 1;
3650
3651  while (byteLength > 0 && (mul *= 0x100)) {
3652    val += this[offset + --byteLength] * mul;
3653  }
3654
3655  return val;
3656};
3657
3658Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {
3659  if (!noAssert) checkOffset(offset, 1, this.length);
3660  return this[offset];
3661};
3662
3663Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
3664  if (!noAssert) checkOffset(offset, 2, this.length);
3665  return this[offset] | this[offset + 1] << 8;
3666};
3667
3668Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
3669  if (!noAssert) checkOffset(offset, 2, this.length);
3670  return this[offset] << 8 | this[offset + 1];
3671};
3672
3673Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
3674  if (!noAssert) checkOffset(offset, 4, this.length);
3675  return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;
3676};
3677
3678Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
3679  if (!noAssert) checkOffset(offset, 4, this.length);
3680  return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
3681};
3682
3683Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {
3684  offset = offset | 0;
3685  byteLength = byteLength | 0;
3686  if (!noAssert) checkOffset(offset, byteLength, this.length);
3687  var val = this[offset];
3688  var mul = 1;
3689  var i = 0;
3690
3691  while (++i < byteLength && (mul *= 0x100)) {
3692    val += this[offset + i] * mul;
3693  }
3694
3695  mul *= 0x80;
3696  if (val >= mul) val -= Math.pow(2, 8 * byteLength);
3697  return val;
3698};
3699
3700Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {
3701  offset = offset | 0;
3702  byteLength = byteLength | 0;
3703  if (!noAssert) checkOffset(offset, byteLength, this.length);
3704  var i = byteLength;
3705  var mul = 1;
3706  var val = this[offset + --i];
3707
3708  while (i > 0 && (mul *= 0x100)) {
3709    val += this[offset + --i] * mul;
3710  }
3711
3712  mul *= 0x80;
3713  if (val >= mul) val -= Math.pow(2, 8 * byteLength);
3714  return val;
3715};
3716
3717Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {
3718  if (!noAssert) checkOffset(offset, 1, this.length);
3719  if (!(this[offset] & 0x80)) return this[offset];
3720  return (0xff - this[offset] + 1) * -1;
3721};
3722
3723Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
3724  if (!noAssert) checkOffset(offset, 2, this.length);
3725  var val = this[offset] | this[offset + 1] << 8;
3726  return val & 0x8000 ? val | 0xFFFF0000 : val;
3727};
3728
3729Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
3730  if (!noAssert) checkOffset(offset, 2, this.length);
3731  var val = this[offset + 1] | this[offset] << 8;
3732  return val & 0x8000 ? val | 0xFFFF0000 : val;
3733};
3734
3735Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
3736  if (!noAssert) checkOffset(offset, 4, this.length);
3737  return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
3738};
3739
3740Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
3741  if (!noAssert) checkOffset(offset, 4, this.length);
3742  return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
3743};
3744
3745Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
3746  if (!noAssert) checkOffset(offset, 4, this.length);
3747  return ieee754.read(this, offset, true, 23, 4);
3748};
3749
3750Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
3751  if (!noAssert) checkOffset(offset, 4, this.length);
3752  return ieee754.read(this, offset, false, 23, 4);
3753};
3754
3755Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
3756  if (!noAssert) checkOffset(offset, 8, this.length);
3757  return ieee754.read(this, offset, true, 52, 8);
3758};
3759
3760Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
3761  if (!noAssert) checkOffset(offset, 8, this.length);
3762  return ieee754.read(this, offset, false, 52, 8);
3763};
3764
3765function checkInt(buf, value, offset, ext, max, min) {
3766  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance');
3767  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds');
3768  if (offset + ext > buf.length) throw new RangeError('Index out of range');
3769}
3770
3771Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {
3772  value = +value;
3773  offset = offset | 0;
3774  byteLength = byteLength | 0;
3775
3776  if (!noAssert) {
3777    var maxBytes = Math.pow(2, 8 * byteLength) - 1;
3778    checkInt(this, value, offset, byteLength, maxBytes, 0);
3779  }
3780
3781  var mul = 1;
3782  var i = 0;
3783  this[offset] = value & 0xFF;
3784
3785  while (++i < byteLength && (mul *= 0x100)) {
3786    this[offset + i] = value / mul & 0xFF;
3787  }
3788
3789  return offset + byteLength;
3790};
3791
3792Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {
3793  value = +value;
3794  offset = offset | 0;
3795  byteLength = byteLength | 0;
3796
3797  if (!noAssert) {
3798    var maxBytes = Math.pow(2, 8 * byteLength) - 1;
3799    checkInt(this, value, offset, byteLength, maxBytes, 0);
3800  }
3801
3802  var i = byteLength - 1;
3803  var mul = 1;
3804  this[offset + i] = value & 0xFF;
3805
3806  while (--i >= 0 && (mul *= 0x100)) {
3807    this[offset + i] = value / mul & 0xFF;
3808  }
3809
3810  return offset + byteLength;
3811};
3812
3813Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
3814  value = +value;
3815  offset = offset | 0;
3816  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
3817  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
3818  this[offset] = value & 0xff;
3819  return offset + 1;
3820};
3821
3822function objectWriteUInt16(buf, value, offset, littleEndian) {
3823  if (value < 0) value = 0xffff + value + 1;
3824
3825  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
3826    buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;
3827  }
3828}
3829
3830Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
3831  value = +value;
3832  offset = offset | 0;
3833  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
3834
3835  if (Buffer.TYPED_ARRAY_SUPPORT) {
3836    this[offset] = value & 0xff;
3837    this[offset + 1] = value >>> 8;
3838  } else {
3839    objectWriteUInt16(this, value, offset, true);
3840  }
3841
3842  return offset + 2;
3843};
3844
3845Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
3846  value = +value;
3847  offset = offset | 0;
3848  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
3849
3850  if (Buffer.TYPED_ARRAY_SUPPORT) {
3851    this[offset] = value >>> 8;
3852    this[offset + 1] = value & 0xff;
3853  } else {
3854    objectWriteUInt16(this, value, offset, false);
3855  }
3856
3857  return offset + 2;
3858};
3859
3860function objectWriteUInt32(buf, value, offset, littleEndian) {
3861  if (value < 0) value = 0xffffffff + value + 1;
3862
3863  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
3864    buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;
3865  }
3866}
3867
3868Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
3869  value = +value;
3870  offset = offset | 0;
3871  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
3872
3873  if (Buffer.TYPED_ARRAY_SUPPORT) {
3874    this[offset + 3] = value >>> 24;
3875    this[offset + 2] = value >>> 16;
3876    this[offset + 1] = value >>> 8;
3877    this[offset] = value & 0xff;
3878  } else {
3879    objectWriteUInt32(this, value, offset, true);
3880  }
3881
3882  return offset + 4;
3883};
3884
3885Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
3886  value = +value;
3887  offset = offset | 0;
3888  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
3889
3890  if (Buffer.TYPED_ARRAY_SUPPORT) {
3891    this[offset] = value >>> 24;
3892    this[offset + 1] = value >>> 16;
3893    this[offset + 2] = value >>> 8;
3894    this[offset + 3] = value & 0xff;
3895  } else {
3896    objectWriteUInt32(this, value, offset, false);
3897  }
3898
3899  return offset + 4;
3900};
3901
3902Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {
3903  value = +value;
3904  offset = offset | 0;
3905
3906  if (!noAssert) {
3907    var limit = Math.pow(2, 8 * byteLength - 1);
3908    checkInt(this, value, offset, byteLength, limit - 1, -limit);
3909  }
3910
3911  var i = 0;
3912  var mul = 1;
3913  var sub = 0;
3914  this[offset] = value & 0xFF;
3915
3916  while (++i < byteLength && (mul *= 0x100)) {
3917    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
3918      sub = 1;
3919    }
3920
3921    this[offset + i] = (value / mul >> 0) - sub & 0xFF;
3922  }
3923
3924  return offset + byteLength;
3925};
3926
3927Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {
3928  value = +value;
3929  offset = offset | 0;
3930
3931  if (!noAssert) {
3932    var limit = Math.pow(2, 8 * byteLength - 1);
3933    checkInt(this, value, offset, byteLength, limit - 1, -limit);
3934  }
3935
3936  var i = byteLength - 1;
3937  var mul = 1;
3938  var sub = 0;
3939  this[offset + i] = value & 0xFF;
3940
3941  while (--i >= 0 && (mul *= 0x100)) {
3942    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
3943      sub = 1;
3944    }
3945
3946    this[offset + i] = (value / mul >> 0) - sub & 0xFF;
3947  }
3948
3949  return offset + byteLength;
3950};
3951
3952Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
3953  value = +value;
3954  offset = offset | 0;
3955  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
3956  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
3957  if (value < 0) value = 0xff + value + 1;
3958  this[offset] = value & 0xff;
3959  return offset + 1;
3960};
3961
3962Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
3963  value = +value;
3964  offset = offset | 0;
3965  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
3966
3967  if (Buffer.TYPED_ARRAY_SUPPORT) {
3968    this[offset] = value & 0xff;
3969    this[offset + 1] = value >>> 8;
3970  } else {
3971    objectWriteUInt16(this, value, offset, true);
3972  }
3973
3974  return offset + 2;
3975};
3976
3977Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
3978  value = +value;
3979  offset = offset | 0;
3980  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
3981
3982  if (Buffer.TYPED_ARRAY_SUPPORT) {
3983    this[offset] = value >>> 8;
3984    this[offset + 1] = value & 0xff;
3985  } else {
3986    objectWriteUInt16(this, value, offset, false);
3987  }
3988
3989  return offset + 2;
3990};
3991
3992Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
3993  value = +value;
3994  offset = offset | 0;
3995  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
3996
3997  if (Buffer.TYPED_ARRAY_SUPPORT) {
3998    this[offset] = value & 0xff;
3999    this[offset + 1] = value >>> 8;
4000    this[offset + 2] = value >>> 16;
4001    this[offset + 3] = value >>> 24;
4002  } else {
4003    objectWriteUInt32(this, value, offset, true);
4004  }
4005
4006  return offset + 4;
4007};
4008
4009Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
4010  value = +value;
4011  offset = offset | 0;
4012  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
4013  if (value < 0) value = 0xffffffff + value + 1;
4014
4015  if (Buffer.TYPED_ARRAY_SUPPORT) {
4016    this[offset] = value >>> 24;
4017    this[offset + 1] = value >>> 16;
4018    this[offset + 2] = value >>> 8;
4019    this[offset + 3] = value & 0xff;
4020  } else {
4021    objectWriteUInt32(this, value, offset, false);
4022  }
4023
4024  return offset + 4;
4025};
4026
4027function checkIEEE754(buf, value, offset, ext, max, min) {
4028  if (offset + ext > buf.length) throw new RangeError('Index out of range');
4029  if (offset < 0) throw new RangeError('Index out of range');
4030}
4031
4032function writeFloat(buf, value, offset, littleEndian, noAssert) {
4033  if (!noAssert) {
4034    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);
4035  }
4036
4037  ieee754.write(buf, value, offset, littleEndian, 23, 4);
4038  return offset + 4;
4039}
4040
4041Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
4042  return writeFloat(this, value, offset, true, noAssert);
4043};
4044
4045Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
4046  return writeFloat(this, value, offset, false, noAssert);
4047};
4048
4049function writeDouble(buf, value, offset, littleEndian, noAssert) {
4050  if (!noAssert) {
4051    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);
4052  }
4053
4054  ieee754.write(buf, value, offset, littleEndian, 52, 8);
4055  return offset + 8;
4056}
4057
4058Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
4059  return writeDouble(this, value, offset, true, noAssert);
4060};
4061
4062Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
4063  return writeDouble(this, value, offset, false, noAssert);
4064}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
4065
4066
4067Buffer.prototype.copy = function copy(target, targetStart, start, end) {
4068  if (!start) start = 0;
4069  if (!end && end !== 0) end = this.length;
4070  if (targetStart >= target.length) targetStart = target.length;
4071  if (!targetStart) targetStart = 0;
4072  if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done
4073
4074  if (end === start) return 0;
4075  if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions
4076
4077  if (targetStart < 0) {
4078    throw new RangeError('targetStart out of bounds');
4079  }
4080
4081  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');
4082  if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?
4083
4084  if (end > this.length) end = this.length;
4085
4086  if (target.length - targetStart < end - start) {
4087    end = target.length - targetStart + start;
4088  }
4089
4090  var len = end - start;
4091  var i;
4092
4093  if (this === target && start < targetStart && targetStart < end) {
4094    // descending copy from end
4095    for (i = len - 1; i >= 0; --i) {
4096      target[i + targetStart] = this[i + start];
4097    }
4098  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
4099    // ascending copy from start
4100    for (i = 0; i < len; ++i) {
4101      target[i + targetStart] = this[i + start];
4102    }
4103  } else {
4104    Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);
4105  }
4106
4107  return len;
4108}; // Usage:
4109//    buffer.fill(number[, offset[, end]])
4110//    buffer.fill(buffer[, offset[, end]])
4111//    buffer.fill(string[, offset[, end]][, encoding])
4112
4113
4114Buffer.prototype.fill = function fill(val, start, end, encoding) {
4115  // Handle string cases:
4116  if (typeof val === 'string') {
4117    if (typeof start === 'string') {
4118      encoding = start;
4119      start = 0;
4120      end = this.length;
4121    } else if (typeof end === 'string') {
4122      encoding = end;
4123      end = this.length;
4124    }
4125
4126    if (val.length === 1) {
4127      var code = val.charCodeAt(0);
4128
4129      if (code < 256) {
4130        val = code;
4131      }
4132    }
4133
4134    if (encoding !== undefined && typeof encoding !== 'string') {
4135      throw new TypeError('encoding must be a string');
4136    }
4137
4138    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
4139      throw new TypeError('Unknown encoding: ' + encoding);
4140    }
4141  } else if (typeof val === 'number') {
4142    val = val & 255;
4143  } // Invalid ranges are not set to a default, so can range check early.
4144
4145
4146  if (start < 0 || this.length < start || this.length < end) {
4147    throw new RangeError('Out of range index');
4148  }
4149
4150  if (end <= start) {
4151    return this;
4152  }
4153
4154  start = start >>> 0;
4155  end = end === undefined ? this.length : end >>> 0;
4156  if (!val) val = 0;
4157  var i;
4158
4159  if (typeof val === 'number') {
4160    for (i = start; i < end; ++i) {
4161      this[i] = val;
4162    }
4163  } else {
4164    var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());
4165    var len = bytes.length;
4166
4167    for (i = 0; i < end - start; ++i) {
4168      this[i + start] = bytes[i % len];
4169    }
4170  }
4171
4172  return this;
4173}; // HELPER FUNCTIONS
4174// ================
4175
4176
4177var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
4178
4179function base64clean(str) {
4180  // Node strips out invalid characters like \n and \t from the string, base64-js does not
4181  str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''
4182
4183  if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
4184
4185  while (str.length % 4 !== 0) {
4186    str = str + '=';
4187  }
4188
4189  return str;
4190}
4191
4192function stringtrim(str) {
4193  if (str.trim) return str.trim();
4194  return str.replace(/^\s+|\s+$/g, '');
4195}
4196
4197function toHex(n) {
4198  if (n < 16) return '0' + n.toString(16);
4199  return n.toString(16);
4200}
4201
4202function utf8ToBytes(string, units) {
4203  units = units || Infinity;
4204  var codePoint;
4205  var length = string.length;
4206  var leadSurrogate = null;
4207  var bytes = [];
4208
4209  for (var i = 0; i < length; ++i) {
4210    codePoint = string.charCodeAt(i); // is surrogate component
4211
4212    if (codePoint > 0xD7FF && codePoint < 0xE000) {
4213      // last char was a lead
4214      if (!leadSurrogate) {
4215        // no lead yet
4216        if (codePoint > 0xDBFF) {
4217          // unexpected trail
4218          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
4219          continue;
4220        } else if (i + 1 === length) {
4221          // unpaired lead
4222          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
4223          continue;
4224        } // valid lead
4225
4226
4227        leadSurrogate = codePoint;
4228        continue;
4229      } // 2 leads in a row
4230
4231
4232      if (codePoint < 0xDC00) {
4233        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
4234        leadSurrogate = codePoint;
4235        continue;
4236      } // valid surrogate pair
4237
4238
4239      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
4240    } else if (leadSurrogate) {
4241      // valid bmp char, but last char was a lead
4242      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
4243    }
4244
4245    leadSurrogate = null; // encode utf8
4246
4247    if (codePoint < 0x80) {
4248      if ((units -= 1) < 0) break;
4249      bytes.push(codePoint);
4250    } else if (codePoint < 0x800) {
4251      if ((units -= 2) < 0) break;
4252      bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);
4253    } else if (codePoint < 0x10000) {
4254      if ((units -= 3) < 0) break;
4255      bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
4256    } else if (codePoint < 0x110000) {
4257      if ((units -= 4) < 0) break;
4258      bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
4259    } else {
4260      throw new Error('Invalid code point');
4261    }
4262  }
4263
4264  return bytes;
4265}
4266
4267function asciiToBytes(str) {
4268  var byteArray = [];
4269
4270  for (var i = 0; i < str.length; ++i) {
4271    // Node's code seems to be doing this and not & 0x7F..
4272    byteArray.push(str.charCodeAt(i) & 0xFF);
4273  }
4274
4275  return byteArray;
4276}
4277
4278function utf16leToBytes(str, units) {
4279  var c, hi, lo;
4280  var byteArray = [];
4281
4282  for (var i = 0; i < str.length; ++i) {
4283    if ((units -= 2) < 0) break;
4284    c = str.charCodeAt(i);
4285    hi = c >> 8;
4286    lo = c % 256;
4287    byteArray.push(lo);
4288    byteArray.push(hi);
4289  }
4290
4291  return byteArray;
4292}
4293
4294function base64ToBytes(str) {
4295  return base64.toByteArray(base64clean(str));
4296}
4297
4298function blitBuffer(src, dst, offset, length) {
4299  for (var i = 0; i < length; ++i) {
4300    if (i + offset >= dst.length || i >= src.length) break;
4301    dst[i + offset] = src[i];
4302  }
4303
4304  return i;
4305}
4306
4307function isnan(val) {
4308  return val !== val; // eslint-disable-line no-self-compare
4309}
4310/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
4311
4312/***/ }),
4313
vendor: 2,643 bytes, lines 4314-4413
4314/***/ "./node_modules/decode-uri-component/index.js":
4315/*!****************************************************!*\
4316  !*** ./node_modules/decode-uri-component/index.js ***!
4317  \****************************************************/
4318/*! no static exports found */
4319/***/ (function(module, exports, __webpack_require__) {
4320
4321"use strict";
4322
4323
4324var token = '%[a-f0-9]{2}';
4325var singleMatcher = new RegExp(token, 'gi');
4326var multiMatcher = new RegExp('(' + token + ')+', 'gi');
4327
4328function decodeComponents(components, split) {
4329  try {
4330    // Try to decode the entire string first
4331    return decodeURIComponent(components.join(''));
4332  } catch (err) {// Do nothing
4333  }
4334
4335  if (components.length === 1) {
4336    return components;
4337  }
4338
4339  split = split || 1; // Split the array in 2 parts
4340
4341  var left = components.slice(0, split);
4342  var right = components.slice(split);
4343  return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));
4344}
4345
4346function decode(input) {
4347  try {
4348    return decodeURIComponent(input);
4349  } catch (err) {
4350    var tokens = input.match(singleMatcher);
4351
4352    for (var i = 1; i < tokens.length; i++) {
4353      input = decodeComponents(tokens, i).join('');
4354      tokens = input.match(singleMatcher);
4355    }
4356
4357    return input;
4358  }
4359}
4360
4361function customDecodeURIComponent(input) {
4362  // Keep track of all the replacements and prefill the map with the `BOM`
4363  var replaceMap = {
4364    '%FE%FF': '\uFFFD\uFFFD',
4365    '%FF%FE': '\uFFFD\uFFFD'
4366  };
4367  var match = multiMatcher.exec(input);
4368
4369  while (match) {
4370    try {
4371      // Decode as big chunks as possible
4372      replaceMap[match[0]] = decodeURIComponent(match[0]);
4373    } catch (err) {
4374      var result = decode(match[0]);
4375
4376      if (result !== match[0]) {
4377        replaceMap[match[0]] = result;
4378      }
4379    }
4380
4381    match = multiMatcher.exec(input);
4382  } // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else
4383
4384
4385  replaceMap['%C2'] = '\uFFFD';
4386  var entries = Object.keys(replaceMap);
4387
4388  for (var i = 0; i < entries.length; i++) {
4389    // Replace all decoded components
4390    var key = entries[i];
4391    input = input.replace(new RegExp(key, 'g'), replaceMap[key]);
4392  }
4393
4394  return input;
4395}
4396
4397module.exports = function (encodedURI) {
4398  if (typeof encodedURI !== 'string') {
4399    throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');
4400  }
4401
4402  try {
4403    encodedURI = encodedURI.replace(/\+/g, ' '); // Try the built in decoder first
4404
4405    return decodeURIComponent(encodedURI);
4406  } catch (err) {
4407    // Fallback to a more advanced decoder
4408    return customDecodeURIComponent(encodedURI);
4409  }
4410};
4411
4412/***/ }),
4413
vendor: 124,615 bytes, lines 4414-8542
4414/***/ "./node_modules/he/he.js":
4415/*!*******************************!*\
4416  !*** ./node_modules/he/he.js ***!
4417  \*******************************/
4418/*! no static exports found */
4419/***/ (function(module, exports, __webpack_require__) {
4420
4421/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/he v1.2.0 by @mathias | MIT license */
4422;
4423
4424(function (root) {
4425  // Detect free variables `exports`.
4426  var freeExports =  true && exports; // Detect free variable `module`.
4427
4428  var freeModule =  true && module && module.exports == freeExports && module; // Detect free variable `global`, from Node.js or Browserified code,
4429  // and use it as `root`.
4430
4431  var freeGlobal = typeof global == 'object' && global;
4432
4433  if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
4434    root = freeGlobal;
4435  }
4436  /*--------------------------------------------------------------------------*/
4437  // All astral symbols.
4438
4439
4440  var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; // All ASCII symbols (not just printable ASCII) except those listed in the
4441  // first column of the overrides table.
4442  // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
4443
4444  var regexAsciiWhitelist = /[\x01-\x7F]/g; // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
4445  // code points listed in the first column of the overrides table on
4446  // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.
4447
4448  var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;
4449  var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
4450  var encodeMap = {
4451    '\xAD': 'shy',
4452    '\u200C': 'zwnj',
4453    '\u200D': 'zwj',
4454    '\u200E': 'lrm',
4455    '\u2063': 'ic',
4456    '\u2062': 'it',
4457    '\u2061': 'af',
4458    '\u200F': 'rlm',
4459    '\u200B': 'ZeroWidthSpace',
4460    '\u2060': 'NoBreak',
4461    '\u0311': 'DownBreve',
4462    '\u20DB': 'tdot',
4463    '\u20DC': 'DotDot',
4464    '\t': 'Tab',
4465    '\n': 'NewLine',
4466    '\u2008': 'puncsp',
4467    '\u205F': 'MediumSpace',
4468    '\u2009': 'thinsp',
4469    '\u200A': 'hairsp',
4470    '\u2004': 'emsp13',
4471    '\u2002': 'ensp',
4472    '\u2005': 'emsp14',
4473    '\u2003': 'emsp',
4474    '\u2007': 'numsp',
4475    '\xA0': 'nbsp',
4476    '\u205F\u200A': 'ThickSpace',
4477    '\u203E': 'oline',
4478    '_': 'lowbar',
4479    '\u2010': 'dash',
4480    '\u2013': 'ndash',
4481    '\u2014': 'mdash',
4482    '\u2015': 'horbar',
4483    ',': 'comma',
4484    ';': 'semi',
4485    '\u204F': 'bsemi',
4486    ':': 'colon',
4487    '\u2A74': 'Colone',
4488    '!': 'excl',
4489    '\xA1': 'iexcl',
4490    '?': 'quest',
4491    '\xBF': 'iquest',
4492    '.': 'period',
4493    '\u2025': 'nldr',
4494    '\u2026': 'mldr',
4495    '\xB7': 'middot',
4496    '\'': 'apos',
4497    '\u2018': 'lsquo',
4498    '\u2019': 'rsquo',
4499    '\u201A': 'sbquo',
4500    '\u2039': 'lsaquo',
4501    '\u203A': 'rsaquo',
4502    '"': 'quot',
4503    '\u201C': 'ldquo',
4504    '\u201D': 'rdquo',
4505    '\u201E': 'bdquo',
4506    '\xAB': 'laquo',
4507    '\xBB': 'raquo',
4508    '(': 'lpar',
4509    ')': 'rpar',
4510    '[': 'lsqb',
4511    ']': 'rsqb',
4512    '{': 'lcub',
4513    '}': 'rcub',
4514    '\u2308': 'lceil',
4515    '\u2309': 'rceil',
4516    '\u230A': 'lfloor',
4517    '\u230B': 'rfloor',
4518    '\u2985': 'lopar',
4519    '\u2986': 'ropar',
4520    '\u298B': 'lbrke',
4521    '\u298C': 'rbrke',
4522    '\u298D': 'lbrkslu',
4523    '\u298E': 'rbrksld',
4524    '\u298F': 'lbrksld',
4525    '\u2990': 'rbrkslu',
4526    '\u2991': 'langd',
4527    '\u2992': 'rangd',
4528    '\u2993': 'lparlt',
4529    '\u2994': 'rpargt',
4530    '\u2995': 'gtlPar',
4531    '\u2996': 'ltrPar',
4532    '\u27E6': 'lobrk',
4533    '\u27E7': 'robrk',
4534    '\u27E8': 'lang',
4535    '\u27E9': 'rang',
4536    '\u27EA': 'Lang',
4537    '\u27EB': 'Rang',
4538    '\u27EC': 'loang',
4539    '\u27ED': 'roang',
4540    '\u2772': 'lbbrk',
4541    '\u2773': 'rbbrk',
4542    '\u2016': 'Vert',
4543    '\xA7': 'sect',
4544    '\xB6': 'para',
4545    '@': 'commat',
4546    '*': 'ast',
4547    '/': 'sol',
4548    'undefined': null,
4549    '&': 'amp',
4550    '#': 'num',
4551    '%': 'percnt',
4552    '\u2030': 'permil',
4553    '\u2031': 'pertenk',
4554    '\u2020': 'dagger',
4555    '\u2021': 'Dagger',
4556    '\u2022': 'bull',
4557    '\u2043': 'hybull',
4558    '\u2032': 'prime',
4559    '\u2033': 'Prime',
4560    '\u2034': 'tprime',
4561    '\u2057': 'qprime',
4562    '\u2035': 'bprime',
4563    '\u2041': 'caret',
4564    '`': 'grave',
4565    '\xB4': 'acute',
4566    '\u02DC': 'tilde',
4567    '^': 'Hat',
4568    '\xAF': 'macr',
4569    '\u02D8': 'breve',
4570    '\u02D9': 'dot',
4571    '\xA8': 'die',
4572    '\u02DA': 'ring',
4573    '\u02DD': 'dblac',
4574    '\xB8': 'cedil',
4575    '\u02DB': 'ogon',
4576    '\u02C6': 'circ',
4577    '\u02C7': 'caron',
4578    '\xB0': 'deg',
4579    '\xA9': 'copy',
4580    '\xAE': 'reg',
4581    '\u2117': 'copysr',
4582    '\u2118': 'wp',
4583    '\u211E': 'rx',
4584    '\u2127': 'mho',
4585    '\u2129': 'iiota',
4586    '\u2190': 'larr',
4587    '\u219A': 'nlarr',
4588    '\u2192': 'rarr',
4589    '\u219B': 'nrarr',
4590    '\u2191': 'uarr',
4591    '\u2193': 'darr',
4592    '\u2194': 'harr',
4593    '\u21AE': 'nharr',
4594    '\u2195': 'varr',
4595    '\u2196': 'nwarr',
4596    '\u2197': 'nearr',
4597    '\u2198': 'searr',
4598    '\u2199': 'swarr',
4599    '\u219D': 'rarrw',
4600    '\u219D\u0338': 'nrarrw',
4601    '\u219E': 'Larr',
4602    '\u219F': 'Uarr',
4603    '\u21A0': 'Rarr',
4604    '\u21A1': 'Darr',
4605    '\u21A2': 'larrtl',
4606    '\u21A3': 'rarrtl',
4607    '\u21A4': 'mapstoleft',
4608    '\u21A5': 'mapstoup',
4609    '\u21A6': 'map',
4610    '\u21A7': 'mapstodown',
4611    '\u21A9': 'larrhk',
4612    '\u21AA': 'rarrhk',
4613    '\u21AB': 'larrlp',
4614    '\u21AC': 'rarrlp',
4615    '\u21AD': 'harrw',
4616    '\u21B0': 'lsh',
4617    '\u21B1': 'rsh',
4618    '\u21B2': 'ldsh',
4619    '\u21B3': 'rdsh',
4620    '\u21B5': 'crarr',
4621    '\u21B6': 'cularr',
4622    '\u21B7': 'curarr',
4623    '\u21BA': 'olarr',
4624    '\u21BB': 'orarr',
4625    '\u21BC': 'lharu',
4626    '\u21BD': 'lhard',
4627    '\u21BE': 'uharr',
4628    '\u21BF': 'uharl',
4629    '\u21C0': 'rharu',
4630    '\u21C1': 'rhard',
4631    '\u21C2': 'dharr',
4632    '\u21C3': 'dharl',
4633    '\u21C4': 'rlarr',
4634    '\u21C5': 'udarr',
4635    '\u21C6': 'lrarr',
4636    '\u21C7': 'llarr',
4637    '\u21C8': 'uuarr',
4638    '\u21C9': 'rrarr',
4639    '\u21CA': 'ddarr',
4640    '\u21CB': 'lrhar',
4641    '\u21CC': 'rlhar',
4642    '\u21D0': 'lArr',
4643    '\u21CD': 'nlArr',
4644    '\u21D1': 'uArr',
4645    '\u21D2': 'rArr',
4646    '\u21CF': 'nrArr',
4647    '\u21D3': 'dArr',
4648    '\u21D4': 'iff',
4649    '\u21CE': 'nhArr',
4650    '\u21D5': 'vArr',
4651    '\u21D6': 'nwArr',
4652    '\u21D7': 'neArr',
4653    '\u21D8': 'seArr',
4654    '\u21D9': 'swArr',
4655    '\u21DA': 'lAarr',
4656    '\u21DB': 'rAarr',
4657    '\u21DD': 'zigrarr',
4658    '\u21E4': 'larrb',
4659    '\u21E5': 'rarrb',
4660    '\u21F5': 'duarr',
4661    '\u21FD': 'loarr',
4662    '\u21FE': 'roarr',
4663    '\u21FF': 'hoarr',
4664    '\u2200': 'forall',
4665    '\u2201': 'comp',
4666    '\u2202': 'part',
4667    '\u2202\u0338': 'npart',
4668    '\u2203': 'exist',
4669    '\u2204': 'nexist',
4670    '\u2205': 'empty',
4671    '\u2207': 'Del',
4672    '\u2208': 'in',
4673    '\u2209': 'notin',
4674    '\u220B': 'ni',
4675    '\u220C': 'notni',
4676    '\u03F6': 'bepsi',
4677    '\u220F': 'prod',
4678    '\u2210': 'coprod',
4679    '\u2211': 'sum',
4680    '+': 'plus',
4681    '\xB1': 'pm',
4682    '\xF7': 'div',
4683    '\xD7': 'times',
4684    '<': 'lt',
4685    '\u226E': 'nlt',
4686    '<\u20D2': 'nvlt',
4687    '=': 'equals',
4688    '\u2260': 'ne',
4689    '=\u20E5': 'bne',
4690    '\u2A75': 'Equal',
4691    '>': 'gt',
4692    '\u226F': 'ngt',
4693    '>\u20D2': 'nvgt',
4694    '\xAC': 'not',
4695    '|': 'vert',
4696    '\xA6': 'brvbar',
4697    '\u2212': 'minus',
4698    '\u2213': 'mp',
4699    '\u2214': 'plusdo',
4700    '\u2044': 'frasl',
4701    '\u2216': 'setmn',
4702    '\u2217': 'lowast',
4703    '\u2218': 'compfn',
4704    '\u221A': 'Sqrt',
4705    '\u221D': 'prop',
4706    '\u221E': 'infin',
4707    '\u221F': 'angrt',
4708    '\u2220': 'ang',
4709    '\u2220\u20D2': 'nang',
4710    '\u2221': 'angmsd',
4711    '\u2222': 'angsph',
4712    '\u2223': 'mid',
4713    '\u2224': 'nmid',
4714    '\u2225': 'par',
4715    '\u2226': 'npar',
4716    '\u2227': 'and',
4717    '\u2228': 'or',
4718    '\u2229': 'cap',
4719    '\u2229\uFE00': 'caps',
4720    '\u222A': 'cup',
4721    '\u222A\uFE00': 'cups',
4722    '\u222B': 'int',
4723    '\u222C': 'Int',
4724    '\u222D': 'tint',
4725    '\u2A0C': 'qint',
4726    '\u222E': 'oint',
4727    '\u222F': 'Conint',
4728    '\u2230': 'Cconint',
4729    '\u2231': 'cwint',
4730    '\u2232': 'cwconint',
4731    '\u2233': 'awconint',
4732    '\u2234': 'there4',
4733    '\u2235': 'becaus',
4734    '\u2236': 'ratio',
4735    '\u2237': 'Colon',
4736    '\u2238': 'minusd',
4737    '\u223A': 'mDDot',
4738    '\u223B': 'homtht',
4739    '\u223C': 'sim',
4740    '\u2241': 'nsim',
4741    '\u223C\u20D2': 'nvsim',
4742    '\u223D': 'bsim',
4743    '\u223D\u0331': 'race',
4744    '\u223E': 'ac',
4745    '\u223E\u0333': 'acE',
4746    '\u223F': 'acd',
4747    '\u2240': 'wr',
4748    '\u2242': 'esim',
4749    '\u2242\u0338': 'nesim',
4750    '\u2243': 'sime',
4751    '\u2244': 'nsime',
4752    '\u2245': 'cong',
4753    '\u2247': 'ncong',
4754    '\u2246': 'simne',
4755    '\u2248': 'ap',
4756    '\u2249': 'nap',
4757    '\u224A': 'ape',
4758    '\u224B': 'apid',
4759    '\u224B\u0338': 'napid',
4760    '\u224C': 'bcong',
4761    '\u224D': 'CupCap',
4762    '\u226D': 'NotCupCap',
4763    '\u224D\u20D2': 'nvap',
4764    '\u224E': 'bump',
4765    '\u224E\u0338': 'nbump',
4766    '\u224F': 'bumpe',
4767    '\u224F\u0338': 'nbumpe',
4768    '\u2250': 'doteq',
4769    '\u2250\u0338': 'nedot',
4770    '\u2251': 'eDot',
4771    '\u2252': 'efDot',
4772    '\u2253': 'erDot',
4773    '\u2254': 'colone',
4774    '\u2255': 'ecolon',
4775    '\u2256': 'ecir',
4776    '\u2257': 'cire',
4777    '\u2259': 'wedgeq',
4778    '\u225A': 'veeeq',
4779    '\u225C': 'trie',
4780    '\u225F': 'equest',
4781    '\u2261': 'equiv',
4782    '\u2262': 'nequiv',
4783    '\u2261\u20E5': 'bnequiv',
4784    '\u2264': 'le',
4785    '\u2270': 'nle',
4786    '\u2264\u20D2': 'nvle',
4787    '\u2265': 'ge',
4788    '\u2271': 'nge',
4789    '\u2265\u20D2': 'nvge',
4790    '\u2266': 'lE',
4791    '\u2266\u0338': 'nlE',
4792    '\u2267': 'gE',
4793    '\u2267\u0338': 'ngE',
4794    '\u2268\uFE00': 'lvnE',
4795    '\u2268': 'lnE',
4796    '\u2269': 'gnE',
4797    '\u2269\uFE00': 'gvnE',
4798    '\u226A': 'll',
4799    '\u226A\u0338': 'nLtv',
4800    '\u226A\u20D2': 'nLt',
4801    '\u226B': 'gg',
4802    '\u226B\u0338': 'nGtv',
4803    '\u226B\u20D2': 'nGt',
4804    '\u226C': 'twixt',
4805    '\u2272': 'lsim',
4806    '\u2274': 'nlsim',
4807    '\u2273': 'gsim',
4808    '\u2275': 'ngsim',
4809    '\u2276': 'lg',
4810    '\u2278': 'ntlg',
4811    '\u2277': 'gl',
4812    '\u2279': 'ntgl',
4813    '\u227A': 'pr',
4814    '\u2280': 'npr',
4815    '\u227B': 'sc',
4816    '\u2281': 'nsc',
4817    '\u227C': 'prcue',
4818    '\u22E0': 'nprcue',
4819    '\u227D': 'sccue',
4820    '\u22E1': 'nsccue',
4821    '\u227E': 'prsim',
4822    '\u227F': 'scsim',
4823    '\u227F\u0338': 'NotSucceedsTilde',
4824    '\u2282': 'sub',
4825    '\u2284': 'nsub',
4826    '\u2282\u20D2': 'vnsub',
4827    '\u2283': 'sup',
4828    '\u2285': 'nsup',
4829    '\u2283\u20D2': 'vnsup',
4830    '\u2286': 'sube',
4831    '\u2288': 'nsube',
4832    '\u2287': 'supe',
4833    '\u2289': 'nsupe',
4834    '\u228A\uFE00': 'vsubne',
4835    '\u228A': 'subne',
4836    '\u228B\uFE00': 'vsupne',
4837    '\u228B': 'supne',
4838    '\u228D': 'cupdot',
4839    '\u228E': 'uplus',
4840    '\u228F': 'sqsub',
4841    '\u228F\u0338': 'NotSquareSubset',
4842    '\u2290': 'sqsup',
4843    '\u2290\u0338': 'NotSquareSuperset',
4844    '\u2291': 'sqsube',
4845    '\u22E2': 'nsqsube',
4846    '\u2292': 'sqsupe',
4847    '\u22E3': 'nsqsupe',
4848    '\u2293': 'sqcap',
4849    '\u2293\uFE00': 'sqcaps',
4850    '\u2294': 'sqcup',
4851    '\u2294\uFE00': 'sqcups',
4852    '\u2295': 'oplus',
4853    '\u2296': 'ominus',
4854    '\u2297': 'otimes',
4855    '\u2298': 'osol',
4856    '\u2299': 'odot',
4857    '\u229A': 'ocir',
4858    '\u229B': 'oast',
4859    '\u229D': 'odash',
4860    '\u229E': 'plusb',
4861    '\u229F': 'minusb',
4862    '\u22A0': 'timesb',
4863    '\u22A1': 'sdotb',
4864    '\u22A2': 'vdash',
4865    '\u22AC': 'nvdash',
4866    '\u22A3': 'dashv',
4867    '\u22A4': 'top',
4868    '\u22A5': 'bot',
4869    '\u22A7': 'models',
4870    '\u22A8': 'vDash',
4871    '\u22AD': 'nvDash',
4872    '\u22A9': 'Vdash',
4873    '\u22AE': 'nVdash',
4874    '\u22AA': 'Vvdash',
4875    '\u22AB': 'VDash',
4876    '\u22AF': 'nVDash',
4877    '\u22B0': 'prurel',
4878    '\u22B2': 'vltri',
4879    '\u22EA': 'nltri',
4880    '\u22B3': 'vrtri',
4881    '\u22EB': 'nrtri',
4882    '\u22B4': 'ltrie',
4883    '\u22EC': 'nltrie',
4884    '\u22B4\u20D2': 'nvltrie',
4885    '\u22B5': 'rtrie',
4886    '\u22ED': 'nrtrie',
4887    '\u22B5\u20D2': 'nvrtrie',
4888    '\u22B6': 'origof',
4889    '\u22B7': 'imof',
4890    '\u22B8': 'mumap',
4891    '\u22B9': 'hercon',
4892    '\u22BA': 'intcal',
4893    '\u22BB': 'veebar',
4894    '\u22BD': 'barvee',
4895    '\u22BE': 'angrtvb',
4896    '\u22BF': 'lrtri',
4897    '\u22C0': 'Wedge',
4898    '\u22C1': 'Vee',
4899    '\u22C2': 'xcap',
4900    '\u22C3': 'xcup',
4901    '\u22C4': 'diam',
4902    '\u22C5': 'sdot',
4903    '\u22C6': 'Star',
4904    '\u22C7': 'divonx',
4905    '\u22C8': 'bowtie',
4906    '\u22C9': 'ltimes',
4907    '\u22CA': 'rtimes',
4908    '\u22CB': 'lthree',
4909    '\u22CC': 'rthree',
4910    '\u22CD': 'bsime',
4911    '\u22CE': 'cuvee',
4912    '\u22CF': 'cuwed',
4913    '\u22D0': 'Sub',
4914    '\u22D1': 'Sup',
4915    '\u22D2': 'Cap',
4916    '\u22D3': 'Cup',
4917    '\u22D4': 'fork',
4918    '\u22D5': 'epar',
4919    '\u22D6': 'ltdot',
4920    '\u22D7': 'gtdot',
4921    '\u22D8': 'Ll',
4922    '\u22D8\u0338': 'nLl',
4923    '\u22D9': 'Gg',
4924    '\u22D9\u0338': 'nGg',
4925    '\u22DA\uFE00': 'lesg',
4926    '\u22DA': 'leg',
4927    '\u22DB': 'gel',
4928    '\u22DB\uFE00': 'gesl',
4929    '\u22DE': 'cuepr',
4930    '\u22DF': 'cuesc',
4931    '\u22E6': 'lnsim',
4932    '\u22E7': 'gnsim',
4933    '\u22E8': 'prnsim',
4934    '\u22E9': 'scnsim',
4935    '\u22EE': 'vellip',
4936    '\u22EF': 'ctdot',
4937    '\u22F0': 'utdot',
4938    '\u22F1': 'dtdot',
4939    '\u22F2': 'disin',
4940    '\u22F3': 'isinsv',
4941    '\u22F4': 'isins',
4942    '\u22F5': 'isindot',
4943    '\u22F5\u0338': 'notindot',
4944    '\u22F6': 'notinvc',
4945    '\u22F7': 'notinvb',
4946    '\u22F9': 'isinE',
4947    '\u22F9\u0338': 'notinE',
4948    '\u22FA': 'nisd',
4949    '\u22FB': 'xnis',
4950    '\u22FC': 'nis',
4951    '\u22FD': 'notnivc',
4952    '\u22FE': 'notnivb',
4953    '\u2305': 'barwed',
4954    '\u2306': 'Barwed',
4955    '\u230C': 'drcrop',
4956    '\u230D': 'dlcrop',
4957    '\u230E': 'urcrop',
4958    '\u230F': 'ulcrop',
4959    '\u2310': 'bnot',
4960    '\u2312': 'profline',
4961    '\u2313': 'profsurf',
4962    '\u2315': 'telrec',
4963    '\u2316': 'target',
4964    '\u231C': 'ulcorn',
4965    '\u231D': 'urcorn',
4966    '\u231E': 'dlcorn',
4967    '\u231F': 'drcorn',
4968    '\u2322': 'frown',
4969    '\u2323': 'smile',
4970    '\u232D': 'cylcty',
4971    '\u232E': 'profalar',
4972    '\u2336': 'topbot',
4973    '\u233D': 'ovbar',
4974    '\u233F': 'solbar',
4975    '\u237C': 'angzarr',
4976    '\u23B0': 'lmoust',
4977    '\u23B1': 'rmoust',
4978    '\u23B4': 'tbrk',
4979    '\u23B5': 'bbrk',
4980    '\u23B6': 'bbrktbrk',
4981    '\u23DC': 'OverParenthesis',
4982    '\u23DD': 'UnderParenthesis',
4983    '\u23DE': 'OverBrace',
4984    '\u23DF': 'UnderBrace',
4985    '\u23E2': 'trpezium',
4986    '\u23E7': 'elinters',
4987    '\u2423': 'blank',
4988    '\u2500': 'boxh',
4989    '\u2502': 'boxv',
4990    '\u250C': 'boxdr',
4991    '\u2510': 'boxdl',
4992    '\u2514': 'boxur',
4993    '\u2518': 'boxul',
4994    '\u251C': 'boxvr',
4995    '\u2524': 'boxvl',
4996    '\u252C': 'boxhd',
4997    '\u2534': 'boxhu',
4998    '\u253C': 'boxvh',
4999    '\u2550': 'boxH',
5000    '\u2551': 'boxV',
5001    '\u2552': 'boxdR',
5002    '\u2553': 'boxDr',
5003    '\u2554': 'boxDR',
5004    '\u2555': 'boxdL',
5005    '\u2556': 'boxDl',
5006    '\u2557': 'boxDL',
5007    '\u2558': 'boxuR',
5008    '\u2559': 'boxUr',
5009    '\u255A': 'boxUR',
5010    '\u255B': 'boxuL',
5011    '\u255C': 'boxUl',
5012    '\u255D': 'boxUL',
5013    '\u255E': 'boxvR',
5014    '\u255F': 'boxVr',
5015    '\u2560': 'boxVR',
5016    '\u2561': 'boxvL',
5017    '\u2562': 'boxVl',
5018    '\u2563': 'boxVL',
5019    '\u2564': 'boxHd',
5020    '\u2565': 'boxhD',
5021    '\u2566': 'boxHD',
5022    '\u2567': 'boxHu',
5023    '\u2568': 'boxhU',
5024    '\u2569': 'boxHU',
5025    '\u256A': 'boxvH',
5026    '\u256B': 'boxVh',
5027    '\u256C': 'boxVH',
5028    '\u2580': 'uhblk',
5029    '\u2584': 'lhblk',
5030    '\u2588': 'block',
5031    '\u2591': 'blk14',
5032    '\u2592': 'blk12',
5033    '\u2593': 'blk34',
5034    '\u25A1': 'squ',
5035    '\u25AA': 'squf',
5036    '\u25AB': 'EmptyVerySmallSquare',
5037    '\u25AD': 'rect',
5038    '\u25AE': 'marker',
5039    '\u25B1': 'fltns',
5040    '\u25B3': 'xutri',
5041    '\u25B4': 'utrif',
5042    '\u25B5': 'utri',
5043    '\u25B8': 'rtrif',
5044    '\u25B9': 'rtri',
5045    '\u25BD': 'xdtri',
5046    '\u25BE': 'dtrif',
5047    '\u25BF': 'dtri',
5048    '\u25C2': 'ltrif',
5049    '\u25C3': 'ltri',
5050    '\u25CA': 'loz',
5051    '\u25CB': 'cir',
5052    '\u25EC': 'tridot',
5053    '\u25EF': 'xcirc',
5054    '\u25F8': 'ultri',
5055    '\u25F9': 'urtri',
5056    '\u25FA': 'lltri',
5057    '\u25FB': 'EmptySmallSquare',
5058    '\u25FC': 'FilledSmallSquare',
5059    '\u2605': 'starf',
5060    '\u2606': 'star',
5061    '\u260E': 'phone',
5062    '\u2640': 'female',
5063    '\u2642': 'male',
5064    '\u2660': 'spades',
5065    '\u2663': 'clubs',
5066    '\u2665': 'hearts',
5067    '\u2666': 'diams',
5068    '\u266A': 'sung',
5069    '\u2713': 'check',
5070    '\u2717': 'cross',
5071    '\u2720': 'malt',
5072    '\u2736': 'sext',
5073    '\u2758': 'VerticalSeparator',
5074    '\u27C8': 'bsolhsub',
5075    '\u27C9': 'suphsol',
5076    '\u27F5': 'xlarr',
5077    '\u27F6': 'xrarr',
5078    '\u27F7': 'xharr',
5079    '\u27F8': 'xlArr',
5080    '\u27F9': 'xrArr',
5081    '\u27FA': 'xhArr',
5082    '\u27FC': 'xmap',
5083    '\u27FF': 'dzigrarr',
5084    '\u2902': 'nvlArr',
5085    '\u2903': 'nvrArr',
5086    '\u2904': 'nvHarr',
5087    '\u2905': 'Map',
5088    '\u290C': 'lbarr',
5089    '\u290D': 'rbarr',
5090    '\u290E': 'lBarr',
5091    '\u290F': 'rBarr',
5092    '\u2910': 'RBarr',
5093    '\u2911': 'DDotrahd',
5094    '\u2912': 'UpArrowBar',
5095    '\u2913': 'DownArrowBar',
5096    '\u2916': 'Rarrtl',
5097    '\u2919': 'latail',
5098    '\u291A': 'ratail',
5099    '\u291B': 'lAtail',
5100    '\u291C': 'rAtail',
5101    '\u291D': 'larrfs',
5102    '\u291E': 'rarrfs',
5103    '\u291F': 'larrbfs',
5104    '\u2920': 'rarrbfs',
5105    '\u2923': 'nwarhk',
5106    '\u2924': 'nearhk',
5107    '\u2925': 'searhk',
5108    '\u2926': 'swarhk',
5109    '\u2927': 'nwnear',
5110    '\u2928': 'toea',
5111    '\u2929': 'tosa',
5112    '\u292A': 'swnwar',
5113    '\u2933': 'rarrc',
5114    '\u2933\u0338': 'nrarrc',
5115    '\u2935': 'cudarrr',
5116    '\u2936': 'ldca',
5117    '\u2937': 'rdca',
5118    '\u2938': 'cudarrl',
5119    '\u2939': 'larrpl',
5120    '\u293C': 'curarrm',
5121    '\u293D': 'cularrp',
5122    '\u2945': 'rarrpl',
5123    '\u2948': 'harrcir',
5124    '\u2949': 'Uarrocir',
5125    '\u294A': 'lurdshar',
5126    '\u294B': 'ldrushar',
5127    '\u294E': 'LeftRightVector',
5128    '\u294F': 'RightUpDownVector',
5129    '\u2950': 'DownLeftRightVector',
5130    '\u2951': 'LeftUpDownVector',
5131    '\u2952': 'LeftVectorBar',
5132    '\u2953': 'RightVectorBar',
5133    '\u2954': 'RightUpVectorBar',
5134    '\u2955': 'RightDownVectorBar',
5135    '\u2956': 'DownLeftVectorBar',
5136    '\u2957': 'DownRightVectorBar',
5137    '\u2958': 'LeftUpVectorBar',
5138    '\u2959': 'LeftDownVectorBar',
5139    '\u295A': 'LeftTeeVector',
5140    '\u295B': 'RightTeeVector',
5141    '\u295C': 'RightUpTeeVector',
5142    '\u295D': 'RightDownTeeVector',
5143    '\u295E': 'DownLeftTeeVector',
5144    '\u295F': 'DownRightTeeVector',
5145    '\u2960': 'LeftUpTeeVector',
5146    '\u2961': 'LeftDownTeeVector',
5147    '\u2962': 'lHar',
5148    '\u2963': 'uHar',
5149    '\u2964': 'rHar',
5150    '\u2965': 'dHar',
5151    '\u2966': 'luruhar',
5152    '\u2967': 'ldrdhar',
5153    '\u2968': 'ruluhar',
5154    '\u2969': 'rdldhar',
5155    '\u296A': 'lharul',
5156    '\u296B': 'llhard',
5157    '\u296C': 'rharul',
5158    '\u296D': 'lrhard',
5159    '\u296E': 'udhar',
5160    '\u296F': 'duhar',
5161    '\u2970': 'RoundImplies',
5162    '\u2971': 'erarr',
5163    '\u2972': 'simrarr',
5164    '\u2973': 'larrsim',
5165    '\u2974': 'rarrsim',
5166    '\u2975': 'rarrap',
5167    '\u2976': 'ltlarr',
5168    '\u2978': 'gtrarr',
5169    '\u2979': 'subrarr',
5170    '\u297B': 'suplarr',
5171    '\u297C': 'lfisht',
5172    '\u297D': 'rfisht',
5173    '\u297E': 'ufisht',
5174    '\u297F': 'dfisht',
5175    '\u299A': 'vzigzag',
5176    '\u299C': 'vangrt',
5177    '\u299D': 'angrtvbd',
5178    '\u29A4': 'ange',
5179    '\u29A5': 'range',
5180    '\u29A6': 'dwangle',
5181    '\u29A7': 'uwangle',
5182    '\u29A8': 'angmsdaa',
5183    '\u29A9': 'angmsdab',
5184    '\u29AA': 'angmsdac',
5185    '\u29AB': 'angmsdad',
5186    '\u29AC': 'angmsdae',
5187    '\u29AD': 'angmsdaf',
5188    '\u29AE': 'angmsdag',
5189    '\u29AF': 'angmsdah',
5190    '\u29B0': 'bemptyv',
5191    '\u29B1': 'demptyv',
5192    '\u29B2': 'cemptyv',
5193    '\u29B3': 'raemptyv',
5194    '\u29B4': 'laemptyv',
5195    '\u29B5': 'ohbar',
5196    '\u29B6': 'omid',
5197    '\u29B7': 'opar',
5198    '\u29B9': 'operp',
5199    '\u29BB': 'olcross',
5200    '\u29BC': 'odsold',
5201    '\u29BE': 'olcir',
5202    '\u29BF': 'ofcir',
5203    '\u29C0': 'olt',
5204    '\u29C1': 'ogt',
5205    '\u29C2': 'cirscir',
5206    '\u29C3': 'cirE',
5207    '\u29C4': 'solb',
5208    '\u29C5': 'bsolb',
5209    '\u29C9': 'boxbox',
5210    '\u29CD': 'trisb',
5211    '\u29CE': 'rtriltri',
5212    '\u29CF': 'LeftTriangleBar',
5213    '\u29CF\u0338': 'NotLeftTriangleBar',
5214    '\u29D0': 'RightTriangleBar',
5215    '\u29D0\u0338': 'NotRightTriangleBar',
5216    '\u29DC': 'iinfin',
5217    '\u29DD': 'infintie',
5218    '\u29DE': 'nvinfin',
5219    '\u29E3': 'eparsl',
5220    '\u29E4': 'smeparsl',
5221    '\u29E5': 'eqvparsl',
5222    '\u29EB': 'lozf',
5223    '\u29F4': 'RuleDelayed',
5224    '\u29F6': 'dsol',
5225    '\u2A00': 'xodot',
5226    '\u2A01': 'xoplus',
5227    '\u2A02': 'xotime',
5228    '\u2A04': 'xuplus',
5229    '\u2A06': 'xsqcup',
5230    '\u2A0D': 'fpartint',
5231    '\u2A10': 'cirfnint',
5232    '\u2A11': 'awint',
5233    '\u2A12': 'rppolint',
5234    '\u2A13': 'scpolint',
5235    '\u2A14': 'npolint',
5236    '\u2A15': 'pointint',
5237    '\u2A16': 'quatint',
5238    '\u2A17': 'intlarhk',
5239    '\u2A22': 'pluscir',
5240    '\u2A23': 'plusacir',
5241    '\u2A24': 'simplus',
5242    '\u2A25': 'plusdu',
5243    '\u2A26': 'plussim',
5244    '\u2A27': 'plustwo',
5245    '\u2A29': 'mcomma',
5246    '\u2A2A': 'minusdu',
5247    '\u2A2D': 'loplus',
5248    '\u2A2E': 'roplus',
5249    '\u2A2F': 'Cross',
5250    '\u2A30': 'timesd',
5251    '\u2A31': 'timesbar',
5252    '\u2A33': 'smashp',
5253    '\u2A34': 'lotimes',
5254    '\u2A35': 'rotimes',
5255    '\u2A36': 'otimesas',
5256    '\u2A37': 'Otimes',
5257    '\u2A38': 'odiv',
5258    '\u2A39': 'triplus',
5259    '\u2A3A': 'triminus',
5260    '\u2A3B': 'tritime',
5261    '\u2A3C': 'iprod',
5262    '\u2A3F': 'amalg',
5263    '\u2A40': 'capdot',
5264    '\u2A42': 'ncup',
5265    '\u2A43': 'ncap',
5266    '\u2A44': 'capand',
5267    '\u2A45': 'cupor',
5268    '\u2A46': 'cupcap',
5269    '\u2A47': 'capcup',
5270    '\u2A48': 'cupbrcap',
5271    '\u2A49': 'capbrcup',
5272    '\u2A4A': 'cupcup',
5273    '\u2A4B': 'capcap',
5274    '\u2A4C': 'ccups',
5275    '\u2A4D': 'ccaps',
5276    '\u2A50': 'ccupssm',
5277    '\u2A53': 'And',
5278    '\u2A54': 'Or',
5279    '\u2A55': 'andand',
5280    '\u2A56': 'oror',
5281    '\u2A57': 'orslope',
5282    '\u2A58': 'andslope',
5283    '\u2A5A': 'andv',
5284    '\u2A5B': 'orv',
5285    '\u2A5C': 'andd',
5286    '\u2A5D': 'ord',
5287    '\u2A5F': 'wedbar',
5288    '\u2A66': 'sdote',
5289    '\u2A6A': 'simdot',
5290    '\u2A6D': 'congdot',
5291    '\u2A6D\u0338': 'ncongdot',
5292    '\u2A6E': 'easter',
5293    '\u2A6F': 'apacir',
5294    '\u2A70': 'apE',
5295    '\u2A70\u0338': 'napE',
5296    '\u2A71': 'eplus',
5297    '\u2A72': 'pluse',
5298    '\u2A73': 'Esim',
5299    '\u2A77': 'eDDot',
5300    '\u2A78': 'equivDD',
5301    '\u2A79': 'ltcir',
5302    '\u2A7A': 'gtcir',
5303    '\u2A7B': 'ltquest',
5304    '\u2A7C': 'gtquest',
5305    '\u2A7D': 'les',
5306    '\u2A7D\u0338': 'nles',
5307    '\u2A7E': 'ges',
5308    '\u2A7E\u0338': 'nges',
5309    '\u2A7F': 'lesdot',
5310    '\u2A80': 'gesdot',
5311    '\u2A81': 'lesdoto',
5312    '\u2A82': 'gesdoto',
5313    '\u2A83': 'lesdotor',
5314    '\u2A84': 'gesdotol',
5315    '\u2A85': 'lap',
5316    '\u2A86': 'gap',
5317    '\u2A87': 'lne',
5318    '\u2A88': 'gne',
5319    '\u2A89': 'lnap',
5320    '\u2A8A': 'gnap',
5321    '\u2A8B': 'lEg',
5322    '\u2A8C': 'gEl',
5323    '\u2A8D': 'lsime',
5324    '\u2A8E': 'gsime',
5325    '\u2A8F': 'lsimg',
5326    '\u2A90': 'gsiml',
5327    '\u2A91': 'lgE',
5328    '\u2A92': 'glE',
5329    '\u2A93': 'lesges',
5330    '\u2A94': 'gesles',
5331    '\u2A95': 'els',
5332    '\u2A96': 'egs',
5333    '\u2A97': 'elsdot',
5334    '\u2A98': 'egsdot',
5335    '\u2A99': 'el',
5336    '\u2A9A': 'eg',
5337    '\u2A9D': 'siml',
5338    '\u2A9E': 'simg',
5339    '\u2A9F': 'simlE',
5340    '\u2AA0': 'simgE',
5341    '\u2AA1': 'LessLess',
5342    '\u2AA1\u0338': 'NotNestedLessLess',
5343    '\u2AA2': 'GreaterGreater',
5344    '\u2AA2\u0338': 'NotNestedGreaterGreater',
5345    '\u2AA4': 'glj',
5346    '\u2AA5': 'gla',
5347    '\u2AA6': 'ltcc',
5348    '\u2AA7': 'gtcc',
5349    '\u2AA8': 'lescc',
5350    '\u2AA9': 'gescc',
5351    '\u2AAA': 'smt',
5352    '\u2AAB': 'lat',
5353    '\u2AAC': 'smte',
5354    '\u2AAC\uFE00': 'smtes',
5355    '\u2AAD': 'late',
5356    '\u2AAD\uFE00': 'lates',
5357    '\u2AAE': 'bumpE',
5358    '\u2AAF': 'pre',
5359    '\u2AAF\u0338': 'npre',
5360    '\u2AB0': 'sce',
5361    '\u2AB0\u0338': 'nsce',
5362    '\u2AB3': 'prE',
5363    '\u2AB4': 'scE',
5364    '\u2AB5': 'prnE',
5365    '\u2AB6': 'scnE',
5366    '\u2AB7': 'prap',
5367    '\u2AB8': 'scap',
5368    '\u2AB9': 'prnap',
5369    '\u2ABA': 'scnap',
5370    '\u2ABB': 'Pr',
5371    '\u2ABC': 'Sc',
5372    '\u2ABD': 'subdot',
5373    '\u2ABE': 'supdot',
5374    '\u2ABF': 'subplus',
5375    '\u2AC0': 'supplus',
5376    '\u2AC1': 'submult',
5377    '\u2AC2': 'supmult',
5378    '\u2AC3': 'subedot',
5379    '\u2AC4': 'supedot',
5380    '\u2AC5': 'subE',
5381    '\u2AC5\u0338': 'nsubE',
5382    '\u2AC6': 'supE',
5383    '\u2AC6\u0338': 'nsupE',
5384    '\u2AC7': 'subsim',
5385    '\u2AC8': 'supsim',
5386    '\u2ACB\uFE00': 'vsubnE',
5387    '\u2ACB': 'subnE',
5388    '\u2ACC\uFE00': 'vsupnE',
5389    '\u2ACC': 'supnE',
5390    '\u2ACF': 'csub',
5391    '\u2AD0': 'csup',
5392    '\u2AD1': 'csube',
5393    '\u2AD2': 'csupe',
5394    '\u2AD3': 'subsup',
5395    '\u2AD4': 'supsub',
5396    '\u2AD5': 'subsub',
5397    '\u2AD6': 'supsup',
5398    '\u2AD7': 'suphsub',
5399    '\u2AD8': 'supdsub',
5400    '\u2AD9': 'forkv',
5401    '\u2ADA': 'topfork',
5402    '\u2ADB': 'mlcp',
5403    '\u2AE4': 'Dashv',
5404    '\u2AE6': 'Vdashl',
5405    '\u2AE7': 'Barv',
5406    '\u2AE8': 'vBar',
5407    '\u2AE9': 'vBarv',
5408    '\u2AEB': 'Vbar',
5409    '\u2AEC': 'Not',
5410    '\u2AED': 'bNot',
5411    '\u2AEE': 'rnmid',
5412    '\u2AEF': 'cirmid',
5413    '\u2AF0': 'midcir',
5414    '\u2AF1': 'topcir',
5415    '\u2AF2': 'nhpar',
5416    '\u2AF3': 'parsim',
5417    '\u2AFD': 'parsl',
5418    '\u2AFD\u20E5': 'nparsl',
5419    '\u266D': 'flat',
5420    '\u266E': 'natur',
5421    '\u266F': 'sharp',
5422    '\xA4': 'curren',
5423    '\xA2': 'cent',
5424    '$': 'dollar',
5425    '\xA3': 'pound',
5426    '\xA5': 'yen',
5427    '\u20AC': 'euro',
5428    '\xB9': 'sup1',
5429    '\xBD': 'half',
5430    '\u2153': 'frac13',
5431    '\xBC': 'frac14',
5432    '\u2155': 'frac15',
5433    '\u2159': 'frac16',
5434    '\u215B': 'frac18',
5435    '\xB2': 'sup2',
5436    '\u2154': 'frac23',
5437    '\u2156': 'frac25',
5438    '\xB3': 'sup3',
5439    '\xBE': 'frac34',
5440    '\u2157': 'frac35',
5441    '\u215C': 'frac38',
5442    '\u2158': 'frac45',
5443    '\u215A': 'frac56',
5444    '\u215D': 'frac58',
5445    '\u215E': 'frac78',
5446    '\uD835\uDCB6': 'ascr',
5447    '\uD835\uDD52': 'aopf',
5448    '\uD835\uDD1E': 'afr',
5449    '\uD835\uDD38': 'Aopf',
5450    '\uD835\uDD04': 'Afr',
5451    '\uD835\uDC9C': 'Ascr',
5452    '\xAA': 'ordf',
5453    '\xE1': 'aacute',
5454    '\xC1': 'Aacute',
5455    '\xE0': 'agrave',
5456    '\xC0': 'Agrave',
5457    '\u0103': 'abreve',
5458    '\u0102': 'Abreve',
5459    '\xE2': 'acirc',
5460    '\xC2': 'Acirc',
5461    '\xE5': 'aring',
5462    '\xC5': 'angst',
5463    '\xE4': 'auml',
5464    '\xC4': 'Auml',
5465    '\xE3': 'atilde',
5466    '\xC3': 'Atilde',
5467    '\u0105': 'aogon',
5468    '\u0104': 'Aogon',
5469    '\u0101': 'amacr',
5470    '\u0100': 'Amacr',
5471    '\xE6': 'aelig',
5472    '\xC6': 'AElig',
5473    '\uD835\uDCB7': 'bscr',
5474    '\uD835\uDD53': 'bopf',
5475    '\uD835\uDD1F': 'bfr',
5476    '\uD835\uDD39': 'Bopf',
5477    '\u212C': 'Bscr',
5478    '\uD835\uDD05': 'Bfr',
5479    '\uD835\uDD20': 'cfr',
5480    '\uD835\uDCB8': 'cscr',
5481    '\uD835\uDD54': 'copf',
5482    '\u212D': 'Cfr',
5483    '\uD835\uDC9E': 'Cscr',
5484    '\u2102': 'Copf',
5485    '\u0107': 'cacute',
5486    '\u0106': 'Cacute',
5487    '\u0109': 'ccirc',
5488    '\u0108': 'Ccirc',
5489    '\u010D': 'ccaron',
5490    '\u010C': 'Ccaron',
5491    '\u010B': 'cdot',
5492    '\u010A': 'Cdot',
5493    '\xE7': 'ccedil',
5494    '\xC7': 'Ccedil',
5495    '\u2105': 'incare',
5496    '\uD835\uDD21': 'dfr',
5497    '\u2146': 'dd',
5498    '\uD835\uDD55': 'dopf',
5499    '\uD835\uDCB9': 'dscr',
5500    '\uD835\uDC9F': 'Dscr',
5501    '\uD835\uDD07': 'Dfr',
5502    '\u2145': 'DD',
5503    '\uD835\uDD3B': 'Dopf',
5504    '\u010F': 'dcaron',
5505    '\u010E': 'Dcaron',
5506    '\u0111': 'dstrok',
5507    '\u0110': 'Dstrok',
5508    '\xF0': 'eth',
5509    '\xD0': 'ETH',
5510    '\u2147': 'ee',
5511    '\u212F': 'escr',
5512    '\uD835\uDD22': 'efr',
5513    '\uD835\uDD56': 'eopf',
5514    '\u2130': 'Escr',
5515    '\uD835\uDD08': 'Efr',
5516    '\uD835\uDD3C': 'Eopf',
5517    '\xE9': 'eacute',
5518    '\xC9': 'Eacute',
5519    '\xE8': 'egrave',
5520    '\xC8': 'Egrave',
5521    '\xEA': 'ecirc',
5522    '\xCA': 'Ecirc',
5523    '\u011B': 'ecaron',
5524    '\u011A': 'Ecaron',
5525    '\xEB': 'euml',
5526    '\xCB': 'Euml',
5527    '\u0117': 'edot',
5528    '\u0116': 'Edot',
5529    '\u0119': 'eogon',
5530    '\u0118': 'Eogon',
5531    '\u0113': 'emacr',
5532    '\u0112': 'Emacr',
5533    '\uD835\uDD23': 'ffr',
5534    '\uD835\uDD57': 'fopf',
5535    '\uD835\uDCBB': 'fscr',
5536    '\uD835\uDD09': 'Ffr',
5537    '\uD835\uDD3D': 'Fopf',
5538    '\u2131': 'Fscr',
5539    '\uFB00': 'fflig',
5540    '\uFB03': 'ffilig',
5541    '\uFB04': 'ffllig',
5542    '\uFB01': 'filig',
5543    'fj': 'fjlig',
5544    '\uFB02': 'fllig',
5545    '\u0192': 'fnof',
5546    '\u210A': 'gscr',
5547    '\uD835\uDD58': 'gopf',
5548    '\uD835\uDD24': 'gfr',
5549    '\uD835\uDCA2': 'Gscr',
5550    '\uD835\uDD3E': 'Gopf',
5551    '\uD835\uDD0A': 'Gfr',
5552    '\u01F5': 'gacute',
5553    '\u011F': 'gbreve',
5554    '\u011E': 'Gbreve',
5555    '\u011D': 'gcirc',
5556    '\u011C': 'Gcirc',
5557    '\u0121': 'gdot',
5558    '\u0120': 'Gdot',
5559    '\u0122': 'Gcedil',
5560    '\uD835\uDD25': 'hfr',
5561    '\u210E': 'planckh',
5562    '\uD835\uDCBD': 'hscr',
5563    '\uD835\uDD59': 'hopf',
5564    '\u210B': 'Hscr',
5565    '\u210C': 'Hfr',
5566    '\u210D': 'Hopf',
5567    '\u0125': 'hcirc',
5568    '\u0124': 'Hcirc',
5569    '\u210F': 'hbar',
5570    '\u0127': 'hstrok',
5571    '\u0126': 'Hstrok',
5572    '\uD835\uDD5A': 'iopf',
5573    '\uD835\uDD26': 'ifr',
5574    '\uD835\uDCBE': 'iscr',
5575    '\u2148': 'ii',
5576    '\uD835\uDD40': 'Iopf',
5577    '\u2110': 'Iscr',
5578    '\u2111': 'Im',
5579    '\xED': 'iacute',
5580    '\xCD': 'Iacute',
5581    '\xEC': 'igrave',
5582    '\xCC': 'Igrave',
5583    '\xEE': 'icirc',
5584    '\xCE': 'Icirc',
5585    '\xEF': 'iuml',
5586    '\xCF': 'Iuml',
5587    '\u0129': 'itilde',
5588    '\u0128': 'Itilde',
5589    '\u0130': 'Idot',
5590    '\u012F': 'iogon',
5591    '\u012E': 'Iogon',
5592    '\u012B': 'imacr',
5593    '\u012A': 'Imacr',
5594    '\u0133': 'ijlig',
5595    '\u0132': 'IJlig',
5596    '\u0131': 'imath',
5597    '\uD835\uDCBF': 'jscr',
5598    '\uD835\uDD5B': 'jopf',
5599    '\uD835\uDD27': 'jfr',
5600    '\uD835\uDCA5': 'Jscr',
5601    '\uD835\uDD0D': 'Jfr',
5602    '\uD835\uDD41': 'Jopf',
5603    '\u0135': 'jcirc',
5604    '\u0134': 'Jcirc',
5605    '\u0237': 'jmath',
5606    '\uD835\uDD5C': 'kopf',
5607    '\uD835\uDCC0': 'kscr',
5608    '\uD835\uDD28': 'kfr',
5609    '\uD835\uDCA6': 'Kscr',
5610    '\uD835\uDD42': 'Kopf',
5611    '\uD835\uDD0E': 'Kfr',
5612    '\u0137': 'kcedil',
5613    '\u0136': 'Kcedil',
5614    '\uD835\uDD29': 'lfr',
5615    '\uD835\uDCC1': 'lscr',
5616    '\u2113': 'ell',
5617    '\uD835\uDD5D': 'lopf',
5618    '\u2112': 'Lscr',
5619    '\uD835\uDD0F': 'Lfr',
5620    '\uD835\uDD43': 'Lopf',
5621    '\u013A': 'lacute',
5622    '\u0139': 'Lacute',
5623    '\u013E': 'lcaron',
5624    '\u013D': 'Lcaron',
5625    '\u013C': 'lcedil',
5626    '\u013B': 'Lcedil',
5627    '\u0142': 'lstrok',
5628    '\u0141': 'Lstrok',
5629    '\u0140': 'lmidot',
5630    '\u013F': 'Lmidot',
5631    '\uD835\uDD2A': 'mfr',
5632    '\uD835\uDD5E': 'mopf',
5633    '\uD835\uDCC2': 'mscr',
5634    '\uD835\uDD10': 'Mfr',
5635    '\uD835\uDD44': 'Mopf',
5636    '\u2133': 'Mscr',
5637    '\uD835\uDD2B': 'nfr',
5638    '\uD835\uDD5F': 'nopf',
5639    '\uD835\uDCC3': 'nscr',
5640    '\u2115': 'Nopf',
5641    '\uD835\uDCA9': 'Nscr',
5642    '\uD835\uDD11': 'Nfr',
5643    '\u0144': 'nacute',
5644    '\u0143': 'Nacute',
5645    '\u0148': 'ncaron',
5646    '\u0147': 'Ncaron',
5647    '\xF1': 'ntilde',
5648    '\xD1': 'Ntilde',
5649    '\u0146': 'ncedil',
5650    '\u0145': 'Ncedil',
5651    '\u2116': 'numero',
5652    '\u014B': 'eng',
5653    '\u014A': 'ENG',
5654    '\uD835\uDD60': 'oopf',
5655    '\uD835\uDD2C': 'ofr',
5656    '\u2134': 'oscr',
5657    '\uD835\uDCAA': 'Oscr',
5658    '\uD835\uDD12': 'Ofr',
5659    '\uD835\uDD46': 'Oopf',
5660    '\xBA': 'ordm',
5661    '\xF3': 'oacute',
5662    '\xD3': 'Oacute',
5663    '\xF2': 'ograve',
5664    '\xD2': 'Ograve',
5665    '\xF4': 'ocirc',
5666    '\xD4': 'Ocirc',
5667    '\xF6': 'ouml',
5668    '\xD6': 'Ouml',
5669    '\u0151': 'odblac',
5670    '\u0150': 'Odblac',
5671    '\xF5': 'otilde',
5672    '\xD5': 'Otilde',
5673    '\xF8': 'oslash',
5674    '\xD8': 'Oslash',
5675    '\u014D': 'omacr',
5676    '\u014C': 'Omacr',
5677    '\u0153': 'oelig',
5678    '\u0152': 'OElig',
5679    '\uD835\uDD2D': 'pfr',
5680    '\uD835\uDCC5': 'pscr',
5681    '\uD835\uDD61': 'popf',
5682    '\u2119': 'Popf',
5683    '\uD835\uDD13': 'Pfr',
5684    '\uD835\uDCAB': 'Pscr',
5685    '\uD835\uDD62': 'qopf',
5686    '\uD835\uDD2E': 'qfr',
5687    '\uD835\uDCC6': 'qscr',
5688    '\uD835\uDCAC': 'Qscr',
5689    '\uD835\uDD14': 'Qfr',
5690    '\u211A': 'Qopf',
5691    '\u0138': 'kgreen',
5692    '\uD835\uDD2F': 'rfr',
5693    '\uD835\uDD63': 'ropf',
5694    '\uD835\uDCC7': 'rscr',
5695    '\u211B': 'Rscr',
5696    '\u211C': 'Re',
5697    '\u211D': 'Ropf',
5698    '\u0155': 'racute',
5699    '\u0154': 'Racute',
5700    '\u0159': 'rcaron',
5701    '\u0158': 'Rcaron',
5702    '\u0157': 'rcedil',
5703    '\u0156': 'Rcedil',
5704    '\uD835\uDD64': 'sopf',
5705    '\uD835\uDCC8': 'sscr',
5706    '\uD835\uDD30': 'sfr',
5707    '\uD835\uDD4A': 'Sopf',
5708    '\uD835\uDD16': 'Sfr',
5709    '\uD835\uDCAE': 'Sscr',
5710    '\u24C8': 'oS',
5711    '\u015B': 'sacute',
5712    '\u015A': 'Sacute',
5713    '\u015D': 'scirc',
5714    '\u015C': 'Scirc',
5715    '\u0161': 'scaron',
5716    '\u0160': 'Scaron',
5717    '\u015F': 'scedil',
5718    '\u015E': 'Scedil',
5719    '\xDF': 'szlig',
5720    '\uD835\uDD31': 'tfr',
5721    '\uD835\uDCC9': 'tscr',
5722    '\uD835\uDD65': 'topf',
5723    '\uD835\uDCAF': 'Tscr',
5724    '\uD835\uDD17': 'Tfr',
5725    '\uD835\uDD4B': 'Topf',
5726    '\u0165': 'tcaron',
5727    '\u0164': 'Tcaron',
5728    '\u0163': 'tcedil',
5729    '\u0162': 'Tcedil',
5730    '\u2122': 'trade',
5731    '\u0167': 'tstrok',
5732    '\u0166': 'Tstrok',
5733    '\uD835\uDCCA': 'uscr',
5734    '\uD835\uDD66': 'uopf',
5735    '\uD835\uDD32': 'ufr',
5736    '\uD835\uDD4C': 'Uopf',
5737    '\uD835\uDD18': 'Ufr',
5738    '\uD835\uDCB0': 'Uscr',
5739    '\xFA': 'uacute',
5740    '\xDA': 'Uacute',
5741    '\xF9': 'ugrave',
5742    '\xD9': 'Ugrave',
5743    '\u016D': 'ubreve',
5744    '\u016C': 'Ubreve',
5745    '\xFB': 'ucirc',
5746    '\xDB': 'Ucirc',
5747    '\u016F': 'uring',
5748    '\u016E': 'Uring',
5749    '\xFC': 'uuml',
5750    '\xDC': 'Uuml',
5751    '\u0171': 'udblac',
5752    '\u0170': 'Udblac',
5753    '\u0169': 'utilde',
5754    '\u0168': 'Utilde',
5755    '\u0173': 'uogon',
5756    '\u0172': 'Uogon',
5757    '\u016B': 'umacr',
5758    '\u016A': 'Umacr',
5759    '\uD835\uDD33': 'vfr',
5760    '\uD835\uDD67': 'vopf',
5761    '\uD835\uDCCB': 'vscr',
5762    '\uD835\uDD19': 'Vfr',
5763    '\uD835\uDD4D': 'Vopf',
5764    '\uD835\uDCB1': 'Vscr',
5765    '\uD835\uDD68': 'wopf',
5766    '\uD835\uDCCC': 'wscr',
5767    '\uD835\uDD34': 'wfr',
5768    '\uD835\uDCB2': 'Wscr',
5769    '\uD835\uDD4E': 'Wopf',
5770    '\uD835\uDD1A': 'Wfr',
5771    '\u0175': 'wcirc',
5772    '\u0174': 'Wcirc',
5773    '\uD835\uDD35': 'xfr',
5774    '\uD835\uDCCD': 'xscr',
5775    '\uD835\uDD69': 'xopf',
5776    '\uD835\uDD4F': 'Xopf',
5777    '\uD835\uDD1B': 'Xfr',
5778    '\uD835\uDCB3': 'Xscr',
5779    '\uD835\uDD36': 'yfr',
5780    '\uD835\uDCCE': 'yscr',
5781    '\uD835\uDD6A': 'yopf',
5782    '\uD835\uDCB4': 'Yscr',
5783    '\uD835\uDD1C': 'Yfr',
5784    '\uD835\uDD50': 'Yopf',
5785    '\xFD': 'yacute',
5786    '\xDD': 'Yacute',
5787    '\u0177': 'ycirc',
5788    '\u0176': 'Ycirc',
5789    '\xFF': 'yuml',
5790    '\u0178': 'Yuml',
5791    '\uD835\uDCCF': 'zscr',
5792    '\uD835\uDD37': 'zfr',
5793    '\uD835\uDD6B': 'zopf',
5794    '\u2128': 'Zfr',
5795    '\u2124': 'Zopf',
5796    '\uD835\uDCB5': 'Zscr',
5797    '\u017A': 'zacute',
5798    '\u0179': 'Zacute',
5799    '\u017E': 'zcaron',
5800    '\u017D': 'Zcaron',
5801    '\u017C': 'zdot',
5802    '\u017B': 'Zdot',
5803    '\u01B5': 'imped',
5804    '\xFE': 'thorn',
5805    '\xDE': 'THORN',
5806    '\u0149': 'napos',
5807    '\u03B1': 'alpha',
5808    '\u0391': 'Alpha',
5809    '\u03B2': 'beta',
5810    '\u0392': 'Beta',
5811    '\u03B3': 'gamma',
5812    '\u0393': 'Gamma',
5813    '\u03B4': 'delta',
5814    '\u0394': 'Delta',
5815    '\u03B5': 'epsi',
5816    '\u03F5': 'epsiv',
5817    '\u0395': 'Epsilon',
5818    '\u03DD': 'gammad',
5819    '\u03DC': 'Gammad',
5820    '\u03B6': 'zeta',
5821    '\u0396': 'Zeta',
5822    '\u03B7': 'eta',
5823    '\u0397': 'Eta',
5824    '\u03B8': 'theta',
5825    '\u03D1': 'thetav',
5826    '\u0398': 'Theta',
5827    '\u03B9': 'iota',
5828    '\u0399': 'Iota',
5829    '\u03BA': 'kappa',
5830    '\u03F0': 'kappav',
5831    '\u039A': 'Kappa',
5832    '\u03BB': 'lambda',
5833    '\u039B': 'Lambda',
5834    '\u03BC': 'mu',
5835    '\xB5': 'micro',
5836    '\u039C': 'Mu',
5837    '\u03BD': 'nu',
5838    '\u039D': 'Nu',
5839    '\u03BE': 'xi',
5840    '\u039E': 'Xi',
5841    '\u03BF': 'omicron',
5842    '\u039F': 'Omicron',
5843    '\u03C0': 'pi',
5844    '\u03D6': 'piv',
5845    '\u03A0': 'Pi',
5846    '\u03C1': 'rho',
5847    '\u03F1': 'rhov',
5848    '\u03A1': 'Rho',
5849    '\u03C3': 'sigma',
5850    '\u03A3': 'Sigma',
5851    '\u03C2': 'sigmaf',
5852    '\u03C4': 'tau',
5853    '\u03A4': 'Tau',
5854    '\u03C5': 'upsi',
5855    '\u03A5': 'Upsilon',
5856    '\u03D2': 'Upsi',
5857    '\u03C6': 'phi',
5858    '\u03D5': 'phiv',
5859    '\u03A6': 'Phi',
5860    '\u03C7': 'chi',
5861    '\u03A7': 'Chi',
5862    '\u03C8': 'psi',
5863    '\u03A8': 'Psi',
5864    '\u03C9': 'omega',
5865    '\u03A9': 'ohm',
5866    '\u0430': 'acy',
5867    '\u0410': 'Acy',
5868    '\u0431': 'bcy',
5869    '\u0411': 'Bcy',
5870    '\u0432': 'vcy',
5871    '\u0412': 'Vcy',
5872    '\u0433': 'gcy',
5873    '\u0413': 'Gcy',
5874    '\u0453': 'gjcy',
5875    '\u0403': 'GJcy',
5876    '\u0434': 'dcy',
5877    '\u0414': 'Dcy',
5878    '\u0452': 'djcy',
5879    '\u0402': 'DJcy',
5880    '\u0435': 'iecy',
5881    '\u0415': 'IEcy',
5882    '\u0451': 'iocy',
5883    '\u0401': 'IOcy',
5884    '\u0454': 'jukcy',
5885    '\u0404': 'Jukcy',
5886    '\u0436': 'zhcy',
5887    '\u0416': 'ZHcy',
5888    '\u0437': 'zcy',
5889    '\u0417': 'Zcy',
5890    '\u0455': 'dscy',
5891    '\u0405': 'DScy',
5892    '\u0438': 'icy',
5893    '\u0418': 'Icy',
5894    '\u0456': 'iukcy',
5895    '\u0406': 'Iukcy',
5896    '\u0457': 'yicy',
5897    '\u0407': 'YIcy',
5898    '\u0439': 'jcy',
5899    '\u0419': 'Jcy',
5900    '\u0458': 'jsercy',
5901    '\u0408': 'Jsercy',
5902    '\u043A': 'kcy',
5903    '\u041A': 'Kcy',
5904    '\u045C': 'kjcy',
5905    '\u040C': 'KJcy',
5906    '\u043B': 'lcy',
5907    '\u041B': 'Lcy',
5908    '\u0459': 'ljcy',
5909    '\u0409': 'LJcy',
5910    '\u043C': 'mcy',
5911    '\u041C': 'Mcy',
5912    '\u043D': 'ncy',
5913    '\u041D': 'Ncy',
5914    '\u045A': 'njcy',
5915    '\u040A': 'NJcy',
5916    '\u043E': 'ocy',
5917    '\u041E': 'Ocy',
5918    '\u043F': 'pcy',
5919    '\u041F': 'Pcy',
5920    '\u0440': 'rcy',
5921    '\u0420': 'Rcy',
5922    '\u0441': 'scy',
5923    '\u0421': 'Scy',
5924    '\u0442': 'tcy',
5925    '\u0422': 'Tcy',
5926    '\u045B': 'tshcy',
5927    '\u040B': 'TSHcy',
5928    '\u0443': 'ucy',
5929    '\u0423': 'Ucy',
5930    '\u045E': 'ubrcy',
5931    '\u040E': 'Ubrcy',
5932    '\u0444': 'fcy',
5933    '\u0424': 'Fcy',
5934    '\u0445': 'khcy',
5935    '\u0425': 'KHcy',
5936    '\u0446': 'tscy',
5937    '\u0426': 'TScy',
5938    '\u0447': 'chcy',
5939    '\u0427': 'CHcy',
5940    '\u045F': 'dzcy',
5941    '\u040F': 'DZcy',
5942    '\u0448': 'shcy',
5943    '\u0428': 'SHcy',
5944    '\u0449': 'shchcy',
5945    '\u0429': 'SHCHcy',
5946    '\u044A': 'hardcy',
5947    '\u042A': 'HARDcy',
5948    '\u044B': 'ycy',
5949    '\u042B': 'Ycy',
5950    '\u044C': 'softcy',
5951    '\u042C': 'SOFTcy',
5952    '\u044D': 'ecy',
5953    '\u042D': 'Ecy',
5954    '\u044E': 'yucy',
5955    '\u042E': 'YUcy',
5956    '\u044F': 'yacy',
5957    '\u042F': 'YAcy',
5958    '\u2135': 'aleph',
5959    '\u2136': 'beth',
5960    '\u2137': 'gimel',
5961    '\u2138': 'daleth'
5962  };
5963  var regexEscape = /["&'<>`]/g;
5964  var escapeMap = {
5965    '"': '&quot;',
5966    '&': '&amp;',
5967    '\'': '&#x27;',
5968    '<': '&lt;',
5969    // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
5970    // following is not strictly necessary unless it’s part of a tag or an
5971    // unquoted attribute value. We’re only escaping it to support those
5972    // situations, and for XML support.
5973    '>': '&gt;',
5974    // In Internet Explorer ≤ 8, the backtick character can be used
5975    // to break out of (un)quoted attribute values or HTML comments.
5976    // See http://html5sec.org/#102, http://html5sec.org/#108, and
5977    // http://html5sec.org/#133.
5978    '`': '&#x60;'
5979  };
5980  var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
5981  var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
5982  var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;
5983  var decodeMap = {
5984    'aacute': '\xE1',
5985    'Aacute': '\xC1',
5986    'abreve': '\u0103',
5987    'Abreve': '\u0102',
5988    'ac': '\u223E',
5989    'acd': '\u223F',
5990    'acE': '\u223E\u0333',
5991    'acirc': '\xE2',
5992    'Acirc': '\xC2',
5993    'acute': '\xB4',
5994    'acy': '\u0430',
5995    'Acy': '\u0410',
5996    'aelig': '\xE6',
5997    'AElig': '\xC6',
5998    'af': '\u2061',
5999    'afr': '\uD835\uDD1E',
6000    'Afr': '\uD835\uDD04',
6001    'agrave': '\xE0',
6002    'Agrave': '\xC0',
6003    'alefsym': '\u2135',
6004    'aleph': '\u2135',
6005    'alpha': '\u03B1',
6006    'Alpha': '\u0391',
6007    'amacr': '\u0101',
6008    'Amacr': '\u0100',
6009    'amalg': '\u2A3F',
6010    'amp': '&',
6011    'AMP': '&',
6012    'and': '\u2227',
6013    'And': '\u2A53',
6014    'andand': '\u2A55',
6015    'andd': '\u2A5C',
6016    'andslope': '\u2A58',
6017    'andv': '\u2A5A',
6018    'ang': '\u2220',
6019    'ange': '\u29A4',
6020    'angle': '\u2220',
6021    'angmsd': '\u2221',
6022    'angmsdaa': '\u29A8',
6023    'angmsdab': '\u29A9',
6024    'angmsdac': '\u29AA',
6025    'angmsdad': '\u29AB',
6026    'angmsdae': '\u29AC',
6027    'angmsdaf': '\u29AD',
6028    'angmsdag': '\u29AE',
6029    'angmsdah': '\u29AF',
6030    'angrt': '\u221F',
6031    'angrtvb': '\u22BE',
6032    'angrtvbd': '\u299D',
6033    'angsph': '\u2222',
6034    'angst': '\xC5',
6035    'angzarr': '\u237C',
6036    'aogon': '\u0105',
6037    'Aogon': '\u0104',
6038    'aopf': '\uD835\uDD52',
6039    'Aopf': '\uD835\uDD38',
6040    'ap': '\u2248',
6041    'apacir': '\u2A6F',
6042    'ape': '\u224A',
6043    'apE': '\u2A70',
6044    'apid': '\u224B',
6045    'apos': '\'',
6046    'ApplyFunction': '\u2061',
6047    'approx': '\u2248',
6048    'approxeq': '\u224A',
6049    'aring': '\xE5',
6050    'Aring': '\xC5',
6051    'ascr': '\uD835\uDCB6',
6052    'Ascr': '\uD835\uDC9C',
6053    'Assign': '\u2254',
6054    'ast': '*',
6055    'asymp': '\u2248',
6056    'asympeq': '\u224D',
6057    'atilde': '\xE3',
6058    'Atilde': '\xC3',
6059    'auml': '\xE4',
6060    'Auml': '\xC4',
6061    'awconint': '\u2233',
6062    'awint': '\u2A11',
6063    'backcong': '\u224C',
6064    'backepsilon': '\u03F6',
6065    'backprime': '\u2035',
6066    'backsim': '\u223D',
6067    'backsimeq': '\u22CD',
6068    'Backslash': '\u2216',
6069    'Barv': '\u2AE7',
6070    'barvee': '\u22BD',
6071    'barwed': '\u2305',
6072    'Barwed': '\u2306',
6073    'barwedge': '\u2305',
6074    'bbrk': '\u23B5',
6075    'bbrktbrk': '\u23B6',
6076    'bcong': '\u224C',
6077    'bcy': '\u0431',
6078    'Bcy': '\u0411',
6079    'bdquo': '\u201E',
6080    'becaus': '\u2235',
6081    'because': '\u2235',
6082    'Because': '\u2235',
6083    'bemptyv': '\u29B0',
6084    'bepsi': '\u03F6',
6085    'bernou': '\u212C',
6086    'Bernoullis': '\u212C',
6087    'beta': '\u03B2',
6088    'Beta': '\u0392',
6089    'beth': '\u2136',
6090    'between': '\u226C',
6091    'bfr': '\uD835\uDD1F',
6092    'Bfr': '\uD835\uDD05',
6093    'bigcap': '\u22C2',
6094    'bigcirc': '\u25EF',
6095    'bigcup': '\u22C3',
6096    'bigodot': '\u2A00',
6097    'bigoplus': '\u2A01',
6098    'bigotimes': '\u2A02',
6099    'bigsqcup': '\u2A06',
6100    'bigstar': '\u2605',
6101    'bigtriangledown': '\u25BD',
6102    'bigtriangleup': '\u25B3',
6103    'biguplus': '\u2A04',
6104    'bigvee': '\u22C1',
6105    'bigwedge': '\u22C0',
6106    'bkarow': '\u290D',
6107    'blacklozenge': '\u29EB',
6108    'blacksquare': '\u25AA',
6109    'blacktriangle': '\u25B4',
6110    'blacktriangledown': '\u25BE',
6111    'blacktriangleleft': '\u25C2',
6112    'blacktriangleright': '\u25B8',
6113    'blank': '\u2423',
6114    'blk12': '\u2592',
6115    'blk14': '\u2591',
6116    'blk34': '\u2593',
6117    'block': '\u2588',
6118    'bne': '=\u20E5',
6119    'bnequiv': '\u2261\u20E5',
6120    'bnot': '\u2310',
6121    'bNot': '\u2AED',
6122    'bopf': '\uD835\uDD53',
6123    'Bopf': '\uD835\uDD39',
6124    'bot': '\u22A5',
6125    'bottom': '\u22A5',
6126    'bowtie': '\u22C8',
6127    'boxbox': '\u29C9',
6128    'boxdl': '\u2510',
6129    'boxdL': '\u2555',
6130    'boxDl': '\u2556',
6131    'boxDL': '\u2557',
6132    'boxdr': '\u250C',
6133    'boxdR': '\u2552',
6134    'boxDr': '\u2553',
6135    'boxDR': '\u2554',
6136    'boxh': '\u2500',
6137    'boxH': '\u2550',
6138    'boxhd': '\u252C',
6139    'boxhD': '\u2565',
6140    'boxHd': '\u2564',
6141    'boxHD': '\u2566',
6142    'boxhu': '\u2534',
6143    'boxhU': '\u2568',
6144    'boxHu': '\u2567',
6145    'boxHU': '\u2569',
6146    'boxminus': '\u229F',
6147    'boxplus': '\u229E',
6148    'boxtimes': '\u22A0',
6149    'boxul': '\u2518',
6150    'boxuL': '\u255B',
6151    'boxUl': '\u255C',
6152    'boxUL': '\u255D',
6153    'boxur': '\u2514',
6154    'boxuR': '\u2558',
6155    'boxUr': '\u2559',
6156    'boxUR': '\u255A',
6157    'boxv': '\u2502',
6158    'boxV': '\u2551',
6159    'boxvh': '\u253C',
6160    'boxvH': '\u256A',
6161    'boxVh': '\u256B',
6162    'boxVH': '\u256C',
6163    'boxvl': '\u2524',
6164    'boxvL': '\u2561',
6165    'boxVl': '\u2562',
6166    'boxVL': '\u2563',
6167    'boxvr': '\u251C',
6168    'boxvR': '\u255E',
6169    'boxVr': '\u255F',
6170    'boxVR': '\u2560',
6171    'bprime': '\u2035',
6172    'breve': '\u02D8',
6173    'Breve': '\u02D8',
6174    'brvbar': '\xA6',
6175    'bscr': '\uD835\uDCB7',
6176    'Bscr': '\u212C',
6177    'bsemi': '\u204F',
6178    'bsim': '\u223D',
6179    'bsime': '\u22CD',
6180    'bsol': '\\',
6181    'bsolb': '\u29C5',
6182    'bsolhsub': '\u27C8',
6183    'bull': '\u2022',
6184    'bullet': '\u2022',
6185    'bump': '\u224E',
6186    'bumpe': '\u224F',
6187    'bumpE': '\u2AAE',
6188    'bumpeq': '\u224F',
6189    'Bumpeq': '\u224E',
6190    'cacute': '\u0107',
6191    'Cacute': '\u0106',
6192    'cap': '\u2229',
6193    'Cap': '\u22D2',
6194    'capand': '\u2A44',
6195    'capbrcup': '\u2A49',
6196    'capcap': '\u2A4B',
6197    'capcup': '\u2A47',
6198    'capdot': '\u2A40',
6199    'CapitalDifferentialD': '\u2145',
6200    'caps': '\u2229\uFE00',
6201    'caret': '\u2041',
6202    'caron': '\u02C7',
6203    'Cayleys': '\u212D',
6204    'ccaps': '\u2A4D',
6205    'ccaron': '\u010D',
6206    'Ccaron': '\u010C',
6207    'ccedil': '\xE7',
6208    'Ccedil': '\xC7',
6209    'ccirc': '\u0109',
6210    'Ccirc': '\u0108',
6211    'Cconint': '\u2230',
6212    'ccups': '\u2A4C',
6213    'ccupssm': '\u2A50',
6214    'cdot': '\u010B',
6215    'Cdot': '\u010A',
6216    'cedil': '\xB8',
6217    'Cedilla': '\xB8',
6218    'cemptyv': '\u29B2',
6219    'cent': '\xA2',
6220    'centerdot': '\xB7',
6221    'CenterDot': '\xB7',
6222    'cfr': '\uD835\uDD20',
6223    'Cfr': '\u212D',
6224    'chcy': '\u0447',
6225    'CHcy': '\u0427',
6226    'check': '\u2713',
6227    'checkmark': '\u2713',
6228    'chi': '\u03C7',
6229    'Chi': '\u03A7',
6230    'cir': '\u25CB',
6231    'circ': '\u02C6',
6232    'circeq': '\u2257',
6233    'circlearrowleft': '\u21BA',
6234    'circlearrowright': '\u21BB',
6235    'circledast': '\u229B',
6236    'circledcirc': '\u229A',
6237    'circleddash': '\u229D',
6238    'CircleDot': '\u2299',
6239    'circledR': '\xAE',
6240    'circledS': '\u24C8',
6241    'CircleMinus': '\u2296',
6242    'CirclePlus': '\u2295',
6243    'CircleTimes': '\u2297',
6244    'cire': '\u2257',
6245    'cirE': '\u29C3',
6246    'cirfnint': '\u2A10',
6247    'cirmid': '\u2AEF',
6248    'cirscir': '\u29C2',
6249    'ClockwiseContourIntegral': '\u2232',
6250    'CloseCurlyDoubleQuote': '\u201D',
6251    'CloseCurlyQuote': '\u2019',
6252    'clubs': '\u2663',
6253    'clubsuit': '\u2663',
6254    'colon': ':',
6255    'Colon': '\u2237',
6256    'colone': '\u2254',
6257    'Colone': '\u2A74',
6258    'coloneq': '\u2254',
6259    'comma': ',',
6260    'commat': '@',
6261    'comp': '\u2201',
6262    'compfn': '\u2218',
6263    'complement': '\u2201',
6264    'complexes': '\u2102',
6265    'cong': '\u2245',
6266    'congdot': '\u2A6D',
6267    'Congruent': '\u2261',
6268    'conint': '\u222E',
6269    'Conint': '\u222F',
6270    'ContourIntegral': '\u222E',
6271    'copf': '\uD835\uDD54',
6272    'Copf': '\u2102',
6273    'coprod': '\u2210',
6274    'Coproduct': '\u2210',
6275    'copy': '\xA9',
6276    'COPY': '\xA9',
6277    'copysr': '\u2117',
6278    'CounterClockwiseContourIntegral': '\u2233',
6279    'crarr': '\u21B5',
6280    'cross': '\u2717',
6281    'Cross': '\u2A2F',
6282    'cscr': '\uD835\uDCB8',
6283    'Cscr': '\uD835\uDC9E',
6284    'csub': '\u2ACF',
6285    'csube': '\u2AD1',
6286    'csup': '\u2AD0',
6287    'csupe': '\u2AD2',
6288    'ctdot': '\u22EF',
6289    'cudarrl': '\u2938',
6290    'cudarrr': '\u2935',
6291    'cuepr': '\u22DE',
6292    'cuesc': '\u22DF',
6293    'cularr': '\u21B6',
6294    'cularrp': '\u293D',
6295    'cup': '\u222A',
6296    'Cup': '\u22D3',
6297    'cupbrcap': '\u2A48',
6298    'cupcap': '\u2A46',
6299    'CupCap': '\u224D',
6300    'cupcup': '\u2A4A',
6301    'cupdot': '\u228D',
6302    'cupor': '\u2A45',
6303    'cups': '\u222A\uFE00',
6304    'curarr': '\u21B7',
6305    'curarrm': '\u293C',
6306    'curlyeqprec': '\u22DE',
6307    'curlyeqsucc': '\u22DF',
6308    'curlyvee': '\u22CE',
6309    'curlywedge': '\u22CF',
6310    'curren': '\xA4',
6311    'curvearrowleft': '\u21B6',
6312    'curvearrowright': '\u21B7',
6313    'cuvee': '\u22CE',
6314    'cuwed': '\u22CF',
6315    'cwconint': '\u2232',
6316    'cwint': '\u2231',
6317    'cylcty': '\u232D',
6318    'dagger': '\u2020',
6319    'Dagger': '\u2021',
6320    'daleth': '\u2138',
6321    'darr': '\u2193',
6322    'dArr': '\u21D3',
6323    'Darr': '\u21A1',
6324    'dash': '\u2010',
6325    'dashv': '\u22A3',
6326    'Dashv': '\u2AE4',
6327    'dbkarow': '\u290F',
6328    'dblac': '\u02DD',
6329    'dcaron': '\u010F',
6330    'Dcaron': '\u010E',
6331    'dcy': '\u0434',
6332    'Dcy': '\u0414',
6333    'dd': '\u2146',
6334    'DD': '\u2145',
6335    'ddagger': '\u2021',
6336    'ddarr': '\u21CA',
6337    'DDotrahd': '\u2911',
6338    'ddotseq': '\u2A77',
6339    'deg': '\xB0',
6340    'Del': '\u2207',
6341    'delta': '\u03B4',
6342    'Delta': '\u0394',
6343    'demptyv': '\u29B1',
6344    'dfisht': '\u297F',
6345    'dfr': '\uD835\uDD21',
6346    'Dfr': '\uD835\uDD07',
6347    'dHar': '\u2965',
6348    'dharl': '\u21C3',
6349    'dharr': '\u21C2',
6350    'DiacriticalAcute': '\xB4',
6351    'DiacriticalDot': '\u02D9',
6352    'DiacriticalDoubleAcute': '\u02DD',
6353    'DiacriticalGrave': '`',
6354    'DiacriticalTilde': '\u02DC',
6355    'diam': '\u22C4',
6356    'diamond': '\u22C4',
6357    'Diamond': '\u22C4',
6358    'diamondsuit': '\u2666',
6359    'diams': '\u2666',
6360    'die': '\xA8',
6361    'DifferentialD': '\u2146',
6362    'digamma': '\u03DD',
6363    'disin': '\u22F2',
6364    'div': '\xF7',
6365    'divide': '\xF7',
6366    'divideontimes': '\u22C7',
6367    'divonx': '\u22C7',
6368    'djcy': '\u0452',
6369    'DJcy': '\u0402',
6370    'dlcorn': '\u231E',
6371    'dlcrop': '\u230D',
6372    'dollar': '$',
6373    'dopf': '\uD835\uDD55',
6374    'Dopf': '\uD835\uDD3B',
6375    'dot': '\u02D9',
6376    'Dot': '\xA8',
6377    'DotDot': '\u20DC',
6378    'doteq': '\u2250',
6379    'doteqdot': '\u2251',
6380    'DotEqual': '\u2250',
6381    'dotminus': '\u2238',
6382    'dotplus': '\u2214',
6383    'dotsquare': '\u22A1',
6384    'doublebarwedge': '\u2306',
6385    'DoubleContourIntegral': '\u222F',
6386    'DoubleDot': '\xA8',
6387    'DoubleDownArrow': '\u21D3',
6388    'DoubleLeftArrow': '\u21D0',
6389    'DoubleLeftRightArrow': '\u21D4',
6390    'DoubleLeftTee': '\u2AE4',
6391    'DoubleLongLeftArrow': '\u27F8',
6392    'DoubleLongLeftRightArrow': '\u27FA',
6393    'DoubleLongRightArrow': '\u27F9',
6394    'DoubleRightArrow': '\u21D2',
6395    'DoubleRightTee': '\u22A8',
6396    'DoubleUpArrow': '\u21D1',
6397    'DoubleUpDownArrow': '\u21D5',
6398    'DoubleVerticalBar': '\u2225',
6399    'downarrow': '\u2193',
6400    'Downarrow': '\u21D3',
6401    'DownArrow': '\u2193',
6402    'DownArrowBar': '\u2913',
6403    'DownArrowUpArrow': '\u21F5',
6404    'DownBreve': '\u0311',
6405    'downdownarrows': '\u21CA',
6406    'downharpoonleft': '\u21C3',
6407    'downharpoonright': '\u21C2',
6408    'DownLeftRightVector': '\u2950',
6409    'DownLeftTeeVector': '\u295E',
6410    'DownLeftVector': '\u21BD',
6411    'DownLeftVectorBar': '\u2956',
6412    'DownRightTeeVector': '\u295F',
6413    'DownRightVector': '\u21C1',
6414    'DownRightVectorBar': '\u2957',
6415    'DownTee': '\u22A4',
6416    'DownTeeArrow': '\u21A7',
6417    'drbkarow': '\u2910',
6418    'drcorn': '\u231F',
6419    'drcrop': '\u230C',
6420    'dscr': '\uD835\uDCB9',
6421    'Dscr': '\uD835\uDC9F',
6422    'dscy': '\u0455',
6423    'DScy': '\u0405',
6424    'dsol': '\u29F6',
6425    'dstrok': '\u0111',
6426    'Dstrok': '\u0110',
6427    'dtdot': '\u22F1',
6428    'dtri': '\u25BF',
6429    'dtrif': '\u25BE',
6430    'duarr': '\u21F5',
6431    'duhar': '\u296F',
6432    'dwangle': '\u29A6',
6433    'dzcy': '\u045F',
6434    'DZcy': '\u040F',
6435    'dzigrarr': '\u27FF',
6436    'eacute': '\xE9',
6437    'Eacute': '\xC9',
6438    'easter': '\u2A6E',
6439    'ecaron': '\u011B',
6440    'Ecaron': '\u011A',
6441    'ecir': '\u2256',
6442    'ecirc': '\xEA',
6443    'Ecirc': '\xCA',
6444    'ecolon': '\u2255',
6445    'ecy': '\u044D',
6446    'Ecy': '\u042D',
6447    'eDDot': '\u2A77',
6448    'edot': '\u0117',
6449    'eDot': '\u2251',
6450    'Edot': '\u0116',
6451    'ee': '\u2147',
6452    'efDot': '\u2252',
6453    'efr': '\uD835\uDD22',
6454    'Efr': '\uD835\uDD08',
6455    'eg': '\u2A9A',
6456    'egrave': '\xE8',
6457    'Egrave': '\xC8',
6458    'egs': '\u2A96',
6459    'egsdot': '\u2A98',
6460    'el': '\u2A99',
6461    'Element': '\u2208',
6462    'elinters': '\u23E7',
6463    'ell': '\u2113',
6464    'els': '\u2A95',
6465    'elsdot': '\u2A97',
6466    'emacr': '\u0113',
6467    'Emacr': '\u0112',
6468    'empty': '\u2205',
6469    'emptyset': '\u2205',
6470    'EmptySmallSquare': '\u25FB',
6471    'emptyv': '\u2205',
6472    'EmptyVerySmallSquare': '\u25AB',
6473    'emsp': '\u2003',
6474    'emsp13': '\u2004',
6475    'emsp14': '\u2005',
6476    'eng': '\u014B',
6477    'ENG': '\u014A',
6478    'ensp': '\u2002',
6479    'eogon': '\u0119',
6480    'Eogon': '\u0118',
6481    'eopf': '\uD835\uDD56',
6482    'Eopf': '\uD835\uDD3C',
6483    'epar': '\u22D5',
6484    'eparsl': '\u29E3',
6485    'eplus': '\u2A71',
6486    'epsi': '\u03B5',
6487    'epsilon': '\u03B5',
6488    'Epsilon': '\u0395',
6489    'epsiv': '\u03F5',
6490    'eqcirc': '\u2256',
6491    'eqcolon': '\u2255',
6492    'eqsim': '\u2242',
6493    'eqslantgtr': '\u2A96',
6494    'eqslantless': '\u2A95',
6495    'Equal': '\u2A75',
6496    'equals': '=',
6497    'EqualTilde': '\u2242',
6498    'equest': '\u225F',
6499    'Equilibrium': '\u21CC',
6500    'equiv': '\u2261',
6501    'equivDD': '\u2A78',
6502    'eqvparsl': '\u29E5',
6503    'erarr': '\u2971',
6504    'erDot': '\u2253',
6505    'escr': '\u212F',
6506    'Escr': '\u2130',
6507    'esdot': '\u2250',
6508    'esim': '\u2242',
6509    'Esim': '\u2A73',
6510    'eta': '\u03B7',
6511    'Eta': '\u0397',
6512    'eth': '\xF0',
6513    'ETH': '\xD0',
6514    'euml': '\xEB',
6515    'Euml': '\xCB',
6516    'euro': '\u20AC',
6517    'excl': '!',
6518    'exist': '\u2203',
6519    'Exists': '\u2203',
6520    'expectation': '\u2130',
6521    'exponentiale': '\u2147',
6522    'ExponentialE': '\u2147',
6523    'fallingdotseq': '\u2252',
6524    'fcy': '\u0444',
6525    'Fcy': '\u0424',
6526    'female': '\u2640',
6527    'ffilig': '\uFB03',
6528    'fflig': '\uFB00',
6529    'ffllig': '\uFB04',
6530    'ffr': '\uD835\uDD23',
6531    'Ffr': '\uD835\uDD09',
6532    'filig': '\uFB01',
6533    'FilledSmallSquare': '\u25FC',
6534    'FilledVerySmallSquare': '\u25AA',
6535    'fjlig': 'fj',
6536    'flat': '\u266D',
6537    'fllig': '\uFB02',
6538    'fltns': '\u25B1',
6539    'fnof': '\u0192',
6540    'fopf': '\uD835\uDD57',
6541    'Fopf': '\uD835\uDD3D',
6542    'forall': '\u2200',
6543    'ForAll': '\u2200',
6544    'fork': '\u22D4',
6545    'forkv': '\u2AD9',
6546    'Fouriertrf': '\u2131',
6547    'fpartint': '\u2A0D',
6548    'frac12': '\xBD',
6549    'frac13': '\u2153',
6550    'frac14': '\xBC',
6551    'frac15': '\u2155',
6552    'frac16': '\u2159',
6553    'frac18': '\u215B',
6554    'frac23': '\u2154',
6555    'frac25': '\u2156',
6556    'frac34': '\xBE',
6557    'frac35': '\u2157',
6558    'frac38': '\u215C',
6559    'frac45': '\u2158',
6560    'frac56': '\u215A',
6561    'frac58': '\u215D',
6562    'frac78': '\u215E',
6563    'frasl': '\u2044',
6564    'frown': '\u2322',
6565    'fscr': '\uD835\uDCBB',
6566    'Fscr': '\u2131',
6567    'gacute': '\u01F5',
6568    'gamma': '\u03B3',
6569    'Gamma': '\u0393',
6570    'gammad': '\u03DD',
6571    'Gammad': '\u03DC',
6572    'gap': '\u2A86',
6573    'gbreve': '\u011F',
6574    'Gbreve': '\u011E',
6575    'Gcedil': '\u0122',
6576    'gcirc': '\u011D',
6577    'Gcirc': '\u011C',
6578    'gcy': '\u0433',
6579    'Gcy': '\u0413',
6580    'gdot': '\u0121',
6581    'Gdot': '\u0120',
6582    'ge': '\u2265',
6583    'gE': '\u2267',
6584    'gel': '\u22DB',
6585    'gEl': '\u2A8C',
6586    'geq': '\u2265',
6587    'geqq': '\u2267',
6588    'geqslant': '\u2A7E',
6589    'ges': '\u2A7E',
6590    'gescc': '\u2AA9',
6591    'gesdot': '\u2A80',
6592    'gesdoto': '\u2A82',
6593    'gesdotol': '\u2A84',
6594    'gesl': '\u22DB\uFE00',
6595    'gesles': '\u2A94',
6596    'gfr': '\uD835\uDD24',
6597    'Gfr': '\uD835\uDD0A',
6598    'gg': '\u226B',
6599    'Gg': '\u22D9',
6600    'ggg': '\u22D9',
6601    'gimel': '\u2137',
6602    'gjcy': '\u0453',
6603    'GJcy': '\u0403',
6604    'gl': '\u2277',
6605    'gla': '\u2AA5',
6606    'glE': '\u2A92',
6607    'glj': '\u2AA4',
6608    'gnap': '\u2A8A',
6609    'gnapprox': '\u2A8A',
6610    'gne': '\u2A88',
6611    'gnE': '\u2269',
6612    'gneq': '\u2A88',
6613    'gneqq': '\u2269',
6614    'gnsim': '\u22E7',
6615    'gopf': '\uD835\uDD58',
6616    'Gopf': '\uD835\uDD3E',
6617    'grave': '`',
6618    'GreaterEqual': '\u2265',
6619    'GreaterEqualLess': '\u22DB',
6620    'GreaterFullEqual': '\u2267',
6621    'GreaterGreater': '\u2AA2',
6622    'GreaterLess': '\u2277',
6623    'GreaterSlantEqual': '\u2A7E',
6624    'GreaterTilde': '\u2273',
6625    'gscr': '\u210A',
6626    'Gscr': '\uD835\uDCA2',
6627    'gsim': '\u2273',
6628    'gsime': '\u2A8E',
6629    'gsiml': '\u2A90',
6630    'gt': '>',
6631    'Gt': '\u226B',
6632    'GT': '>',
6633    'gtcc': '\u2AA7',
6634    'gtcir': '\u2A7A',
6635    'gtdot': '\u22D7',
6636    'gtlPar': '\u2995',
6637    'gtquest': '\u2A7C',
6638    'gtrapprox': '\u2A86',
6639    'gtrarr': '\u2978',
6640    'gtrdot': '\u22D7',
6641    'gtreqless': '\u22DB',
6642    'gtreqqless': '\u2A8C',
6643    'gtrless': '\u2277',
6644    'gtrsim': '\u2273',
6645    'gvertneqq': '\u2269\uFE00',
6646    'gvnE': '\u2269\uFE00',
6647    'Hacek': '\u02C7',
6648    'hairsp': '\u200A',
6649    'half': '\xBD',
6650    'hamilt': '\u210B',
6651    'hardcy': '\u044A',
6652    'HARDcy': '\u042A',
6653    'harr': '\u2194',
6654    'hArr': '\u21D4',
6655    'harrcir': '\u2948',
6656    'harrw': '\u21AD',
6657    'Hat': '^',
6658    'hbar': '\u210F',
6659    'hcirc': '\u0125',
6660    'Hcirc': '\u0124',
6661    'hearts': '\u2665',
6662    'heartsuit': '\u2665',
6663    'hellip': '\u2026',
6664    'hercon': '\u22B9',
6665    'hfr': '\uD835\uDD25',
6666    'Hfr': '\u210C',
6667    'HilbertSpace': '\u210B',
6668    'hksearow': '\u2925',
6669    'hkswarow': '\u2926',
6670    'hoarr': '\u21FF',
6671    'homtht': '\u223B',
6672    'hookleftarrow': '\u21A9',
6673    'hookrightarrow': '\u21AA',
6674    'hopf': '\uD835\uDD59',
6675    'Hopf': '\u210D',
6676    'horbar': '\u2015',
6677    'HorizontalLine': '\u2500',
6678    'hscr': '\uD835\uDCBD',
6679    'Hscr': '\u210B',
6680    'hslash': '\u210F',
6681    'hstrok': '\u0127',
6682    'Hstrok': '\u0126',
6683    'HumpDownHump': '\u224E',
6684    'HumpEqual': '\u224F',
6685    'hybull': '\u2043',
6686    'hyphen': '\u2010',
6687    'iacute': '\xED',
6688    'Iacute': '\xCD',
6689    'ic': '\u2063',
6690    'icirc': '\xEE',
6691    'Icirc': '\xCE',
6692    'icy': '\u0438',
6693    'Icy': '\u0418',
6694    'Idot': '\u0130',
6695    'iecy': '\u0435',
6696    'IEcy': '\u0415',
6697    'iexcl': '\xA1',
6698    'iff': '\u21D4',
6699    'ifr': '\uD835\uDD26',
6700    'Ifr': '\u2111',
6701    'igrave': '\xEC',
6702    'Igrave': '\xCC',
6703    'ii': '\u2148',
6704    'iiiint': '\u2A0C',
6705    'iiint': '\u222D',
6706    'iinfin': '\u29DC',
6707    'iiota': '\u2129',
6708    'ijlig': '\u0133',
6709    'IJlig': '\u0132',
6710    'Im': '\u2111',
6711    'imacr': '\u012B',
6712    'Imacr': '\u012A',
6713    'image': '\u2111',
6714    'ImaginaryI': '\u2148',
6715    'imagline': '\u2110',
6716    'imagpart': '\u2111',
6717    'imath': '\u0131',
6718    'imof': '\u22B7',
6719    'imped': '\u01B5',
6720    'Implies': '\u21D2',
6721    'in': '\u2208',
6722    'incare': '\u2105',
6723    'infin': '\u221E',
6724    'infintie': '\u29DD',
6725    'inodot': '\u0131',
6726    'int': '\u222B',
6727    'Int': '\u222C',
6728    'intcal': '\u22BA',
6729    'integers': '\u2124',
6730    'Integral': '\u222B',
6731    'intercal': '\u22BA',
6732    'Intersection': '\u22C2',
6733    'intlarhk': '\u2A17',
6734    'intprod': '\u2A3C',
6735    'InvisibleComma': '\u2063',
6736    'InvisibleTimes': '\u2062',
6737    'iocy': '\u0451',
6738    'IOcy': '\u0401',
6739    'iogon': '\u012F',
6740    'Iogon': '\u012E',
6741    'iopf': '\uD835\uDD5A',
6742    'Iopf': '\uD835\uDD40',
6743    'iota': '\u03B9',
6744    'Iota': '\u0399',
6745    'iprod': '\u2A3C',
6746    'iquest': '\xBF',
6747    'iscr': '\uD835\uDCBE',
6748    'Iscr': '\u2110',
6749    'isin': '\u2208',
6750    'isindot': '\u22F5',
6751    'isinE': '\u22F9',
6752    'isins': '\u22F4',
6753    'isinsv': '\u22F3',
6754    'isinv': '\u2208',
6755    'it': '\u2062',
6756    'itilde': '\u0129',
6757    'Itilde': '\u0128',
6758    'iukcy': '\u0456',
6759    'Iukcy': '\u0406',
6760    'iuml': '\xEF',
6761    'Iuml': '\xCF',
6762    'jcirc': '\u0135',
6763    'Jcirc': '\u0134',
6764    'jcy': '\u0439',
6765    'Jcy': '\u0419',
6766    'jfr': '\uD835\uDD27',
6767    'Jfr': '\uD835\uDD0D',
6768    'jmath': '\u0237',
6769    'jopf': '\uD835\uDD5B',
6770    'Jopf': '\uD835\uDD41',
6771    'jscr': '\uD835\uDCBF',
6772    'Jscr': '\uD835\uDCA5',
6773    'jsercy': '\u0458',
6774    'Jsercy': '\u0408',
6775    'jukcy': '\u0454',
6776    'Jukcy': '\u0404',
6777    'kappa': '\u03BA',
6778    'Kappa': '\u039A',
6779    'kappav': '\u03F0',
6780    'kcedil': '\u0137',
6781    'Kcedil': '\u0136',
6782    'kcy': '\u043A',
6783    'Kcy': '\u041A',
6784    'kfr': '\uD835\uDD28',
6785    'Kfr': '\uD835\uDD0E',
6786    'kgreen': '\u0138',
6787    'khcy': '\u0445',
6788    'KHcy': '\u0425',
6789    'kjcy': '\u045C',
6790    'KJcy': '\u040C',
6791    'kopf': '\uD835\uDD5C',
6792    'Kopf': '\uD835\uDD42',
6793    'kscr': '\uD835\uDCC0',
6794    'Kscr': '\uD835\uDCA6',
6795    'lAarr': '\u21DA',
6796    'lacute': '\u013A',
6797    'Lacute': '\u0139',
6798    'laemptyv': '\u29B4',
6799    'lagran': '\u2112',
6800    'lambda': '\u03BB',
6801    'Lambda': '\u039B',
6802    'lang': '\u27E8',
6803    'Lang': '\u27EA',
6804    'langd': '\u2991',
6805    'langle': '\u27E8',
6806    'lap': '\u2A85',
6807    'Laplacetrf': '\u2112',
6808    'laquo': '\xAB',
6809    'larr': '\u2190',
6810    'lArr': '\u21D0',
6811    'Larr': '\u219E',
6812    'larrb': '\u21E4',
6813    'larrbfs': '\u291F',
6814    'larrfs': '\u291D',
6815    'larrhk': '\u21A9',
6816    'larrlp': '\u21AB',
6817    'larrpl': '\u2939',
6818    'larrsim': '\u2973',
6819    'larrtl': '\u21A2',
6820    'lat': '\u2AAB',
6821    'latail': '\u2919',
6822    'lAtail': '\u291B',
6823    'late': '\u2AAD',
6824    'lates': '\u2AAD\uFE00',
6825    'lbarr': '\u290C',
6826    'lBarr': '\u290E',
6827    'lbbrk': '\u2772',
6828    'lbrace': '{',
6829    'lbrack': '[',
6830    'lbrke': '\u298B',
6831    'lbrksld': '\u298F',
6832    'lbrkslu': '\u298D',
6833    'lcaron': '\u013E',
6834    'Lcaron': '\u013D',
6835    'lcedil': '\u013C',
6836    'Lcedil': '\u013B',
6837    'lceil': '\u2308',
6838    'lcub': '{',
6839    'lcy': '\u043B',
6840    'Lcy': '\u041B',
6841    'ldca': '\u2936',
6842    'ldquo': '\u201C',
6843    'ldquor': '\u201E',
6844    'ldrdhar': '\u2967',
6845    'ldrushar': '\u294B',
6846    'ldsh': '\u21B2',
6847    'le': '\u2264',
6848    'lE': '\u2266',
6849    'LeftAngleBracket': '\u27E8',
6850    'leftarrow': '\u2190',
6851    'Leftarrow': '\u21D0',
6852    'LeftArrow': '\u2190',
6853    'LeftArrowBar': '\u21E4',
6854    'LeftArrowRightArrow': '\u21C6',
6855    'leftarrowtail': '\u21A2',
6856    'LeftCeiling': '\u2308',
6857    'LeftDoubleBracket': '\u27E6',
6858    'LeftDownTeeVector': '\u2961',
6859    'LeftDownVector': '\u21C3',
6860    'LeftDownVectorBar': '\u2959',
6861    'LeftFloor': '\u230A',
6862    'leftharpoondown': '\u21BD',
6863    'leftharpoonup': '\u21BC',
6864    'leftleftarrows': '\u21C7',
6865    'leftrightarrow': '\u2194',
6866    'Leftrightarrow': '\u21D4',
6867    'LeftRightArrow': '\u2194',
6868    'leftrightarrows': '\u21C6',
6869    'leftrightharpoons': '\u21CB',
6870    'leftrightsquigarrow': '\u21AD',
6871    'LeftRightVector': '\u294E',
6872    'LeftTee': '\u22A3',
6873    'LeftTeeArrow': '\u21A4',
6874    'LeftTeeVector': '\u295A',
6875    'leftthreetimes': '\u22CB',
6876    'LeftTriangle': '\u22B2',
6877    'LeftTriangleBar': '\u29CF',
6878    'LeftTriangleEqual': '\u22B4',
6879    'LeftUpDownVector': '\u2951',
6880    'LeftUpTeeVector': '\u2960',
6881    'LeftUpVector': '\u21BF',
6882    'LeftUpVectorBar': '\u2958',
6883    'LeftVector': '\u21BC',
6884    'LeftVectorBar': '\u2952',
6885    'leg': '\u22DA',
6886    'lEg': '\u2A8B',
6887    'leq': '\u2264',
6888    'leqq': '\u2266',
6889    'leqslant': '\u2A7D',
6890    'les': '\u2A7D',
6891    'lescc': '\u2AA8',
6892    'lesdot': '\u2A7F',
6893    'lesdoto': '\u2A81',
6894    'lesdotor': '\u2A83',
6895    'lesg': '\u22DA\uFE00',
6896    'lesges': '\u2A93',
6897    'lessapprox': '\u2A85',
6898    'lessdot': '\u22D6',
6899    'lesseqgtr': '\u22DA',
6900    'lesseqqgtr': '\u2A8B',
6901    'LessEqualGreater': '\u22DA',
6902    'LessFullEqual': '\u2266',
6903    'LessGreater': '\u2276',
6904    'lessgtr': '\u2276',
6905    'LessLess': '\u2AA1',
6906    'lesssim': '\u2272',
6907    'LessSlantEqual': '\u2A7D',
6908    'LessTilde': '\u2272',
6909    'lfisht': '\u297C',
6910    'lfloor': '\u230A',
6911    'lfr': '\uD835\uDD29',
6912    'Lfr': '\uD835\uDD0F',
6913    'lg': '\u2276',
6914    'lgE': '\u2A91',
6915    'lHar': '\u2962',
6916    'lhard': '\u21BD',
6917    'lharu': '\u21BC',
6918    'lharul': '\u296A',
6919    'lhblk': '\u2584',
6920    'ljcy': '\u0459',
6921    'LJcy': '\u0409',
6922    'll': '\u226A',
6923    'Ll': '\u22D8',
6924    'llarr': '\u21C7',
6925    'llcorner': '\u231E',
6926    'Lleftarrow': '\u21DA',
6927    'llhard': '\u296B',
6928    'lltri': '\u25FA',
6929    'lmidot': '\u0140',
6930    'Lmidot': '\u013F',
6931    'lmoust': '\u23B0',
6932    'lmoustache': '\u23B0',
6933    'lnap': '\u2A89',
6934    'lnapprox': '\u2A89',
6935    'lne': '\u2A87',
6936    'lnE': '\u2268',
6937    'lneq': '\u2A87',
6938    'lneqq': '\u2268',
6939    'lnsim': '\u22E6',
6940    'loang': '\u27EC',
6941    'loarr': '\u21FD',
6942    'lobrk': '\u27E6',
6943    'longleftarrow': '\u27F5',
6944    'Longleftarrow': '\u27F8',
6945    'LongLeftArrow': '\u27F5',
6946    'longleftrightarrow': '\u27F7',
6947    'Longleftrightarrow': '\u27FA',
6948    'LongLeftRightArrow': '\u27F7',
6949    'longmapsto': '\u27FC',
6950    'longrightarrow': '\u27F6',
6951    'Longrightarrow': '\u27F9',
6952    'LongRightArrow': '\u27F6',
6953    'looparrowleft': '\u21AB',
6954    'looparrowright': '\u21AC',
6955    'lopar': '\u2985',
6956    'lopf': '\uD835\uDD5D',
6957    'Lopf': '\uD835\uDD43',
6958    'loplus': '\u2A2D',
6959    'lotimes': '\u2A34',
6960    'lowast': '\u2217',
6961    'lowbar': '_',
6962    'LowerLeftArrow': '\u2199',
6963    'LowerRightArrow': '\u2198',
6964    'loz': '\u25CA',
6965    'lozenge': '\u25CA',
6966    'lozf': '\u29EB',
6967    'lpar': '(',
6968    'lparlt': '\u2993',
6969    'lrarr': '\u21C6',
6970    'lrcorner': '\u231F',
6971    'lrhar': '\u21CB',
6972    'lrhard': '\u296D',
6973    'lrm': '\u200E',
6974    'lrtri': '\u22BF',
6975    'lsaquo': '\u2039',
6976    'lscr': '\uD835\uDCC1',
6977    'Lscr': '\u2112',
6978    'lsh': '\u21B0',
6979    'Lsh': '\u21B0',
6980    'lsim': '\u2272',
6981    'lsime': '\u2A8D',
6982    'lsimg': '\u2A8F',
6983    'lsqb': '[',
6984    'lsquo': '\u2018',
6985    'lsquor': '\u201A',
6986    'lstrok': '\u0142',
6987    'Lstrok': '\u0141',
6988    'lt': '<',
6989    'Lt': '\u226A',
6990    'LT': '<',
6991    'ltcc': '\u2AA6',
6992    'ltcir': '\u2A79',
6993    'ltdot': '\u22D6',
6994    'lthree': '\u22CB',
6995    'ltimes': '\u22C9',
6996    'ltlarr': '\u2976',
6997    'ltquest': '\u2A7B',
6998    'ltri': '\u25C3',
6999    'ltrie': '\u22B4',
7000    'ltrif': '\u25C2',
7001    'ltrPar': '\u2996',
7002    'lurdshar': '\u294A',
7003    'luruhar': '\u2966',
7004    'lvertneqq': '\u2268\uFE00',
7005    'lvnE': '\u2268\uFE00',
7006    'macr': '\xAF',
7007    'male': '\u2642',
7008    'malt': '\u2720',
7009    'maltese': '\u2720',
7010    'map': '\u21A6',
7011    'Map': '\u2905',
7012    'mapsto': '\u21A6',
7013    'mapstodown': '\u21A7',
7014    'mapstoleft': '\u21A4',
7015    'mapstoup': '\u21A5',
7016    'marker': '\u25AE',
7017    'mcomma': '\u2A29',
7018    'mcy': '\u043C',
7019    'Mcy': '\u041C',
7020    'mdash': '\u2014',
7021    'mDDot': '\u223A',
7022    'measuredangle': '\u2221',
7023    'MediumSpace': '\u205F',
7024    'Mellintrf': '\u2133',
7025    'mfr': '\uD835\uDD2A',
7026    'Mfr': '\uD835\uDD10',
7027    'mho': '\u2127',
7028    'micro': '\xB5',
7029    'mid': '\u2223',
7030    'midast': '*',
7031    'midcir': '\u2AF0',
7032    'middot': '\xB7',
7033    'minus': '\u2212',
7034    'minusb': '\u229F',
7035    'minusd': '\u2238',
7036    'minusdu': '\u2A2A',
7037    'MinusPlus': '\u2213',
7038    'mlcp': '\u2ADB',
7039    'mldr': '\u2026',
7040    'mnplus': '\u2213',
7041    'models': '\u22A7',
7042    'mopf': '\uD835\uDD5E',
7043    'Mopf': '\uD835\uDD44',
7044    'mp': '\u2213',
7045    'mscr': '\uD835\uDCC2',
7046    'Mscr': '\u2133',
7047    'mstpos': '\u223E',
7048    'mu': '\u03BC',
7049    'Mu': '\u039C',
7050    'multimap': '\u22B8',
7051    'mumap': '\u22B8',
7052    'nabla': '\u2207',
7053    'nacute': '\u0144',
7054    'Nacute': '\u0143',
7055    'nang': '\u2220\u20D2',
7056    'nap': '\u2249',
7057    'napE': '\u2A70\u0338',
7058    'napid': '\u224B\u0338',
7059    'napos': '\u0149',
7060    'napprox': '\u2249',
7061    'natur': '\u266E',
7062    'natural': '\u266E',
7063    'naturals': '\u2115',
7064    'nbsp': '\xA0',
7065    'nbump': '\u224E\u0338',
7066    'nbumpe': '\u224F\u0338',
7067    'ncap': '\u2A43',
7068    'ncaron': '\u0148',
7069    'Ncaron': '\u0147',
7070    'ncedil': '\u0146',
7071    'Ncedil': '\u0145',
7072    'ncong': '\u2247',
7073    'ncongdot': '\u2A6D\u0338',
7074    'ncup': '\u2A42',
7075    'ncy': '\u043D',
7076    'Ncy': '\u041D',
7077    'ndash': '\u2013',
7078    'ne': '\u2260',
7079    'nearhk': '\u2924',
7080    'nearr': '\u2197',
7081    'neArr': '\u21D7',
7082    'nearrow': '\u2197',
7083    'nedot': '\u2250\u0338',
7084    'NegativeMediumSpace': '\u200B',
7085    'NegativeThickSpace': '\u200B',
7086    'NegativeThinSpace': '\u200B',
7087    'NegativeVeryThinSpace': '\u200B',
7088    'nequiv': '\u2262',
7089    'nesear': '\u2928',
7090    'nesim': '\u2242\u0338',
7091    'NestedGreaterGreater': '\u226B',
7092    'NestedLessLess': '\u226A',
7093    'NewLine': '\n',
7094    'nexist': '\u2204',
7095    'nexists': '\u2204',
7096    'nfr': '\uD835\uDD2B',
7097    'Nfr': '\uD835\uDD11',
7098    'nge': '\u2271',
7099    'ngE': '\u2267\u0338',
7100    'ngeq': '\u2271',
7101    'ngeqq': '\u2267\u0338',
7102    'ngeqslant': '\u2A7E\u0338',
7103    'nges': '\u2A7E\u0338',
7104    'nGg': '\u22D9\u0338',
7105    'ngsim': '\u2275',
7106    'ngt': '\u226F',
7107    'nGt': '\u226B\u20D2',
7108    'ngtr': '\u226F',
7109    'nGtv': '\u226B\u0338',
7110    'nharr': '\u21AE',
7111    'nhArr': '\u21CE',
7112    'nhpar': '\u2AF2',
7113    'ni': '\u220B',
7114    'nis': '\u22FC',
7115    'nisd': '\u22FA',
7116    'niv': '\u220B',
7117    'njcy': '\u045A',
7118    'NJcy': '\u040A',
7119    'nlarr': '\u219A',
7120    'nlArr': '\u21CD',
7121    'nldr': '\u2025',
7122    'nle': '\u2270',
7123    'nlE': '\u2266\u0338',
7124    'nleftarrow': '\u219A',
7125    'nLeftarrow': '\u21CD',
7126    'nleftrightarrow': '\u21AE',
7127    'nLeftrightarrow': '\u21CE',
7128    'nleq': '\u2270',
7129    'nleqq': '\u2266\u0338',
7130    'nleqslant': '\u2A7D\u0338',
7131    'nles': '\u2A7D\u0338',
7132    'nless': '\u226E',
7133    'nLl': '\u22D8\u0338',
7134    'nlsim': '\u2274',
7135    'nlt': '\u226E',
7136    'nLt': '\u226A\u20D2',
7137    'nltri': '\u22EA',
7138    'nltrie': '\u22EC',
7139    'nLtv': '\u226A\u0338',
7140    'nmid': '\u2224',
7141    'NoBreak': '\u2060',
7142    'NonBreakingSpace': '\xA0',
7143    'nopf': '\uD835\uDD5F',
7144    'Nopf': '\u2115',
7145    'not': '\xAC',
7146    'Not': '\u2AEC',
7147    'NotCongruent': '\u2262',
7148    'NotCupCap': '\u226D',
7149    'NotDoubleVerticalBar': '\u2226',
7150    'NotElement': '\u2209',
7151    'NotEqual': '\u2260',
7152    'NotEqualTilde': '\u2242\u0338',
7153    'NotExists': '\u2204',
7154    'NotGreater': '\u226F',
7155    'NotGreaterEqual': '\u2271',
7156    'NotGreaterFullEqual': '\u2267\u0338',
7157    'NotGreaterGreater': '\u226B\u0338',
7158    'NotGreaterLess': '\u2279',
7159    'NotGreaterSlantEqual': '\u2A7E\u0338',
7160    'NotGreaterTilde': '\u2275',
7161    'NotHumpDownHump': '\u224E\u0338',
7162    'NotHumpEqual': '\u224F\u0338',
7163    'notin': '\u2209',
7164    'notindot': '\u22F5\u0338',
7165    'notinE': '\u22F9\u0338',
7166    'notinva': '\u2209',
7167    'notinvb': '\u22F7',
7168    'notinvc': '\u22F6',
7169    'NotLeftTriangle': '\u22EA',
7170    'NotLeftTriangleBar': '\u29CF\u0338',
7171    'NotLeftTriangleEqual': '\u22EC',
7172    'NotLess': '\u226E',
7173    'NotLessEqual': '\u2270',
7174    'NotLessGreater': '\u2278',
7175    'NotLessLess': '\u226A\u0338',
7176    'NotLessSlantEqual': '\u2A7D\u0338',
7177    'NotLessTilde': '\u2274',
7178    'NotNestedGreaterGreater': '\u2AA2\u0338',
7179    'NotNestedLessLess': '\u2AA1\u0338',
7180    'notni': '\u220C',
7181    'notniva': '\u220C',
7182    'notnivb': '\u22FE',
7183    'notnivc': '\u22FD',
7184    'NotPrecedes': '\u2280',
7185    'NotPrecedesEqual': '\u2AAF\u0338',
7186    'NotPrecedesSlantEqual': '\u22E0',
7187    'NotReverseElement': '\u220C',
7188    'NotRightTriangle': '\u22EB',
7189    'NotRightTriangleBar': '\u29D0\u0338',
7190    'NotRightTriangleEqual': '\u22ED',
7191    'NotSquareSubset': '\u228F\u0338',
7192    'NotSquareSubsetEqual': '\u22E2',
7193    'NotSquareSuperset': '\u2290\u0338',
7194    'NotSquareSupersetEqual': '\u22E3',
7195    'NotSubset': '\u2282\u20D2',
7196    'NotSubsetEqual': '\u2288',
7197    'NotSucceeds': '\u2281',
7198    'NotSucceedsEqual': '\u2AB0\u0338',
7199    'NotSucceedsSlantEqual': '\u22E1',
7200    'NotSucceedsTilde': '\u227F\u0338',
7201    'NotSuperset': '\u2283\u20D2',
7202    'NotSupersetEqual': '\u2289',
7203    'NotTilde': '\u2241',
7204    'NotTildeEqual': '\u2244',
7205    'NotTildeFullEqual': '\u2247',
7206    'NotTildeTilde': '\u2249',
7207    'NotVerticalBar': '\u2224',
7208    'npar': '\u2226',
7209    'nparallel': '\u2226',
7210    'nparsl': '\u2AFD\u20E5',
7211    'npart': '\u2202\u0338',
7212    'npolint': '\u2A14',
7213    'npr': '\u2280',
7214    'nprcue': '\u22E0',
7215    'npre': '\u2AAF\u0338',
7216    'nprec': '\u2280',
7217    'npreceq': '\u2AAF\u0338',
7218    'nrarr': '\u219B',
7219    'nrArr': '\u21CF',
7220    'nrarrc': '\u2933\u0338',
7221    'nrarrw': '\u219D\u0338',
7222    'nrightarrow': '\u219B',
7223    'nRightarrow': '\u21CF',
7224    'nrtri': '\u22EB',
7225    'nrtrie': '\u22ED',
7226    'nsc': '\u2281',
7227    'nsccue': '\u22E1',
7228    'nsce': '\u2AB0\u0338',
7229    'nscr': '\uD835\uDCC3',
7230    'Nscr': '\uD835\uDCA9',
7231    'nshortmid': '\u2224',
7232    'nshortparallel': '\u2226',
7233    'nsim': '\u2241',
7234    'nsime': '\u2244',
7235    'nsimeq': '\u2244',
7236    'nsmid': '\u2224',
7237    'nspar': '\u2226',
7238    'nsqsube': '\u22E2',
7239    'nsqsupe': '\u22E3',
7240    'nsub': '\u2284',
7241    'nsube': '\u2288',
7242    'nsubE': '\u2AC5\u0338',
7243    'nsubset': '\u2282\u20D2',
7244    'nsubseteq': '\u2288',
7245    'nsubseteqq': '\u2AC5\u0338',
7246    'nsucc': '\u2281',
7247    'nsucceq': '\u2AB0\u0338',
7248    'nsup': '\u2285',
7249    'nsupe': '\u2289',
7250    'nsupE': '\u2AC6\u0338',
7251    'nsupset': '\u2283\u20D2',
7252    'nsupseteq': '\u2289',
7253    'nsupseteqq': '\u2AC6\u0338',
7254    'ntgl': '\u2279',
7255    'ntilde': '\xF1',
7256    'Ntilde': '\xD1',
7257    'ntlg': '\u2278',
7258    'ntriangleleft': '\u22EA',
7259    'ntrianglelefteq': '\u22EC',
7260    'ntriangleright': '\u22EB',
7261    'ntrianglerighteq': '\u22ED',
7262    'nu': '\u03BD',
7263    'Nu': '\u039D',
7264    'num': '#',
7265    'numero': '\u2116',
7266    'numsp': '\u2007',
7267    'nvap': '\u224D\u20D2',
7268    'nvdash': '\u22AC',
7269    'nvDash': '\u22AD',
7270    'nVdash': '\u22AE',
7271    'nVDash': '\u22AF',
7272    'nvge': '\u2265\u20D2',
7273    'nvgt': '>\u20D2',
7274    'nvHarr': '\u2904',
7275    'nvinfin': '\u29DE',
7276    'nvlArr': '\u2902',
7277    'nvle': '\u2264\u20D2',
7278    'nvlt': '<\u20D2',
7279    'nvltrie': '\u22B4\u20D2',
7280    'nvrArr': '\u2903',
7281    'nvrtrie': '\u22B5\u20D2',
7282    'nvsim': '\u223C\u20D2',
7283    'nwarhk': '\u2923',
7284    'nwarr': '\u2196',
7285    'nwArr': '\u21D6',
7286    'nwarrow': '\u2196',
7287    'nwnear': '\u2927',
7288    'oacute': '\xF3',
7289    'Oacute': '\xD3',
7290    'oast': '\u229B',
7291    'ocir': '\u229A',
7292    'ocirc': '\xF4',
7293    'Ocirc': '\xD4',
7294    'ocy': '\u043E',
7295    'Ocy': '\u041E',
7296    'odash': '\u229D',
7297    'odblac': '\u0151',
7298    'Odblac': '\u0150',
7299    'odiv': '\u2A38',
7300    'odot': '\u2299',
7301    'odsold': '\u29BC',
7302    'oelig': '\u0153',
7303    'OElig': '\u0152',
7304    'ofcir': '\u29BF',
7305    'ofr': '\uD835\uDD2C',
7306    'Ofr': '\uD835\uDD12',
7307    'ogon': '\u02DB',
7308    'ograve': '\xF2',
7309    'Ograve': '\xD2',
7310    'ogt': '\u29C1',
7311    'ohbar': '\u29B5',
7312    'ohm': '\u03A9',
7313    'oint': '\u222E',
7314    'olarr': '\u21BA',
7315    'olcir': '\u29BE',
7316    'olcross': '\u29BB',
7317    'oline': '\u203E',
7318    'olt': '\u29C0',
7319    'omacr': '\u014D',
7320    'Omacr': '\u014C',
7321    'omega': '\u03C9',
7322    'Omega': '\u03A9',
7323    'omicron': '\u03BF',
7324    'Omicron': '\u039F',
7325    'omid': '\u29B6',
7326    'ominus': '\u2296',
7327    'oopf': '\uD835\uDD60',
7328    'Oopf': '\uD835\uDD46',
7329    'opar': '\u29B7',
7330    'OpenCurlyDoubleQuote': '\u201C',
7331    'OpenCurlyQuote': '\u2018',
7332    'operp': '\u29B9',
7333    'oplus': '\u2295',
7334    'or': '\u2228',
7335    'Or': '\u2A54',
7336    'orarr': '\u21BB',
7337    'ord': '\u2A5D',
7338    'order': '\u2134',
7339    'orderof': '\u2134',
7340    'ordf': '\xAA',
7341    'ordm': '\xBA',
7342    'origof': '\u22B6',
7343    'oror': '\u2A56',
7344    'orslope': '\u2A57',
7345    'orv': '\u2A5B',
7346    'oS': '\u24C8',
7347    'oscr': '\u2134',
7348    'Oscr': '\uD835\uDCAA',
7349    'oslash': '\xF8',
7350    'Oslash': '\xD8',
7351    'osol': '\u2298',
7352    'otilde': '\xF5',
7353    'Otilde': '\xD5',
7354    'otimes': '\u2297',
7355    'Otimes': '\u2A37',
7356    'otimesas': '\u2A36',
7357    'ouml': '\xF6',
7358    'Ouml': '\xD6',
7359    'ovbar': '\u233D',
7360    'OverBar': '\u203E',
7361    'OverBrace': '\u23DE',
7362    'OverBracket': '\u23B4',
7363    'OverParenthesis': '\u23DC',
7364    'par': '\u2225',
7365    'para': '\xB6',
7366    'parallel': '\u2225',
7367    'parsim': '\u2AF3',
7368    'parsl': '\u2AFD',
7369    'part': '\u2202',
7370    'PartialD': '\u2202',
7371    'pcy': '\u043F',
7372    'Pcy': '\u041F',
7373    'percnt': '%',
7374    'period': '.',
7375    'permil': '\u2030',
7376    'perp': '\u22A5',
7377    'pertenk': '\u2031',
7378    'pfr': '\uD835\uDD2D',
7379    'Pfr': '\uD835\uDD13',
7380    'phi': '\u03C6',
7381    'Phi': '\u03A6',
7382    'phiv': '\u03D5',
7383    'phmmat': '\u2133',
7384    'phone': '\u260E',
7385    'pi': '\u03C0',
7386    'Pi': '\u03A0',
7387    'pitchfork': '\u22D4',
7388    'piv': '\u03D6',
7389    'planck': '\u210F',
7390    'planckh': '\u210E',
7391    'plankv': '\u210F',
7392    'plus': '+',
7393    'plusacir': '\u2A23',
7394    'plusb': '\u229E',
7395    'pluscir': '\u2A22',
7396    'plusdo': '\u2214',
7397    'plusdu': '\u2A25',
7398    'pluse': '\u2A72',
7399    'PlusMinus': '\xB1',
7400    'plusmn': '\xB1',
7401    'plussim': '\u2A26',
7402    'plustwo': '\u2A27',
7403    'pm': '\xB1',
7404    'Poincareplane': '\u210C',
7405    'pointint': '\u2A15',
7406    'popf': '\uD835\uDD61',
7407    'Popf': '\u2119',
7408    'pound': '\xA3',
7409    'pr': '\u227A',
7410    'Pr': '\u2ABB',
7411    'prap': '\u2AB7',
7412    'prcue': '\u227C',
7413    'pre': '\u2AAF',
7414    'prE': '\u2AB3',
7415    'prec': '\u227A',
7416    'precapprox': '\u2AB7',
7417    'preccurlyeq': '\u227C',
7418    'Precedes': '\u227A',
7419    'PrecedesEqual': '\u2AAF',
7420    'PrecedesSlantEqual': '\u227C',
7421    'PrecedesTilde': '\u227E',
7422    'preceq': '\u2AAF',
7423    'precnapprox': '\u2AB9',
7424    'precneqq': '\u2AB5',
7425    'precnsim': '\u22E8',
7426    'precsim': '\u227E',
7427    'prime': '\u2032',
7428    'Prime': '\u2033',
7429    'primes': '\u2119',
7430    'prnap': '\u2AB9',
7431    'prnE': '\u2AB5',
7432    'prnsim': '\u22E8',
7433    'prod': '\u220F',
7434    'Product': '\u220F',
7435    'profalar': '\u232E',
7436    'profline': '\u2312',
7437    'profsurf': '\u2313',
7438    'prop': '\u221D',
7439    'Proportion': '\u2237',
7440    'Proportional': '\u221D',
7441    'propto': '\u221D',
7442    'prsim': '\u227E',
7443    'prurel': '\u22B0',
7444    'pscr': '\uD835\uDCC5',
7445    'Pscr': '\uD835\uDCAB',
7446    'psi': '\u03C8',
7447    'Psi': '\u03A8',
7448    'puncsp': '\u2008',
7449    'qfr': '\uD835\uDD2E',
7450    'Qfr': '\uD835\uDD14',
7451    'qint': '\u2A0C',
7452    'qopf': '\uD835\uDD62',
7453    'Qopf': '\u211A',
7454    'qprime': '\u2057',
7455    'qscr': '\uD835\uDCC6',
7456    'Qscr': '\uD835\uDCAC',
7457    'quaternions': '\u210D',
7458    'quatint': '\u2A16',
7459    'quest': '?',
7460    'questeq': '\u225F',
7461    'quot': '"',
7462    'QUOT': '"',
7463    'rAarr': '\u21DB',
7464    'race': '\u223D\u0331',
7465    'racute': '\u0155',
7466    'Racute': '\u0154',
7467    'radic': '\u221A',
7468    'raemptyv': '\u29B3',
7469    'rang': '\u27E9',
7470    'Rang': '\u27EB',
7471    'rangd': '\u2992',
7472    'range': '\u29A5',
7473    'rangle': '\u27E9',
7474    'raquo': '\xBB',
7475    'rarr': '\u2192',
7476    'rArr': '\u21D2',
7477    'Rarr': '\u21A0',
7478    'rarrap': '\u2975',
7479    'rarrb': '\u21E5',
7480    'rarrbfs': '\u2920',
7481    'rarrc': '\u2933',
7482    'rarrfs': '\u291E',
7483    'rarrhk': '\u21AA',
7484    'rarrlp': '\u21AC',
7485    'rarrpl': '\u2945',
7486    'rarrsim': '\u2974',
7487    'rarrtl': '\u21A3',
7488    'Rarrtl': '\u2916',
7489    'rarrw': '\u219D',
7490    'ratail': '\u291A',
7491    'rAtail': '\u291C',
7492    'ratio': '\u2236',
7493    'rationals': '\u211A',
7494    'rbarr': '\u290D',
7495    'rBarr': '\u290F',
7496    'RBarr': '\u2910',
7497    'rbbrk': '\u2773',
7498    'rbrace': '}',
7499    'rbrack': ']',
7500    'rbrke': '\u298C',
7501    'rbrksld': '\u298E',
7502    'rbrkslu': '\u2990',
7503    'rcaron': '\u0159',
7504    'Rcaron': '\u0158',
7505    'rcedil': '\u0157',
7506    'Rcedil': '\u0156',
7507    'rceil': '\u2309',
7508    'rcub': '}',
7509    'rcy': '\u0440',
7510    'Rcy': '\u0420',
7511    'rdca': '\u2937',
7512    'rdldhar': '\u2969',
7513    'rdquo': '\u201D',
7514    'rdquor': '\u201D',
7515    'rdsh': '\u21B3',
7516    'Re': '\u211C',
7517    'real': '\u211C',
7518    'realine': '\u211B',
7519    'realpart': '\u211C',
7520    'reals': '\u211D',
7521    'rect': '\u25AD',
7522    'reg': '\xAE',
7523    'REG': '\xAE',
7524    'ReverseElement': '\u220B',
7525    'ReverseEquilibrium': '\u21CB',
7526    'ReverseUpEquilibrium': '\u296F',
7527    'rfisht': '\u297D',
7528    'rfloor': '\u230B',
7529    'rfr': '\uD835\uDD2F',
7530    'Rfr': '\u211C',
7531    'rHar': '\u2964',
7532    'rhard': '\u21C1',
7533    'rharu': '\u21C0',
7534    'rharul': '\u296C',
7535    'rho': '\u03C1',
7536    'Rho': '\u03A1',
7537    'rhov': '\u03F1',
7538    'RightAngleBracket': '\u27E9',
7539    'rightarrow': '\u2192',
7540    'Rightarrow': '\u21D2',
7541    'RightArrow': '\u2192',
7542    'RightArrowBar': '\u21E5',
7543    'RightArrowLeftArrow': '\u21C4',
7544    'rightarrowtail': '\u21A3',
7545    'RightCeiling': '\u2309',
7546    'RightDoubleBracket': '\u27E7',
7547    'RightDownTeeVector': '\u295D',
7548    'RightDownVector': '\u21C2',
7549    'RightDownVectorBar': '\u2955',
7550    'RightFloor': '\u230B',
7551    'rightharpoondown': '\u21C1',
7552    'rightharpoonup': '\u21C0',
7553    'rightleftarrows': '\u21C4',
7554    'rightleftharpoons': '\u21CC',
7555    'rightrightarrows': '\u21C9',
7556    'rightsquigarrow': '\u219D',
7557    'RightTee': '\u22A2',
7558    'RightTeeArrow': '\u21A6',
7559    'RightTeeVector': '\u295B',
7560    'rightthreetimes': '\u22CC',
7561    'RightTriangle': '\u22B3',
7562    'RightTriangleBar': '\u29D0',
7563    'RightTriangleEqual': '\u22B5',
7564    'RightUpDownVector': '\u294F',
7565    'RightUpTeeVector': '\u295C',
7566    'RightUpVector': '\u21BE',
7567    'RightUpVectorBar': '\u2954',
7568    'RightVector': '\u21C0',
7569    'RightVectorBar': '\u2953',
7570    'ring': '\u02DA',
7571    'risingdotseq': '\u2253',
7572    'rlarr': '\u21C4',
7573    'rlhar': '\u21CC',
7574    'rlm': '\u200F',
7575    'rmoust': '\u23B1',
7576    'rmoustache': '\u23B1',
7577    'rnmid': '\u2AEE',
7578    'roang': '\u27ED',
7579    'roarr': '\u21FE',
7580    'robrk': '\u27E7',
7581    'ropar': '\u2986',
7582    'ropf': '\uD835\uDD63',
7583    'Ropf': '\u211D',
7584    'roplus': '\u2A2E',
7585    'rotimes': '\u2A35',
7586    'RoundImplies': '\u2970',
7587    'rpar': ')',
7588    'rpargt': '\u2994',
7589    'rppolint': '\u2A12',
7590    'rrarr': '\u21C9',
7591    'Rrightarrow': '\u21DB',
7592    'rsaquo': '\u203A',
7593    'rscr': '\uD835\uDCC7',
7594    'Rscr': '\u211B',
7595    'rsh': '\u21B1',
7596    'Rsh': '\u21B1',
7597    'rsqb': ']',
7598    'rsquo': '\u2019',
7599    'rsquor': '\u2019',
7600    'rthree': '\u22CC',
7601    'rtimes': '\u22CA',
7602    'rtri': '\u25B9',
7603    'rtrie': '\u22B5',
7604    'rtrif': '\u25B8',
7605    'rtriltri': '\u29CE',
7606    'RuleDelayed': '\u29F4',
7607    'ruluhar': '\u2968',
7608    'rx': '\u211E',
7609    'sacute': '\u015B',
7610    'Sacute': '\u015A',
7611    'sbquo': '\u201A',
7612    'sc': '\u227B',
7613    'Sc': '\u2ABC',
7614    'scap': '\u2AB8',
7615    'scaron': '\u0161',
7616    'Scaron': '\u0160',
7617    'sccue': '\u227D',
7618    'sce': '\u2AB0',
7619    'scE': '\u2AB4',
7620    'scedil': '\u015F',
7621    'Scedil': '\u015E',
7622    'scirc': '\u015D',
7623    'Scirc': '\u015C',
7624    'scnap': '\u2ABA',
7625    'scnE': '\u2AB6',
7626    'scnsim': '\u22E9',
7627    'scpolint': '\u2A13',
7628    'scsim': '\u227F',
7629    'scy': '\u0441',
7630    'Scy': '\u0421',
7631    'sdot': '\u22C5',
7632    'sdotb': '\u22A1',
7633    'sdote': '\u2A66',
7634    'searhk': '\u2925',
7635    'searr': '\u2198',
7636    'seArr': '\u21D8',
7637    'searrow': '\u2198',
7638    'sect': '\xA7',
7639    'semi': ';',
7640    'seswar': '\u2929',
7641    'setminus': '\u2216',
7642    'setmn': '\u2216',
7643    'sext': '\u2736',
7644    'sfr': '\uD835\uDD30',
7645    'Sfr': '\uD835\uDD16',
7646    'sfrown': '\u2322',
7647    'sharp': '\u266F',
7648    'shchcy': '\u0449',
7649    'SHCHcy': '\u0429',
7650    'shcy': '\u0448',
7651    'SHcy': '\u0428',
7652    'ShortDownArrow': '\u2193',
7653    'ShortLeftArrow': '\u2190',
7654    'shortmid': '\u2223',
7655    'shortparallel': '\u2225',
7656    'ShortRightArrow': '\u2192',
7657    'ShortUpArrow': '\u2191',
7658    'shy': '\xAD',
7659    'sigma': '\u03C3',
7660    'Sigma': '\u03A3',
7661    'sigmaf': '\u03C2',
7662    'sigmav': '\u03C2',
7663    'sim': '\u223C',
7664    'simdot': '\u2A6A',
7665    'sime': '\u2243',
7666    'simeq': '\u2243',
7667    'simg': '\u2A9E',
7668    'simgE': '\u2AA0',
7669    'siml': '\u2A9D',
7670    'simlE': '\u2A9F',
7671    'simne': '\u2246',
7672    'simplus': '\u2A24',
7673    'simrarr': '\u2972',
7674    'slarr': '\u2190',
7675    'SmallCircle': '\u2218',
7676    'smallsetminus': '\u2216',
7677    'smashp': '\u2A33',
7678    'smeparsl': '\u29E4',
7679    'smid': '\u2223',
7680    'smile': '\u2323',
7681    'smt': '\u2AAA',
7682    'smte': '\u2AAC',
7683    'smtes': '\u2AAC\uFE00',
7684    'softcy': '\u044C',
7685    'SOFTcy': '\u042C',
7686    'sol': '/',
7687    'solb': '\u29C4',
7688    'solbar': '\u233F',
7689    'sopf': '\uD835\uDD64',
7690    'Sopf': '\uD835\uDD4A',
7691    'spades': '\u2660',
7692    'spadesuit': '\u2660',
7693    'spar': '\u2225',
7694    'sqcap': '\u2293',
7695    'sqcaps': '\u2293\uFE00',
7696    'sqcup': '\u2294',
7697    'sqcups': '\u2294\uFE00',
7698    'Sqrt': '\u221A',
7699    'sqsub': '\u228F',
7700    'sqsube': '\u2291',
7701    'sqsubset': '\u228F',
7702    'sqsubseteq': '\u2291',
7703    'sqsup': '\u2290',
7704    'sqsupe': '\u2292',
7705    'sqsupset': '\u2290',
7706    'sqsupseteq': '\u2292',
7707    'squ': '\u25A1',
7708    'square': '\u25A1',
7709    'Square': '\u25A1',
7710    'SquareIntersection': '\u2293',
7711    'SquareSubset': '\u228F',
7712    'SquareSubsetEqual': '\u2291',
7713    'SquareSuperset': '\u2290',
7714    'SquareSupersetEqual': '\u2292',
7715    'SquareUnion': '\u2294',
7716    'squarf': '\u25AA',
7717    'squf': '\u25AA',
7718    'srarr': '\u2192',
7719    'sscr': '\uD835\uDCC8',
7720    'Sscr': '\uD835\uDCAE',
7721    'ssetmn': '\u2216',
7722    'ssmile': '\u2323',
7723    'sstarf': '\u22C6',
7724    'star': '\u2606',
7725    'Star': '\u22C6',
7726    'starf': '\u2605',
7727    'straightepsilon': '\u03F5',
7728    'straightphi': '\u03D5',
7729    'strns': '\xAF',
7730    'sub': '\u2282',
7731    'Sub': '\u22D0',
7732    'subdot': '\u2ABD',
7733    'sube': '\u2286',
7734    'subE': '\u2AC5',
7735    'subedot': '\u2AC3',
7736    'submult': '\u2AC1',
7737    'subne': '\u228A',
7738    'subnE': '\u2ACB',
7739    'subplus': '\u2ABF',
7740    'subrarr': '\u2979',
7741    'subset': '\u2282',
7742    'Subset': '\u22D0',
7743    'subseteq': '\u2286',
7744    'subseteqq': '\u2AC5',
7745    'SubsetEqual': '\u2286',
7746    'subsetneq': '\u228A',
7747    'subsetneqq': '\u2ACB',
7748    'subsim': '\u2AC7',
7749    'subsub': '\u2AD5',
7750    'subsup': '\u2AD3',
7751    'succ': '\u227B',
7752    'succapprox': '\u2AB8',
7753    'succcurlyeq': '\u227D',
7754    'Succeeds': '\u227B',
7755    'SucceedsEqual': '\u2AB0',
7756    'SucceedsSlantEqual': '\u227D',
7757    'SucceedsTilde': '\u227F',
7758    'succeq': '\u2AB0',
7759    'succnapprox': '\u2ABA',
7760    'succneqq': '\u2AB6',
7761    'succnsim': '\u22E9',
7762    'succsim': '\u227F',
7763    'SuchThat': '\u220B',
7764    'sum': '\u2211',
7765    'Sum': '\u2211',
7766    'sung': '\u266A',
7767    'sup': '\u2283',
7768    'Sup': '\u22D1',
7769    'sup1': '\xB9',
7770    'sup2': '\xB2',
7771    'sup3': '\xB3',
7772    'supdot': '\u2ABE',
7773    'supdsub': '\u2AD8',
7774    'supe': '\u2287',
7775    'supE': '\u2AC6',
7776    'supedot': '\u2AC4',
7777    'Superset': '\u2283',
7778    'SupersetEqual': '\u2287',
7779    'suphsol': '\u27C9',
7780    'suphsub': '\u2AD7',
7781    'suplarr': '\u297B',
7782    'supmult': '\u2AC2',
7783    'supne': '\u228B',
7784    'supnE': '\u2ACC',
7785    'supplus': '\u2AC0',
7786    'supset': '\u2283',
7787    'Supset': '\u22D1',
7788    'supseteq': '\u2287',
7789    'supseteqq': '\u2AC6',
7790    'supsetneq': '\u228B',
7791    'supsetneqq': '\u2ACC',
7792    'supsim': '\u2AC8',
7793    'supsub': '\u2AD4',
7794    'supsup': '\u2AD6',
7795    'swarhk': '\u2926',
7796    'swarr': '\u2199',
7797    'swArr': '\u21D9',
7798    'swarrow': '\u2199',
7799    'swnwar': '\u292A',
7800    'szlig': '\xDF',
7801    'Tab': '\t',
7802    'target': '\u2316',
7803    'tau': '\u03C4',
7804    'Tau': '\u03A4',
7805    'tbrk': '\u23B4',
7806    'tcaron': '\u0165',
7807    'Tcaron': '\u0164',
7808    'tcedil': '\u0163',
7809    'Tcedil': '\u0162',
7810    'tcy': '\u0442',
7811    'Tcy': '\u0422',
7812    'tdot': '\u20DB',
7813    'telrec': '\u2315',
7814    'tfr': '\uD835\uDD31',
7815    'Tfr': '\uD835\uDD17',
7816    'there4': '\u2234',
7817    'therefore': '\u2234',
7818    'Therefore': '\u2234',
7819    'theta': '\u03B8',
7820    'Theta': '\u0398',
7821    'thetasym': '\u03D1',
7822    'thetav': '\u03D1',
7823    'thickapprox': '\u2248',
7824    'thicksim': '\u223C',
7825    'ThickSpace': '\u205F\u200A',
7826    'thinsp': '\u2009',
7827    'ThinSpace': '\u2009',
7828    'thkap': '\u2248',
7829    'thksim': '\u223C',
7830    'thorn': '\xFE',
7831    'THORN': '\xDE',
7832    'tilde': '\u02DC',
7833    'Tilde': '\u223C',
7834    'TildeEqual': '\u2243',
7835    'TildeFullEqual': '\u2245',
7836    'TildeTilde': '\u2248',
7837    'times': '\xD7',
7838    'timesb': '\u22A0',
7839    'timesbar': '\u2A31',
7840    'timesd': '\u2A30',
7841    'tint': '\u222D',
7842    'toea': '\u2928',
7843    'top': '\u22A4',
7844    'topbot': '\u2336',
7845    'topcir': '\u2AF1',
7846    'topf': '\uD835\uDD65',
7847    'Topf': '\uD835\uDD4B',
7848    'topfork': '\u2ADA',
7849    'tosa': '\u2929',
7850    'tprime': '\u2034',
7851    'trade': '\u2122',
7852    'TRADE': '\u2122',
7853    'triangle': '\u25B5',
7854    'triangledown': '\u25BF',
7855    'triangleleft': '\u25C3',
7856    'trianglelefteq': '\u22B4',
7857    'triangleq': '\u225C',
7858    'triangleright': '\u25B9',
7859    'trianglerighteq': '\u22B5',
7860    'tridot': '\u25EC',
7861    'trie': '\u225C',
7862    'triminus': '\u2A3A',
7863    'TripleDot': '\u20DB',
7864    'triplus': '\u2A39',
7865    'trisb': '\u29CD',
7866    'tritime': '\u2A3B',
7867    'trpezium': '\u23E2',
7868    'tscr': '\uD835\uDCC9',
7869    'Tscr': '\uD835\uDCAF',
7870    'tscy': '\u0446',
7871    'TScy': '\u0426',
7872    'tshcy': '\u045B',
7873    'TSHcy': '\u040B',
7874    'tstrok': '\u0167',
7875    'Tstrok': '\u0166',
7876    'twixt': '\u226C',
7877    'twoheadleftarrow': '\u219E',
7878    'twoheadrightarrow': '\u21A0',
7879    'uacute': '\xFA',
7880    'Uacute': '\xDA',
7881    'uarr': '\u2191',
7882    'uArr': '\u21D1',
7883    'Uarr': '\u219F',
7884    'Uarrocir': '\u2949',
7885    'ubrcy': '\u045E',
7886    'Ubrcy': '\u040E',
7887    'ubreve': '\u016D',
7888    'Ubreve': '\u016C',
7889    'ucirc': '\xFB',
7890    'Ucirc': '\xDB',
7891    'ucy': '\u0443',
7892    'Ucy': '\u0423',
7893    'udarr': '\u21C5',
7894    'udblac': '\u0171',
7895    'Udblac': '\u0170',
7896    'udhar': '\u296E',
7897    'ufisht': '\u297E',
7898    'ufr': '\uD835\uDD32',
7899    'Ufr': '\uD835\uDD18',
7900    'ugrave': '\xF9',
7901    'Ugrave': '\xD9',
7902    'uHar': '\u2963',
7903    'uharl': '\u21BF',
7904    'uharr': '\u21BE',
7905    'uhblk': '\u2580',
7906    'ulcorn': '\u231C',
7907    'ulcorner': '\u231C',
7908    'ulcrop': '\u230F',
7909    'ultri': '\u25F8',
7910    'umacr': '\u016B',
7911    'Umacr': '\u016A',
7912    'uml': '\xA8',
7913    'UnderBar': '_',
7914    'UnderBrace': '\u23DF',
7915    'UnderBracket': '\u23B5',
7916    'UnderParenthesis': '\u23DD',
7917    'Union': '\u22C3',
7918    'UnionPlus': '\u228E',
7919    'uogon': '\u0173',
7920    'Uogon': '\u0172',
7921    'uopf': '\uD835\uDD66',
7922    'Uopf': '\uD835\uDD4C',
7923    'uparrow': '\u2191',
7924    'Uparrow': '\u21D1',
7925    'UpArrow': '\u2191',
7926    'UpArrowBar': '\u2912',
7927    'UpArrowDownArrow': '\u21C5',
7928    'updownarrow': '\u2195',
7929    'Updownarrow': '\u21D5',
7930    'UpDownArrow': '\u2195',
7931    'UpEquilibrium': '\u296E',
7932    'upharpoonleft': '\u21BF',
7933    'upharpoonright': '\u21BE',
7934    'uplus': '\u228E',
7935    'UpperLeftArrow': '\u2196',
7936    'UpperRightArrow': '\u2197',
7937    'upsi': '\u03C5',
7938    'Upsi': '\u03D2',
7939    'upsih': '\u03D2',
7940    'upsilon': '\u03C5',
7941    'Upsilon': '\u03A5',
7942    'UpTee': '\u22A5',
7943    'UpTeeArrow': '\u21A5',
7944    'upuparrows': '\u21C8',
7945    'urcorn': '\u231D',
7946    'urcorner': '\u231D',
7947    'urcrop': '\u230E',
7948    'uring': '\u016F',
7949    'Uring': '\u016E',
7950    'urtri': '\u25F9',
7951    'uscr': '\uD835\uDCCA',
7952    'Uscr': '\uD835\uDCB0',
7953    'utdot': '\u22F0',
7954    'utilde': '\u0169',
7955    'Utilde': '\u0168',
7956    'utri': '\u25B5',
7957    'utrif': '\u25B4',
7958    'uuarr': '\u21C8',
7959    'uuml': '\xFC',
7960    'Uuml': '\xDC',
7961    'uwangle': '\u29A7',
7962    'vangrt': '\u299C',
7963    'varepsilon': '\u03F5',
7964    'varkappa': '\u03F0',
7965    'varnothing': '\u2205',
7966    'varphi': '\u03D5',
7967    'varpi': '\u03D6',
7968    'varpropto': '\u221D',
7969    'varr': '\u2195',
7970    'vArr': '\u21D5',
7971    'varrho': '\u03F1',
7972    'varsigma': '\u03C2',
7973    'varsubsetneq': '\u228A\uFE00',
7974    'varsubsetneqq': '\u2ACB\uFE00',
7975    'varsupsetneq': '\u228B\uFE00',
7976    'varsupsetneqq': '\u2ACC\uFE00',
7977    'vartheta': '\u03D1',
7978    'vartriangleleft': '\u22B2',
7979    'vartriangleright': '\u22B3',
7980    'vBar': '\u2AE8',
7981    'Vbar': '\u2AEB',
7982    'vBarv': '\u2AE9',
7983    'vcy': '\u0432',
7984    'Vcy': '\u0412',
7985    'vdash': '\u22A2',
7986    'vDash': '\u22A8',
7987    'Vdash': '\u22A9',
7988    'VDash': '\u22AB',
7989    'Vdashl': '\u2AE6',
7990    'vee': '\u2228',
7991    'Vee': '\u22C1',
7992    'veebar': '\u22BB',
7993    'veeeq': '\u225A',
7994    'vellip': '\u22EE',
7995    'verbar': '|',
7996    'Verbar': '\u2016',
7997    'vert': '|',
7998    'Vert': '\u2016',
7999    'VerticalBar': '\u2223',
8000    'VerticalLine': '|',
8001    'VerticalSeparator': '\u2758',
8002    'VerticalTilde': '\u2240',
8003    'VeryThinSpace': '\u200A',
8004    'vfr': '\uD835\uDD33',
8005    'Vfr': '\uD835\uDD19',
8006    'vltri': '\u22B2',
8007    'vnsub': '\u2282\u20D2',
8008    'vnsup': '\u2283\u20D2',
8009    'vopf': '\uD835\uDD67',
8010    'Vopf': '\uD835\uDD4D',
8011    'vprop': '\u221D',
8012    'vrtri': '\u22B3',
8013    'vscr': '\uD835\uDCCB',
8014    'Vscr': '\uD835\uDCB1',
8015    'vsubne': '\u228A\uFE00',
8016    'vsubnE': '\u2ACB\uFE00',
8017    'vsupne': '\u228B\uFE00',
8018    'vsupnE': '\u2ACC\uFE00',
8019    'Vvdash': '\u22AA',
8020    'vzigzag': '\u299A',
8021    'wcirc': '\u0175',
8022    'Wcirc': '\u0174',
8023    'wedbar': '\u2A5F',
8024    'wedge': '\u2227',
8025    'Wedge': '\u22C0',
8026    'wedgeq': '\u2259',
8027    'weierp': '\u2118',
8028    'wfr': '\uD835\uDD34',
8029    'Wfr': '\uD835\uDD1A',
8030    'wopf': '\uD835\uDD68',
8031    'Wopf': '\uD835\uDD4E',
8032    'wp': '\u2118',
8033    'wr': '\u2240',
8034    'wreath': '\u2240',
8035    'wscr': '\uD835\uDCCC',
8036    'Wscr': '\uD835\uDCB2',
8037    'xcap': '\u22C2',
8038    'xcirc': '\u25EF',
8039    'xcup': '\u22C3',
8040    'xdtri': '\u25BD',
8041    'xfr': '\uD835\uDD35',
8042    'Xfr': '\uD835\uDD1B',
8043    'xharr': '\u27F7',
8044    'xhArr': '\u27FA',
8045    'xi': '\u03BE',
8046    'Xi': '\u039E',
8047    'xlarr': '\u27F5',
8048    'xlArr': '\u27F8',
8049    'xmap': '\u27FC',
8050    'xnis': '\u22FB',
8051    'xodot': '\u2A00',
8052    'xopf': '\uD835\uDD69',
8053    'Xopf': '\uD835\uDD4F',
8054    'xoplus': '\u2A01',
8055    'xotime': '\u2A02',
8056    'xrarr': '\u27F6',
8057    'xrArr': '\u27F9',
8058    'xscr': '\uD835\uDCCD',
8059    'Xscr': '\uD835\uDCB3',
8060    'xsqcup': '\u2A06',
8061    'xuplus': '\u2A04',
8062    'xutri': '\u25B3',
8063    'xvee': '\u22C1',
8064    'xwedge': '\u22C0',
8065    'yacute': '\xFD',
8066    'Yacute': '\xDD',
8067    'yacy': '\u044F',
8068    'YAcy': '\u042F',
8069    'ycirc': '\u0177',
8070    'Ycirc': '\u0176',
8071    'ycy': '\u044B',
8072    'Ycy': '\u042B',
8073    'yen': '\xA5',
8074    'yfr': '\uD835\uDD36',
8075    'Yfr': '\uD835\uDD1C',
8076    'yicy': '\u0457',
8077    'YIcy': '\u0407',
8078    'yopf': '\uD835\uDD6A',
8079    'Yopf': '\uD835\uDD50',
8080    'yscr': '\uD835\uDCCE',
8081    'Yscr': '\uD835\uDCB4',
8082    'yucy': '\u044E',
8083    'YUcy': '\u042E',
8084    'yuml': '\xFF',
8085    'Yuml': '\u0178',
8086    'zacute': '\u017A',
8087    'Zacute': '\u0179',
8088    'zcaron': '\u017E',
8089    'Zcaron': '\u017D',
8090    'zcy': '\u0437',
8091    'Zcy': '\u0417',
8092    'zdot': '\u017C',
8093    'Zdot': '\u017B',
8094    'zeetrf': '\u2128',
8095    'ZeroWidthSpace': '\u200B',
8096    'zeta': '\u03B6',
8097    'Zeta': '\u0396',
8098    'zfr': '\uD835\uDD37',
8099    'Zfr': '\u2128',
8100    'zhcy': '\u0436',
8101    'ZHcy': '\u0416',
8102    'zigrarr': '\u21DD',
8103    'zopf': '\uD835\uDD6B',
8104    'Zopf': '\u2124',
8105    'zscr': '\uD835\uDCCF',
8106    'Zscr': '\uD835\uDCB5',
8107    'zwj': '\u200D',
8108    'zwnj': '\u200C'
8109  };
8110  var decodeMapLegacy = {
8111    'aacute': '\xE1',
8112    'Aacute': '\xC1',
8113    'acirc': '\xE2',
8114    'Acirc': '\xC2',
8115    'acute': '\xB4',
8116    'aelig': '\xE6',
8117    'AElig': '\xC6',
8118    'agrave': '\xE0',
8119    'Agrave': '\xC0',
8120    'amp': '&',
8121    'AMP': '&',
8122    'aring': '\xE5',
8123    'Aring': '\xC5',
8124    'atilde': '\xE3',
8125    'Atilde': '\xC3',
8126    'auml': '\xE4',
8127    'Auml': '\xC4',
8128    'brvbar': '\xA6',
8129    'ccedil': '\xE7',
8130    'Ccedil': '\xC7',
8131    'cedil': '\xB8',
8132    'cent': '\xA2',
8133    'copy': '\xA9',
8134    'COPY': '\xA9',
8135    'curren': '\xA4',
8136    'deg': '\xB0',
8137    'divide': '\xF7',
8138    'eacute': '\xE9',
8139    'Eacute': '\xC9',
8140    'ecirc': '\xEA',
8141    'Ecirc': '\xCA',
8142    'egrave': '\xE8',
8143    'Egrave': '\xC8',
8144    'eth': '\xF0',
8145    'ETH': '\xD0',
8146    'euml': '\xEB',
8147    'Euml': '\xCB',
8148    'frac12': '\xBD',
8149    'frac14': '\xBC',
8150    'frac34': '\xBE',
8151    'gt': '>',
8152    'GT': '>',
8153    'iacute': '\xED',
8154    'Iacute': '\xCD',
8155    'icirc': '\xEE',
8156    'Icirc': '\xCE',
8157    'iexcl': '\xA1',
8158    'igrave': '\xEC',
8159    'Igrave': '\xCC',
8160    'iquest': '\xBF',
8161    'iuml': '\xEF',
8162    'Iuml': '\xCF',
8163    'laquo': '\xAB',
8164    'lt': '<',
8165    'LT': '<',
8166    'macr': '\xAF',
8167    'micro': '\xB5',
8168    'middot': '\xB7',
8169    'nbsp': '\xA0',
8170    'not': '\xAC',
8171    'ntilde': '\xF1',
8172    'Ntilde': '\xD1',
8173    'oacute': '\xF3',
8174    'Oacute': '\xD3',
8175    'ocirc': '\xF4',
8176    'Ocirc': '\xD4',
8177    'ograve': '\xF2',
8178    'Ograve': '\xD2',
8179    'ordf': '\xAA',
8180    'ordm': '\xBA',
8181    'oslash': '\xF8',
8182    'Oslash': '\xD8',
8183    'otilde': '\xF5',
8184    'Otilde': '\xD5',
8185    'ouml': '\xF6',
8186    'Ouml': '\xD6',
8187    'para': '\xB6',
8188    'plusmn': '\xB1',
8189    'pound': '\xA3',
8190    'quot': '"',
8191    'QUOT': '"',
8192    'raquo': '\xBB',
8193    'reg': '\xAE',
8194    'REG': '\xAE',
8195    'sect': '\xA7',
8196    'shy': '\xAD',
8197    'sup1': '\xB9',
8198    'sup2': '\xB2',
8199    'sup3': '\xB3',
8200    'szlig': '\xDF',
8201    'thorn': '\xFE',
8202    'THORN': '\xDE',
8203    'times': '\xD7',
8204    'uacute': '\xFA',
8205    'Uacute': '\xDA',
8206    'ucirc': '\xFB',
8207    'Ucirc': '\xDB',
8208    'ugrave': '\xF9',
8209    'Ugrave': '\xD9',
8210    'uml': '\xA8',
8211    'uuml': '\xFC',
8212    'Uuml': '\xDC',
8213    'yacute': '\xFD',
8214    'Yacute': '\xDD',
8215    'yen': '\xA5',
8216    'yuml': '\xFF'
8217  };
8218  var decodeMapNumeric = {
8219    '0': '\uFFFD',
8220    '128': '\u20AC',
8221    '130': '\u201A',
8222    '131': '\u0192',
8223    '132': '\u201E',
8224    '133': '\u2026',
8225    '134': '\u2020',
8226    '135': '\u2021',
8227    '136': '\u02C6',
8228    '137': '\u2030',
8229    '138': '\u0160',
8230    '139': '\u2039',
8231    '140': '\u0152',
8232    '142': '\u017D',
8233    '145': '\u2018',
8234    '146': '\u2019',
8235    '147': '\u201C',
8236    '148': '\u201D',
8237    '149': '\u2022',
8238    '150': '\u2013',
8239    '151': '\u2014',
8240    '152': '\u02DC',
8241    '153': '\u2122',
8242    '154': '\u0161',
8243    '155': '\u203A',
8244    '156': '\u0153',
8245    '158': '\u017E',
8246    '159': '\u0178'
8247  };
8248  var invalidReferenceCodePoints = [1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 64976, 64977, 64978, 64979, 64980, 64981, 64982, 64983, 64984, 64985, 64986, 64987, 64988, 64989, 64990, 64991, 64992, 64993, 64994, 64995, 64996, 64997, 64998, 64999, 65000, 65001, 65002, 65003, 65004, 65005, 65006, 65007, 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111];
8249  /*--------------------------------------------------------------------------*/
8250
8251  var stringFromCharCode = String.fromCharCode;
8252  var object = {};
8253  var hasOwnProperty = object.hasOwnProperty;
8254
8255  var has = function (object, propertyName) {
8256    return hasOwnProperty.call(object, propertyName);
8257  };
8258
8259  var contains = function (array, value) {
8260    var index = -1;
8261    var length = array.length;
8262
8263    while (++index < length) {
8264      if (array[index] == value) {
8265        return true;
8266      }
8267    }
8268
8269    return false;
8270  };
8271
8272  var merge = function (options, defaults) {
8273    if (!options) {
8274      return defaults;
8275    }
8276
8277    var result = {};
8278    var key;
8279
8280    for (key in defaults) {
8281      // A `hasOwnProperty` check is not needed here, since only recognized
8282      // option names are used anyway. Any others are ignored.
8283      result[key] = has(options, key) ? options[key] : defaults[key];
8284    }
8285
8286    return result;
8287  }; // Modified version of `ucs2encode`; see https://mths.be/punycode.
8288
8289
8290  var codePointToSymbol = function (codePoint, strict) {
8291    var output = '';
8292
8293    if (codePoint >= 0xD800 && codePoint <= 0xDFFF || codePoint > 0x10FFFF) {
8294      // See issue #4:
8295      // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
8296      // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
8297      // REPLACEMENT CHARACTER.”
8298      if (strict) {
8299        parseError('character reference outside the permissible Unicode range');
8300      }
8301
8302      return '\uFFFD';
8303    }
8304
8305    if (has(decodeMapNumeric, codePoint)) {
8306      if (strict) {
8307        parseError('disallowed character reference');
8308      }
8309
8310      return decodeMapNumeric[codePoint];
8311    }
8312
8313    if (strict && contains(invalidReferenceCodePoints, codePoint)) {
8314      parseError('disallowed character reference');
8315    }
8316
8317    if (codePoint > 0xFFFF) {
8318      codePoint -= 0x10000;
8319      output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
8320      codePoint = 0xDC00 | codePoint & 0x3FF;
8321    }
8322
8323    output += stringFromCharCode(codePoint);
8324    return output;
8325  };
8326
8327  var hexEscape = function (codePoint) {
8328    return '&#x' + codePoint.toString(16).toUpperCase() + ';';
8329  };
8330
8331  var decEscape = function (codePoint) {
8332    return '&#' + codePoint + ';';
8333  };
8334
8335  var parseError = function (message) {
8336    throw Error('Parse error: ' + message);
8337  };
8338  /*--------------------------------------------------------------------------*/
8339
8340
8341  var encode = function (string, options) {
8342    options = merge(options, encode.options);
8343    var strict = options.strict;
8344
8345    if (strict && regexInvalidRawCodePoint.test(string)) {
8346      parseError('forbidden code point');
8347    }
8348
8349    var encodeEverything = options.encodeEverything;
8350    var useNamedReferences = options.useNamedReferences;
8351    var allowUnsafeSymbols = options.allowUnsafeSymbols;
8352    var escapeCodePoint = options.decimal ? decEscape : hexEscape;
8353
8354    var escapeBmpSymbol = function (symbol) {
8355      return escapeCodePoint(symbol.charCodeAt(0));
8356    };
8357
8358    if (encodeEverything) {
8359      // Encode ASCII symbols.
8360      string = string.replace(regexAsciiWhitelist, function (symbol) {
8361        // Use named references if requested & possible.
8362        if (useNamedReferences && has(encodeMap, symbol)) {
8363          return '&' + encodeMap[symbol] + ';';
8364        }
8365
8366        return escapeBmpSymbol(symbol);
8367      }); // Shorten a few escapes that represent two symbols, of which at least one
8368      // is within the ASCII range.
8369
8370      if (useNamedReferences) {
8371        string = string.replace(/&gt;\u20D2/g, '&nvgt;').replace(/&lt;\u20D2/g, '&nvlt;').replace(/&#x66;&#x6A;/g, '&fjlig;');
8372      } // Encode non-ASCII symbols.
8373
8374
8375      if (useNamedReferences) {
8376        // Encode non-ASCII symbols that can be replaced with a named reference.
8377        string = string.replace(regexEncodeNonAscii, function (string) {
8378          // Note: there is no need to check `has(encodeMap, string)` here.
8379          return '&' + encodeMap[string] + ';';
8380        });
8381      } // Note: any remaining non-ASCII symbols are handled outside of the `if`.
8382
8383    } else if (useNamedReferences) {
8384      // Apply named character references.
8385      // Encode `<>"'&` using named character references.
8386      if (!allowUnsafeSymbols) {
8387        string = string.replace(regexEscape, function (string) {
8388          return '&' + encodeMap[string] + ';'; // no need to check `has()` here
8389        });
8390      } // Shorten escapes that represent two symbols, of which at least one is
8391      // `<>"'&`.
8392
8393
8394      string = string.replace(/&gt;\u20D2/g, '&nvgt;').replace(/&lt;\u20D2/g, '&nvlt;'); // Encode non-ASCII symbols that can be replaced with a named reference.
8395
8396      string = string.replace(regexEncodeNonAscii, function (string) {
8397        // Note: there is no need to check `has(encodeMap, string)` here.
8398        return '&' + encodeMap[string] + ';';
8399      });
8400    } else if (!allowUnsafeSymbols) {
8401      // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled
8402      // using named character references.
8403      string = string.replace(regexEscape, escapeBmpSymbol);
8404    }
8405
8406    return string // Encode astral symbols.
8407    .replace(regexAstralSymbols, function ($0) {
8408      // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
8409      var high = $0.charCodeAt(0);
8410      var low = $0.charCodeAt(1);
8411      var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
8412      return escapeCodePoint(codePoint);
8413    }) // Encode any remaining BMP symbols that are not printable ASCII symbols
8414    // using a hexadecimal escape.
8415    .replace(regexBmpWhitelist, escapeBmpSymbol);
8416  }; // Expose default options (so they can be overridden globally).
8417
8418
8419  encode.options = {
8420    'allowUnsafeSymbols': false,
8421    'encodeEverything': false,
8422    'strict': false,
8423    'useNamedReferences': false,
8424    'decimal': false
8425  };
8426
8427  var decode = function (html, options) {
8428    options = merge(options, decode.options);
8429    var strict = options.strict;
8430
8431    if (strict && regexInvalidEntity.test(html)) {
8432      parseError('malformed character reference');
8433    }
8434
8435    return html.replace(regexDecode, function ($0, $1, $2, $3, $4, $5, $6, $7, $8) {
8436      var codePoint;
8437      var semicolon;
8438      var decDigits;
8439      var hexDigits;
8440      var reference;
8441      var next;
8442
8443      if ($1) {
8444        reference = $1; // Note: there is no need to check `has(decodeMap, reference)`.
8445
8446        return decodeMap[reference];
8447      }
8448
8449      if ($2) {
8450        // Decode named character references without trailing `;`, e.g. `&amp`.
8451        // This is only a parse error if it gets converted to `&`, or if it is
8452        // followed by `=` in an attribute context.
8453        reference = $2;
8454        next = $3;
8455
8456        if (next && options.isAttributeValue) {
8457          if (strict && next == '=') {
8458            parseError('`&` did not start a character reference');
8459          }
8460
8461          return $0;
8462        } else {
8463          if (strict) {
8464            parseError('named character reference was not terminated by a semicolon');
8465          } // Note: there is no need to check `has(decodeMapLegacy, reference)`.
8466
8467
8468          return decodeMapLegacy[reference] + (next || '');
8469        }
8470      }
8471
8472      if ($4) {
8473        // Decode decimal escapes, e.g. `&#119558;`.
8474        decDigits = $4;
8475        semicolon = $5;
8476
8477        if (strict && !semicolon) {
8478          parseError('character reference was not terminated by a semicolon');
8479        }
8480
8481        codePoint = parseInt(decDigits, 10);
8482        return codePointToSymbol(codePoint, strict);
8483      }
8484
8485      if ($6) {
8486        // Decode hexadecimal escapes, e.g. `&#x1D306;`.
8487        hexDigits = $6;
8488        semicolon = $7;
8489
8490        if (strict && !semicolon) {
8491          parseError('character reference was not terminated by a semicolon');
8492        }
8493
8494        codePoint = parseInt(hexDigits, 16);
8495        return codePointToSymbol(codePoint, strict);
8496      } // If we’re still here, `if ($7)` is implied; it’s an ambiguous
8497      // ampersand for sure. https://mths.be/notes/ambiguous-ampersands
8498
8499
8500      if (strict) {
8501        parseError('named character reference was not terminated by a semicolon');
8502      }
8503
8504      return $0;
8505    });
8506  }; // Expose default options (so they can be overridden globally).
8507
8508
8509  decode.options = {
8510    'isAttributeValue': false,
8511    'strict': false
8512  };
8513
8514  var escape = function (string) {
8515    return string.replace(regexEscape, function ($0) {
8516      // Note: there is no need to check `has(escapeMap, $0)` here.
8517      return escapeMap[$0];
8518    });
8519  };
8520  /*--------------------------------------------------------------------------*/
8521
8522
8523  var he = {
8524    'version': '1.2.0',
8525    'encode': encode,
8526    'decode': decode,
8527    'escape': escape,
8528    'unescape': decode
8529  }; // Some AMD build optimizers, like r.js, check for specific condition patterns
8530  // like the following:
8531
8532  if (true) {
8533    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {
8534      return he;
8535    }).call(exports, __webpack_require__, exports, module),
8536				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
8537  } else { var key; }
8538})(this);
8539/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module), __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
8540
8541/***/ }),
8542
vendor: 31,458 bytes, lines 8543-9497
8543/***/ "./node_modules/history/esm/history.js":
8544/*!*********************************************!*\
8545  !*** ./node_modules/history/esm/history.js ***!
8546  \*********************************************/
8547/*! exports provided: createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath */
8548/***/ (function(module, __webpack_exports__, __webpack_require__) {
8549
8550"use strict";
8551__webpack_require__.r(__webpack_exports__);
8552/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createBrowserHistory", function() { return createBrowserHistory; });
8553/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createHashHistory", function() { return createHashHistory; });
8554/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createMemoryHistory", function() { return createMemoryHistory; });
8555/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createLocation", function() { return createLocation; });
8556/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "locationsAreEqual", function() { return locationsAreEqual; });
8557/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parsePath", function() { return parsePath; });
8558/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPath", function() { return createPath; });
8559/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
8560/* harmony import */ var resolve_pathname__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! resolve-pathname */ "./node_modules/resolve-pathname/esm/resolve-pathname.js");
8561/* harmony import */ var value_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! value-equal */ "./node_modules/value-equal/esm/value-equal.js");
8562/* harmony import */ var tiny_warning__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tiny-warning */ "./node_modules/tiny-warning/dist/tiny-warning.esm.js");
8563/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tiny-invariant */ "./node_modules/tiny-invariant/dist/tiny-invariant.esm.js");
8564
8565
8566
8567
8568
8569
8570function addLeadingSlash(path) {
8571  return path.charAt(0) === '/' ? path : '/' + path;
8572}
8573
8574function stripLeadingSlash(path) {
8575  return path.charAt(0) === '/' ? path.substr(1) : path;
8576}
8577
8578function hasBasename(path, prefix) {
8579  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;
8580}
8581
8582function stripBasename(path, prefix) {
8583  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;
8584}
8585
8586function stripTrailingSlash(path) {
8587  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;
8588}
8589
8590function parsePath(path) {
8591  var pathname = path || '/';
8592  var search = '';
8593  var hash = '';
8594  var hashIndex = pathname.indexOf('#');
8595
8596  if (hashIndex !== -1) {
8597    hash = pathname.substr(hashIndex);
8598    pathname = pathname.substr(0, hashIndex);
8599  }
8600
8601  var searchIndex = pathname.indexOf('?');
8602
8603  if (searchIndex !== -1) {
8604    search = pathname.substr(searchIndex);
8605    pathname = pathname.substr(0, searchIndex);
8606  }
8607
8608  return {
8609    pathname: pathname,
8610    search: search === '?' ? '' : search,
8611    hash: hash === '#' ? '' : hash
8612  };
8613}
8614
8615function createPath(location) {
8616  var pathname = location.pathname,
8617      search = location.search,
8618      hash = location.hash;
8619  var path = pathname || '/';
8620  if (search && search !== '?') path += search.charAt(0) === '?' ? search : "?" + search;
8621  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : "#" + hash;
8622  return path;
8623}
8624
8625function createLocation(path, state, key, currentLocation) {
8626  var location;
8627
8628  if (typeof path === 'string') {
8629    // Two-arg form: push(path, state)
8630    location = parsePath(path);
8631    location.state = state;
8632  } else {
8633    // One-arg form: push(location)
8634    location = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, path);
8635    if (location.pathname === undefined) location.pathname = '';
8636
8637    if (location.search) {
8638      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;
8639    } else {
8640      location.search = '';
8641    }
8642
8643    if (location.hash) {
8644      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;
8645    } else {
8646      location.hash = '';
8647    }
8648
8649    if (state !== undefined && location.state === undefined) location.state = state;
8650  }
8651
8652  try {
8653    location.pathname = decodeURI(location.pathname);
8654  } catch (e) {
8655    if (e instanceof URIError) {
8656      throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');
8657    } else {
8658      throw e;
8659    }
8660  }
8661
8662  if (key) location.key = key;
8663
8664  if (currentLocation) {
8665    // Resolve incomplete/relative pathname relative to current location.
8666    if (!location.pathname) {
8667      location.pathname = currentLocation.pathname;
8668    } else if (location.pathname.charAt(0) !== '/') {
8669      location.pathname = Object(resolve_pathname__WEBPACK_IMPORTED_MODULE_1__["default"])(location.pathname, currentLocation.pathname);
8670    }
8671  } else {
8672    // When there is no prior location and pathname is empty, set it to /
8673    if (!location.pathname) {
8674      location.pathname = '/';
8675    }
8676  }
8677
8678  return location;
8679}
8680
8681function locationsAreEqual(a, b) {
8682  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && Object(value_equal__WEBPACK_IMPORTED_MODULE_2__["default"])(a.state, b.state);
8683}
8684
8685function createTransitionManager() {
8686  var prompt = null;
8687
8688  function setPrompt(nextPrompt) {
8689     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(prompt == null, 'A history supports only one prompt at a time') : undefined;
8690    prompt = nextPrompt;
8691    return function () {
8692      if (prompt === nextPrompt) prompt = null;
8693    };
8694  }
8695
8696  function confirmTransitionTo(location, action, getUserConfirmation, callback) {
8697    // TODO: If another transition starts while we're still confirming
8698    // the previous one, we may end up in a weird state. Figure out the
8699    // best way to handle this.
8700    if (prompt != null) {
8701      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;
8702
8703      if (typeof result === 'string') {
8704        if (typeof getUserConfirmation === 'function') {
8705          getUserConfirmation(result, callback);
8706        } else {
8707           true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : undefined;
8708          callback(true);
8709        }
8710      } else {
8711        // Return false from a transition hook to cancel the transition.
8712        callback(result !== false);
8713      }
8714    } else {
8715      callback(true);
8716    }
8717  }
8718
8719  var listeners = [];
8720
8721  function appendListener(fn) {
8722    var isActive = true;
8723
8724    function listener() {
8725      if (isActive) fn.apply(void 0, arguments);
8726    }
8727
8728    listeners.push(listener);
8729    return function () {
8730      isActive = false;
8731      listeners = listeners.filter(function (item) {
8732        return item !== listener;
8733      });
8734    };
8735  }
8736
8737  function notifyListeners() {
8738    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
8739      args[_key] = arguments[_key];
8740    }
8741
8742    listeners.forEach(function (listener) {
8743      return listener.apply(void 0, args);
8744    });
8745  }
8746
8747  return {
8748    setPrompt: setPrompt,
8749    confirmTransitionTo: confirmTransitionTo,
8750    appendListener: appendListener,
8751    notifyListeners: notifyListeners
8752  };
8753}
8754
8755var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
8756
8757function getConfirmation(message, callback) {
8758  callback(window.confirm(message)); // eslint-disable-line no-alert
8759}
8760/**
8761 * Returns true if the HTML5 history API is supported. Taken from Modernizr.
8762 *
8763 * https://github.com/Modernizr/Modernizr/blob/master/LICENSE
8764 * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js
8765 * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586
8766 */
8767
8768
8769function supportsHistory() {
8770  var ua = window.navigator.userAgent;
8771  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;
8772  return window.history && 'pushState' in window.history;
8773}
8774/**
8775 * Returns true if browser fires popstate on hash change.
8776 * IE10 and IE11 do not.
8777 */
8778
8779
8780function supportsPopStateOnHashChange() {
8781  return window.navigator.userAgent.indexOf('Trident') === -1;
8782}
8783/**
8784 * Returns false if using go(n) with hash history causes a full page reload.
8785 */
8786
8787
8788function supportsGoWithoutReloadUsingHash() {
8789  return window.navigator.userAgent.indexOf('Firefox') === -1;
8790}
8791/**
8792 * Returns true if a given popstate event is an extraneous WebKit event.
8793 * Accounts for the fact that Chrome on iOS fires real popstate events
8794 * containing undefined state when pressing the back button.
8795 */
8796
8797
8798function isExtraneousPopstateEvent(event) {
8799  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;
8800}
8801
8802var PopStateEvent = 'popstate';
8803var HashChangeEvent = 'hashchange';
8804
8805function getHistoryState() {
8806  try {
8807    return window.history.state || {};
8808  } catch (e) {
8809    // IE 11 sometimes throws when accessing window.history.state
8810    // See https://github.com/ReactTraining/history/pull/289
8811    return {};
8812  }
8813}
8814/**
8815 * Creates a history object that uses the HTML5 history API including
8816 * pushState, replaceState, and the popstate event.
8817 */
8818
8819
8820function createBrowserHistory(props) {
8821  if (props === void 0) {
8822    props = {};
8823  }
8824
8825  !canUseDOM ?  true ? Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_4__["default"])(false, 'Browser history needs a DOM') : undefined : void 0;
8826  var globalHistory = window.history;
8827  var canUseHistory = supportsHistory();
8828  var needsHashChangeListener = !supportsPopStateOnHashChange();
8829  var _props = props,
8830      _props$forceRefresh = _props.forceRefresh,
8831      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,
8832      _props$getUserConfirm = _props.getUserConfirmation,
8833      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,
8834      _props$keyLength = _props.keyLength,
8835      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;
8836  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';
8837
8838  function getDOMLocation(historyState) {
8839    var _ref = historyState || {},
8840        key = _ref.key,
8841        state = _ref.state;
8842
8843    var _window$location = window.location,
8844        pathname = _window$location.pathname,
8845        search = _window$location.search,
8846        hash = _window$location.hash;
8847    var path = pathname + search + hash;
8848     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path "' + path + '" to begin with "' + basename + '".') : undefined;
8849    if (basename) path = stripBasename(path, basename);
8850    return createLocation(path, state, key);
8851  }
8852
8853  function createKey() {
8854    return Math.random().toString(36).substr(2, keyLength);
8855  }
8856
8857  var transitionManager = createTransitionManager();
8858
8859  function setState(nextState) {
8860    Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])(history, nextState);
8861
8862    history.length = globalHistory.length;
8863    transitionManager.notifyListeners(history.location, history.action);
8864  }
8865
8866  function handlePopState(event) {
8867    // Ignore extraneous popstate events in WebKit.
8868    if (isExtraneousPopstateEvent(event)) return;
8869    handlePop(getDOMLocation(event.state));
8870  }
8871
8872  function handleHashChange() {
8873    handlePop(getDOMLocation(getHistoryState()));
8874  }
8875
8876  var forceNextPop = false;
8877
8878  function handlePop(location) {
8879    if (forceNextPop) {
8880      forceNextPop = false;
8881      setState();
8882    } else {
8883      var action = 'POP';
8884      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
8885        if (ok) {
8886          setState({
8887            action: action,
8888            location: location
8889          });
8890        } else {
8891          revertPop(location);
8892        }
8893      });
8894    }
8895  }
8896
8897  function revertPop(fromLocation) {
8898    var toLocation = history.location; // TODO: We could probably make this more reliable by
8899    // keeping a list of keys we've seen in sessionStorage.
8900    // Instead, we just default to 0 for keys we don't know.
8901
8902    var toIndex = allKeys.indexOf(toLocation.key);
8903    if (toIndex === -1) toIndex = 0;
8904    var fromIndex = allKeys.indexOf(fromLocation.key);
8905    if (fromIndex === -1) fromIndex = 0;
8906    var delta = toIndex - fromIndex;
8907
8908    if (delta) {
8909      forceNextPop = true;
8910      go(delta);
8911    }
8912  }
8913
8914  var initialLocation = getDOMLocation(getHistoryState());
8915  var allKeys = [initialLocation.key]; // Public interface
8916
8917  function createHref(location) {
8918    return basename + createPath(location);
8919  }
8920
8921  function push(path, state) {
8922     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined;
8923    var action = 'PUSH';
8924    var location = createLocation(path, state, createKey(), history.location);
8925    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
8926      if (!ok) return;
8927      var href = createHref(location);
8928      var key = location.key,
8929          state = location.state;
8930
8931      if (canUseHistory) {
8932        globalHistory.pushState({
8933          key: key,
8934          state: state
8935        }, null, href);
8936
8937        if (forceRefresh) {
8938          window.location.href = href;
8939        } else {
8940          var prevIndex = allKeys.indexOf(history.location.key);
8941          var nextKeys = allKeys.slice(0, prevIndex + 1);
8942          nextKeys.push(location.key);
8943          allKeys = nextKeys;
8944          setState({
8945            action: action,
8946            location: location
8947          });
8948        }
8949      } else {
8950         true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : undefined;
8951        window.location.href = href;
8952      }
8953    });
8954  }
8955
8956  function replace(path, state) {
8957     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined;
8958    var action = 'REPLACE';
8959    var location = createLocation(path, state, createKey(), history.location);
8960    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
8961      if (!ok) return;
8962      var href = createHref(location);
8963      var key = location.key,
8964          state = location.state;
8965
8966      if (canUseHistory) {
8967        globalHistory.replaceState({
8968          key: key,
8969          state: state
8970        }, null, href);
8971
8972        if (forceRefresh) {
8973          window.location.replace(href);
8974        } else {
8975          var prevIndex = allKeys.indexOf(history.location.key);
8976          if (prevIndex !== -1) allKeys[prevIndex] = location.key;
8977          setState({
8978            action: action,
8979            location: location
8980          });
8981        }
8982      } else {
8983         true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : undefined;
8984        window.location.replace(href);
8985      }
8986    });
8987  }
8988
8989  function go(n) {
8990    globalHistory.go(n);
8991  }
8992
8993  function goBack() {
8994    go(-1);
8995  }
8996
8997  function goForward() {
8998    go(1);
8999  }
9000
9001  var listenerCount = 0;
9002
9003  function checkDOMListeners(delta) {
9004    listenerCount += delta;
9005
9006    if (listenerCount === 1 && delta === 1) {
9007      window.addEventListener(PopStateEvent, handlePopState);
9008      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);
9009    } else if (listenerCount === 0) {
9010      window.removeEventListener(PopStateEvent, handlePopState);
9011      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);
9012    }
9013  }
9014
9015  var isBlocked = false;
9016
9017  function block(prompt) {
9018    if (prompt === void 0) {
9019      prompt = false;
9020    }
9021
9022    var unblock = transitionManager.setPrompt(prompt);
9023
9024    if (!isBlocked) {
9025      checkDOMListeners(1);
9026      isBlocked = true;
9027    }
9028
9029    return function () {
9030      if (isBlocked) {
9031        isBlocked = false;
9032        checkDOMListeners(-1);
9033      }
9034
9035      return unblock();
9036    };
9037  }
9038
9039  function listen(listener) {
9040    var unlisten = transitionManager.appendListener(listener);
9041    checkDOMListeners(1);
9042    return function () {
9043      checkDOMListeners(-1);
9044      unlisten();
9045    };
9046  }
9047
9048  var history = {
9049    length: globalHistory.length,
9050    action: 'POP',
9051    location: initialLocation,
9052    createHref: createHref,
9053    push: push,
9054    replace: replace,
9055    go: go,
9056    goBack: goBack,
9057    goForward: goForward,
9058    block: block,
9059    listen: listen
9060  };
9061  return history;
9062}
9063
9064var HashChangeEvent$1 = 'hashchange';
9065var HashPathCoders = {
9066  hashbang: {
9067    encodePath: function encodePath(path) {
9068      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);
9069    },
9070    decodePath: function decodePath(path) {
9071      return path.charAt(0) === '!' ? path.substr(1) : path;
9072    }
9073  },
9074  noslash: {
9075    encodePath: stripLeadingSlash,
9076    decodePath: addLeadingSlash
9077  },
9078  slash: {
9079    encodePath: addLeadingSlash,
9080    decodePath: addLeadingSlash
9081  }
9082};
9083
9084function stripHash(url) {
9085  var hashIndex = url.indexOf('#');
9086  return hashIndex === -1 ? url : url.slice(0, hashIndex);
9087}
9088
9089function getHashPath() {
9090  // We can't use window.location.hash here because it's not
9091  // consistent across browsers - Firefox will pre-decode it!
9092  var href = window.location.href;
9093  var hashIndex = href.indexOf('#');
9094  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);
9095}
9096
9097function pushHashPath(path) {
9098  window.location.hash = path;
9099}
9100
9101function replaceHashPath(path) {
9102  window.location.replace(stripHash(window.location.href) + '#' + path);
9103}
9104
9105function createHashHistory(props) {
9106  if (props === void 0) {
9107    props = {};
9108  }
9109
9110  !canUseDOM ?  true ? Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_4__["default"])(false, 'Hash history needs a DOM') : undefined : void 0;
9111  var globalHistory = window.history;
9112  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();
9113  var _props = props,
9114      _props$getUserConfirm = _props.getUserConfirmation,
9115      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,
9116      _props$hashType = _props.hashType,
9117      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;
9118  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';
9119  var _HashPathCoders$hashT = HashPathCoders[hashType],
9120      encodePath = _HashPathCoders$hashT.encodePath,
9121      decodePath = _HashPathCoders$hashT.decodePath;
9122
9123  function getDOMLocation() {
9124    var path = decodePath(getHashPath());
9125     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path "' + path + '" to begin with "' + basename + '".') : undefined;
9126    if (basename) path = stripBasename(path, basename);
9127    return createLocation(path);
9128  }
9129
9130  var transitionManager = createTransitionManager();
9131
9132  function setState(nextState) {
9133    Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])(history, nextState);
9134
9135    history.length = globalHistory.length;
9136    transitionManager.notifyListeners(history.location, history.action);
9137  }
9138
9139  var forceNextPop = false;
9140  var ignorePath = null;
9141
9142  function locationsAreEqual$$1(a, b) {
9143    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;
9144  }
9145
9146  function handleHashChange() {
9147    var path = getHashPath();
9148    var encodedPath = encodePath(path);
9149
9150    if (path !== encodedPath) {
9151      // Ensure we always have a properly-encoded hash.
9152      replaceHashPath(encodedPath);
9153    } else {
9154      var location = getDOMLocation();
9155      var prevLocation = history.location;
9156      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.
9157
9158      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.
9159
9160      ignorePath = null;
9161      handlePop(location);
9162    }
9163  }
9164
9165  function handlePop(location) {
9166    if (forceNextPop) {
9167      forceNextPop = false;
9168      setState();
9169    } else {
9170      var action = 'POP';
9171      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
9172        if (ok) {
9173          setState({
9174            action: action,
9175            location: location
9176          });
9177        } else {
9178          revertPop(location);
9179        }
9180      });
9181    }
9182  }
9183
9184  function revertPop(fromLocation) {
9185    var toLocation = history.location; // TODO: We could probably make this more reliable by
9186    // keeping a list of paths we've seen in sessionStorage.
9187    // Instead, we just default to 0 for paths we don't know.
9188
9189    var toIndex = allPaths.lastIndexOf(createPath(toLocation));
9190    if (toIndex === -1) toIndex = 0;
9191    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));
9192    if (fromIndex === -1) fromIndex = 0;
9193    var delta = toIndex - fromIndex;
9194
9195    if (delta) {
9196      forceNextPop = true;
9197      go(delta);
9198    }
9199  } // Ensure the hash is encoded properly before doing anything else.
9200
9201
9202  var path = getHashPath();
9203  var encodedPath = encodePath(path);
9204  if (path !== encodedPath) replaceHashPath(encodedPath);
9205  var initialLocation = getDOMLocation();
9206  var allPaths = [createPath(initialLocation)]; // Public interface
9207
9208  function createHref(location) {
9209    var baseTag = document.querySelector('base');
9210    var href = '';
9211
9212    if (baseTag && baseTag.getAttribute('href')) {
9213      href = stripHash(window.location.href);
9214    }
9215
9216    return href + '#' + encodePath(basename + createPath(location));
9217  }
9218
9219  function push(path, state) {
9220     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(state === undefined, 'Hash history cannot push state; it is ignored') : undefined;
9221    var action = 'PUSH';
9222    var location = createLocation(path, undefined, undefined, history.location);
9223    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
9224      if (!ok) return;
9225      var path = createPath(location);
9226      var encodedPath = encodePath(basename + path);
9227      var hashChanged = getHashPath() !== encodedPath;
9228
9229      if (hashChanged) {
9230        // We cannot tell if a hashchange was caused by a PUSH, so we'd
9231        // rather setState here and ignore the hashchange. The caveat here
9232        // is that other hash histories in the page will consider it a POP.
9233        ignorePath = path;
9234        pushHashPath(encodedPath);
9235        var prevIndex = allPaths.lastIndexOf(createPath(history.location));
9236        var nextPaths = allPaths.slice(0, prevIndex + 1);
9237        nextPaths.push(path);
9238        allPaths = nextPaths;
9239        setState({
9240          action: action,
9241          location: location
9242        });
9243      } else {
9244         true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : undefined;
9245        setState();
9246      }
9247    });
9248  }
9249
9250  function replace(path, state) {
9251     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(state === undefined, 'Hash history cannot replace state; it is ignored') : undefined;
9252    var action = 'REPLACE';
9253    var location = createLocation(path, undefined, undefined, history.location);
9254    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
9255      if (!ok) return;
9256      var path = createPath(location);
9257      var encodedPath = encodePath(basename + path);
9258      var hashChanged = getHashPath() !== encodedPath;
9259
9260      if (hashChanged) {
9261        // We cannot tell if a hashchange was caused by a REPLACE, so we'd
9262        // rather setState here and ignore the hashchange. The caveat here
9263        // is that other hash histories in the page will consider it a POP.
9264        ignorePath = path;
9265        replaceHashPath(encodedPath);
9266      }
9267
9268      var prevIndex = allPaths.indexOf(createPath(history.location));
9269      if (prevIndex !== -1) allPaths[prevIndex] = path;
9270      setState({
9271        action: action,
9272        location: location
9273      });
9274    });
9275  }
9276
9277  function go(n) {
9278     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : undefined;
9279    globalHistory.go(n);
9280  }
9281
9282  function goBack() {
9283    go(-1);
9284  }
9285
9286  function goForward() {
9287    go(1);
9288  }
9289
9290  var listenerCount = 0;
9291
9292  function checkDOMListeners(delta) {
9293    listenerCount += delta;
9294
9295    if (listenerCount === 1 && delta === 1) {
9296      window.addEventListener(HashChangeEvent$1, handleHashChange);
9297    } else if (listenerCount === 0) {
9298      window.removeEventListener(HashChangeEvent$1, handleHashChange);
9299    }
9300  }
9301
9302  var isBlocked = false;
9303
9304  function block(prompt) {
9305    if (prompt === void 0) {
9306      prompt = false;
9307    }
9308
9309    var unblock = transitionManager.setPrompt(prompt);
9310
9311    if (!isBlocked) {
9312      checkDOMListeners(1);
9313      isBlocked = true;
9314    }
9315
9316    return function () {
9317      if (isBlocked) {
9318        isBlocked = false;
9319        checkDOMListeners(-1);
9320      }
9321
9322      return unblock();
9323    };
9324  }
9325
9326  function listen(listener) {
9327    var unlisten = transitionManager.appendListener(listener);
9328    checkDOMListeners(1);
9329    return function () {
9330      checkDOMListeners(-1);
9331      unlisten();
9332    };
9333  }
9334
9335  var history = {
9336    length: globalHistory.length,
9337    action: 'POP',
9338    location: initialLocation,
9339    createHref: createHref,
9340    push: push,
9341    replace: replace,
9342    go: go,
9343    goBack: goBack,
9344    goForward: goForward,
9345    block: block,
9346    listen: listen
9347  };
9348  return history;
9349}
9350
9351function clamp(n, lowerBound, upperBound) {
9352  return Math.min(Math.max(n, lowerBound), upperBound);
9353}
9354/**
9355 * Creates a history object that stores locations in memory.
9356 */
9357
9358
9359function createMemoryHistory(props) {
9360  if (props === void 0) {
9361    props = {};
9362  }
9363
9364  var _props = props,
9365      getUserConfirmation = _props.getUserConfirmation,
9366      _props$initialEntries = _props.initialEntries,
9367      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,
9368      _props$initialIndex = _props.initialIndex,
9369      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,
9370      _props$keyLength = _props.keyLength,
9371      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;
9372  var transitionManager = createTransitionManager();
9373
9374  function setState(nextState) {
9375    Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])(history, nextState);
9376
9377    history.length = history.entries.length;
9378    transitionManager.notifyListeners(history.location, history.action);
9379  }
9380
9381  function createKey() {
9382    return Math.random().toString(36).substr(2, keyLength);
9383  }
9384
9385  var index = clamp(initialIndex, 0, initialEntries.length - 1);
9386  var entries = initialEntries.map(function (entry) {
9387    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());
9388  }); // Public interface
9389
9390  var createHref = createPath;
9391
9392  function push(path, state) {
9393     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined;
9394    var action = 'PUSH';
9395    var location = createLocation(path, state, createKey(), history.location);
9396    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
9397      if (!ok) return;
9398      var prevIndex = history.index;
9399      var nextIndex = prevIndex + 1;
9400      var nextEntries = history.entries.slice(0);
9401
9402      if (nextEntries.length > nextIndex) {
9403        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);
9404      } else {
9405        nextEntries.push(location);
9406      }
9407
9408      setState({
9409        action: action,
9410        location: location,
9411        index: nextIndex,
9412        entries: nextEntries
9413      });
9414    });
9415  }
9416
9417  function replace(path, state) {
9418     true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined;
9419    var action = 'REPLACE';
9420    var location = createLocation(path, state, createKey(), history.location);
9421    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
9422      if (!ok) return;
9423      history.entries[history.index] = location;
9424      setState({
9425        action: action,
9426        location: location
9427      });
9428    });
9429  }
9430
9431  function go(n) {
9432    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);
9433    var action = 'POP';
9434    var location = history.entries[nextIndex];
9435    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
9436      if (ok) {
9437        setState({
9438          action: action,
9439          location: location,
9440          index: nextIndex
9441        });
9442      } else {
9443        // Mimic the behavior of DOM histories by
9444        // causing a render after a cancelled POP.
9445        setState();
9446      }
9447    });
9448  }
9449
9450  function goBack() {
9451    go(-1);
9452  }
9453
9454  function goForward() {
9455    go(1);
9456  }
9457
9458  function canGo(n) {
9459    var nextIndex = history.index + n;
9460    return nextIndex >= 0 && nextIndex < history.entries.length;
9461  }
9462
9463  function block(prompt) {
9464    if (prompt === void 0) {
9465      prompt = false;
9466    }
9467
9468    return transitionManager.setPrompt(prompt);
9469  }
9470
9471  function listen(listener) {
9472    return transitionManager.appendListener(listener);
9473  }
9474
9475  var history = {
9476    length: entries.length,
9477    action: 'POP',
9478    location: entries[index],
9479    index: index,
9480    entries: entries,
9481    createHref: createHref,
9482    push: push,
9483    replace: replace,
9484    go: go,
9485    goBack: goBack,
9486    goForward: goForward,
9487    canGo: canGo,
9488    block: block,
9489    listen: listen
9490  };
9491  return history;
9492}
9493
9494
9495
9496/***/ }),
9497
vendor: 2,337 bytes, lines 9498-9595
9498/***/ "./node_modules/ieee754/index.js":
9499/*!***************************************!*\
9500  !*** ./node_modules/ieee754/index.js ***!
9501  \***************************************/
9502/*! no static exports found */
9503/***/ (function(module, exports) {
9504
9505exports.read = function (buffer, offset, isLE, mLen, nBytes) {
9506  var e, m;
9507  var eLen = nBytes * 8 - mLen - 1;
9508  var eMax = (1 << eLen) - 1;
9509  var eBias = eMax >> 1;
9510  var nBits = -7;
9511  var i = isLE ? nBytes - 1 : 0;
9512  var d = isLE ? -1 : 1;
9513  var s = buffer[offset + i];
9514  i += d;
9515  e = s & (1 << -nBits) - 1;
9516  s >>= -nBits;
9517  nBits += eLen;
9518
9519  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
9520
9521  m = e & (1 << -nBits) - 1;
9522  e >>= -nBits;
9523  nBits += mLen;
9524
9525  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
9526
9527  if (e === 0) {
9528    e = 1 - eBias;
9529  } else if (e === eMax) {
9530    return m ? NaN : (s ? -1 : 1) * Infinity;
9531  } else {
9532    m = m + Math.pow(2, mLen);
9533    e = e - eBias;
9534  }
9535
9536  return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
9537};
9538
9539exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
9540  var e, m, c;
9541  var eLen = nBytes * 8 - mLen - 1;
9542  var eMax = (1 << eLen) - 1;
9543  var eBias = eMax >> 1;
9544  var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
9545  var i = isLE ? 0 : nBytes - 1;
9546  var d = isLE ? 1 : -1;
9547  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
9548  value = Math.abs(value);
9549
9550  if (isNaN(value) || value === Infinity) {
9551    m = isNaN(value) ? 1 : 0;
9552    e = eMax;
9553  } else {
9554    e = Math.floor(Math.log(value) / Math.LN2);
9555
9556    if (value * (c = Math.pow(2, -e)) < 1) {
9557      e--;
9558      c *= 2;
9559    }
9560
9561    if (e + eBias >= 1) {
9562      value += rt / c;
9563    } else {
9564      value += rt * Math.pow(2, 1 - eBias);
9565    }
9566
9567    if (value * c >= 2) {
9568      e++;
9569      c /= 2;
9570    }
9571
9572    if (e + eBias >= eMax) {
9573      m = 0;
9574      e = eMax;
9575    } else if (e + eBias >= 1) {
9576      m = (value * c - 1) * Math.pow(2, mLen);
9577      e = e + eBias;
9578    } else {
9579      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
9580      e = 0;
9581    }
9582  }
9583
9584  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
9585
9586  e = e << mLen | m;
9587  eLen += mLen;
9588
9589  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
9590
9591  buffer[offset + i - d] |= s * 128;
9592};
9593
9594/***/ }),
9595
vendor: 12,022 bytes, lines 9596-10000
9596/***/ "./node_modules/is-what/dist/index.esm.js":
9597/*!************************************************!*\
9598  !*** ./node_modules/is-what/dist/index.esm.js ***!
9599  \************************************************/
9600/*! exports provided: getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet */
9601/***/ (function(module, __webpack_exports__, __webpack_require__) {
9602
9603"use strict";
9604__webpack_require__.r(__webpack_exports__);
9605/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getType", function() { return getType; });
9606/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAnyObject", function() { return isAnyObject; });
9607/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return isArray; });
9608/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBlob", function() { return isBlob; });
9609/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return isBoolean; });
9610/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return isDate; });
9611/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmptyArray", function() { return isEmptyArray; });
9612/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmptyObject", function() { return isEmptyObject; });
9613/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmptyString", function() { return isEmptyString; });
9614/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isError", function() { return isError; });
9615/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFile", function() { return isFile; });
9616/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFullString", function() { return isFullString; });
9617/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; });
9618/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isMap", function() { return isMap; });
9619/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNaNValue", function() { return isNaNValue; });
9620/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return isNull; });
9621/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNullOrUndefined", function() { return isNullOrUndefined; });
9622/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return isNumber; });
9623/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; });
9624/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObjectLike", function() { return isObjectLike; });
9625/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPlainObject", function() { return isPlainObject; });
9626/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPrimitive", function() { return isPrimitive; });
9627/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPromise", function() { return isPromise; });
9628/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isRegExp", function() { return isRegExp; });
9629/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSet", function() { return isSet; });
9630/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; });
9631/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSymbol", function() { return isSymbol; });
9632/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isType", function() { return isType; });
9633/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return isUndefined; });
9634/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWeakMap", function() { return isWeakMap; });
9635/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWeakSet", function() { return isWeakSet; });
9636/**
9637 * Returns the object type of the given payload
9638 *
9639 * @param {*} payload
9640 * @returns {string}
9641 */
9642function getType(payload) {
9643  return Object.prototype.toString.call(payload).slice(8, -1);
9644}
9645/**
9646 * Returns whether the payload is undefined
9647 *
9648 * @param {*} payload
9649 * @returns {payload is undefined}
9650 */
9651
9652
9653function isUndefined(payload) {
9654  return getType(payload) === 'Undefined';
9655}
9656/**
9657 * Returns whether the payload is null
9658 *
9659 * @param {*} payload
9660 * @returns {payload is null}
9661 */
9662
9663
9664function isNull(payload) {
9665  return getType(payload) === 'Null';
9666}
9667/**
9668 * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)
9669 *
9670 * @param {*} payload
9671 * @returns {payload is {[key: string]: any}}
9672 */
9673
9674
9675function isPlainObject(payload) {
9676  if (getType(payload) !== 'Object') return false;
9677  return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;
9678}
9679/**
9680 * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)
9681 *
9682 * @param {*} payload
9683 * @returns {payload is {[key: string]: any}}
9684 */
9685
9686
9687function isObject(payload) {
9688  return isPlainObject(payload);
9689}
9690/**
9691 * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)
9692 *
9693 * @param {*} payload
9694 * @returns {payload is {}}
9695 */
9696
9697
9698function isEmptyObject(payload) {
9699  return isPlainObject(payload) && Object.keys(payload).length === 0;
9700}
9701/**
9702 * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)
9703 *
9704 * @param {*} payload
9705 * @returns {payload is {[key: string]: any}}
9706 */
9707
9708
9709function isAnyObject(payload) {
9710  return getType(payload) === 'Object';
9711}
9712/**
9713 * Returns whether the payload is an object like a type passed in < >
9714 *
9715 * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.
9716 *
9717 * @template T this must be passed in < >
9718 * @param {*} payload
9719 * @returns {payload is T}
9720 */
9721
9722
9723function isObjectLike(payload) {
9724  return isAnyObject(payload);
9725}
9726/**
9727 * Returns whether the payload is a function
9728 *
9729 * @param {*} payload
9730 * @returns {payload is Function}
9731 */
9732
9733
9734function isFunction(payload) {
9735  return getType(payload) === 'Function';
9736}
9737/**
9738 * Returns whether the payload is an array
9739 *
9740 * @param {*} payload
9741 * @returns {payload is undefined}
9742 */
9743
9744
9745function isArray(payload) {
9746  return getType(payload) === 'Array';
9747}
9748/**
9749 * Returns whether the payload is a an empty array
9750 *
9751 * @param {*} payload
9752 * @returns {payload is []}
9753 */
9754
9755
9756function isEmptyArray(payload) {
9757  return isArray(payload) && payload.length === 0;
9758}
9759/**
9760 * Returns whether the payload is a string
9761 *
9762 * @param {*} payload
9763 * @returns {payload is string}
9764 */
9765
9766
9767function isString(payload) {
9768  return getType(payload) === 'String';
9769}
9770/**
9771 * Returns whether the payload is a string, BUT returns false for ''
9772 *
9773 * @param {*} payload
9774 * @returns {payload is string}
9775 */
9776
9777
9778function isFullString(payload) {
9779  return isString(payload) && payload !== '';
9780}
9781/**
9782 * Returns whether the payload is ''
9783 *
9784 * @param {*} payload
9785 * @returns {payload is string}
9786 */
9787
9788
9789function isEmptyString(payload) {
9790  return payload === '';
9791}
9792/**
9793 * Returns whether the payload is a number
9794 *
9795 * This will return false for NaN
9796 *
9797 * @param {*} payload
9798 * @returns {payload is number}
9799 */
9800
9801
9802function isNumber(payload) {
9803  return getType(payload) === 'Number' && !isNaN(payload);
9804}
9805/**
9806 * Returns whether the payload is a boolean
9807 *
9808 * @param {*} payload
9809 * @returns {payload is boolean}
9810 */
9811
9812
9813function isBoolean(payload) {
9814  return getType(payload) === 'Boolean';
9815}
9816/**
9817 * Returns whether the payload is a regular expression (RegExp)
9818 *
9819 * @param {*} payload
9820 * @returns {payload is RegExp}
9821 */
9822
9823
9824function isRegExp(payload) {
9825  return getType(payload) === 'RegExp';
9826}
9827/**
9828 * Returns whether the payload is a Map
9829 *
9830 * @param {*} payload
9831 * @returns {payload is Map}
9832 */
9833
9834
9835function isMap(payload) {
9836  return getType(payload) === 'Map';
9837}
9838/**
9839 * Returns whether the payload is a WeakMap
9840 *
9841 * @param {*} payload
9842 * @returns {payload is WeakMap}
9843 */
9844
9845
9846function isWeakMap(payload) {
9847  return getType(payload) === 'WeakMap';
9848}
9849/**
9850 * Returns whether the payload is a Set
9851 *
9852 * @param {*} payload
9853 * @returns {payload is Set}
9854 */
9855
9856
9857function isSet(payload) {
9858  return getType(payload) === 'Set';
9859}
9860/**
9861 * Returns whether the payload is a WeakSet
9862 *
9863 * @param {*} payload
9864 * @returns {payload is WeakSet}
9865 */
9866
9867
9868function isWeakSet(payload) {
9869  return getType(payload) === 'WeakSet';
9870}
9871/**
9872 * Returns whether the payload is a Symbol
9873 *
9874 * @param {*} payload
9875 * @returns {payload is symbol}
9876 */
9877
9878
9879function isSymbol(payload) {
9880  return getType(payload) === 'Symbol';
9881}
9882/**
9883 * Returns whether the payload is a Date, and that the date is valid
9884 *
9885 * @param {*} payload
9886 * @returns {payload is Date}
9887 */
9888
9889
9890function isDate(payload) {
9891  return getType(payload) === 'Date' && !isNaN(payload);
9892}
9893/**
9894 * Returns whether the payload is a Blob
9895 *
9896 * @param {*} payload
9897 * @returns {payload is Blob}
9898 */
9899
9900
9901function isBlob(payload) {
9902  return getType(payload) === 'Blob';
9903}
9904/**
9905 * Returns whether the payload is a File
9906 *
9907 * @param {*} payload
9908 * @returns {payload is File}
9909 */
9910
9911
9912function isFile(payload) {
9913  return getType(payload) === 'File';
9914}
9915/**
9916 * Returns whether the payload is a Promise
9917 *
9918 * @param {*} payload
9919 * @returns {payload is Promise}
9920 */
9921
9922
9923function isPromise(payload) {
9924  return getType(payload) === 'Promise';
9925}
9926/**
9927 * Returns whether the payload is an Error
9928 *
9929 * @param {*} payload
9930 * @returns {payload is Error}
9931 */
9932
9933
9934function isError(payload) {
9935  return getType(payload) === 'Error';
9936}
9937/**
9938 * Returns whether the payload is `NaN` but also a `number`
9939 *
9940 * @param {*} payload
9941 * @returns {payload is typeof NaN}
9942 */
9943
9944
9945function isNaNValue(payload) {
9946  return getType(payload) === 'Number' && isNaN(payload);
9947}
9948/**
9949 * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
9950 *
9951 * @param {*} payload
9952 * @returns {(payload is boolean | null | undefined | number | string | symbol)}
9953 */
9954
9955
9956function isPrimitive(payload) {
9957  return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);
9958}
9959/**
9960 * Returns true whether the payload is null or undefined
9961 *
9962 * @param {*} payload
9963 * @returns {(payload is null | undefined)}
9964 */
9965
9966
9967function isNullOrUndefined(payload) {
9968  return isNull(payload) || isUndefined(payload);
9969}
9970/**
9971 * Does a generic check to check that the given payload is of a given type.
9972 * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);
9973 * It will, however, differentiate between object and null
9974 *
9975 * @template T
9976 * @param {*} payload
9977 * @param {T} type
9978 * @throws {TypeError} Will throw type error if type is an invalid type
9979 * @returns {payload is T}
9980 */
9981
9982
9983function isType(payload, type) {
9984  if (!(type instanceof Function)) {
9985    throw new TypeError('Type must be a function');
9986  }
9987
9988  if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {
9989    throw new TypeError('Type is not a class');
9990  } // Classes usually have names (as functions usually have names)
9991
9992
9993  var name = type.name;
9994  return getType(payload) === name || Boolean(payload && payload.constructor === type);
9995}
9996
9997
9998
9999/***/ }),
10000
vendor: 386 bytes, lines 10001-10015
10001/***/ "./node_modules/isarray/index.js":
10002/*!***************************************!*\
10003  !*** ./node_modules/isarray/index.js ***!
10004  \***************************************/
10005/*! no static exports found */
10006/***/ (function(module, exports) {
10007
10008var toString = {}.toString;
10009
10010module.exports = Array.isArray || function (arr) {
10011  return toString.call(arr) == '[object Array]';
10012};
10013
10014/***/ }),
10015
vendor: 34,092 bytes, lines 10016-11283
10016/***/ "./node_modules/marked/lib/marked.js":
10017/*!*******************************************!*\
10018  !*** ./node_modules/marked/lib/marked.js ***!
10019  \*******************************************/
10020/*! no static exports found */
10021/***/ (function(module, exports, __webpack_require__) {
10022
10023/* WEBPACK VAR INJECTION */(function(global) {/**
10024 * marked - a markdown parser
10025 * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
10026 * https://github.com/markedjs/marked
10027 */
10028;
10029
10030(function (root) {
10031  'use strict';
10032  /**
10033   * Block-Level Grammar
10034   */
10035
10036  var block = {
10037    newline: /^\n+/,
10038    code: /^( {4}[^\n]+\n*)+/,
10039    fences: noop,
10040    hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
10041    heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
10042    nptable: noop,
10043    blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
10044    list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
10045    html: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,
10046    def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
10047    table: noop,
10048    lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
10049    paragraph: /^([^\n]+(?:\n?(?!hr|heading|lheading| {0,3}>|tag)[^\n]+)+)/,
10050    text: /^[^\n]+/
10051  };
10052  block._label = /(?:\\[\[\]]|[^\[\]])+/;
10053  block._title = /(?:"(?:\\"|[^"]|"[^"\n]*")*"|'\n?(?:[^'\n]+\n?)*'|\([^()]*\))/;
10054  block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();
10055  block.bullet = /(?:[*+-]|\d+\.)/;
10056  block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
10057  block.item = edit(block.item, 'gm').replace(/bull/g, block.bullet).getRegex();
10058  block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))').replace('def', '\\n+(?=' + block.def.source + ')').getRegex();
10059  block._tag = '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code' + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo' + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b';
10060  block.html = edit(block.html).replace('comment', /<!--[\s\S]*?-->/).replace('closed', /<(tag)[\s\S]+?<\/\1>/).replace('closing', /<tag(?:"[^"]*"|'[^']*'|\s[^'"\/>\s]*)*?\/?>/).replace(/tag/g, block._tag).getRegex();
10061  block.paragraph = edit(block.paragraph).replace('hr', block.hr).replace('heading', block.heading).replace('lheading', block.lheading).replace('tag', '<' + block._tag).getRegex();
10062  block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();
10063  /**
10064   * Normal Block Grammar
10065   */
10066
10067  block.normal = merge({}, block);
10068  /**
10069   * GFM Block Grammar
10070   */
10071
10072  block.gfm = merge({}, block.normal, {
10073    fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,
10074    paragraph: /^/,
10075    heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
10076  });
10077  block.gfm.paragraph = edit(block.paragraph).replace('(?!', '(?!' + block.gfm.fences.source.replace('\\1', '\\2') + '|' + block.list.source.replace('\\1', '\\3') + '|').getRegex();
10078  /**
10079   * GFM + Tables Block Grammar
10080   */
10081
10082  block.tables = merge({}, block.gfm, {
10083    nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
10084    table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
10085  });
10086  /**
10087   * Block Lexer
10088   */
10089
10090  function Lexer(options) {
10091    this.tokens = [];
10092    this.tokens.links = {};
10093    this.options = options || marked.defaults;
10094    this.rules = block.normal;
10095
10096    if (this.options.gfm) {
10097      if (this.options.tables) {
10098        this.rules = block.tables;
10099      } else {
10100        this.rules = block.gfm;
10101      }
10102    }
10103  }
10104  /**
10105   * Expose Block Rules
10106   */
10107
10108
10109  Lexer.rules = block;
10110  /**
10111   * Static Lex Method
10112   */
10113
10114  Lexer.lex = function (src, options) {
10115    var lexer = new Lexer(options);
10116    return lexer.lex(src);
10117  };
10118  /**
10119   * Preprocessing
10120   */
10121
10122
10123  Lexer.prototype.lex = function (src) {
10124    src = src.replace(/\r\n|\r/g, '\n').replace(/\t/g, '    ').replace(/\u00a0/g, ' ').replace(/\u2424/g, '\n');
10125    return this.token(src, true);
10126  };
10127  /**
10128   * Lexing
10129   */
10130
10131
10132  Lexer.prototype.token = function (src, top) {
10133    src = src.replace(/^ +$/gm, '');
10134    var next, loose, cap, bull, b, item, space, i, tag, l, isordered;
10135
10136    while (src) {
10137      // newline
10138      if (cap = this.rules.newline.exec(src)) {
10139        src = src.substring(cap[0].length);
10140
10141        if (cap[0].length > 1) {
10142          this.tokens.push({
10143            type: 'space'
10144          });
10145        }
10146      } // code
10147
10148
10149      if (cap = this.rules.code.exec(src)) {
10150        src = src.substring(cap[0].length);
10151        cap = cap[0].replace(/^ {4}/gm, '');
10152        this.tokens.push({
10153          type: 'code',
10154          text: !this.options.pedantic ? cap.replace(/\n+$/, '') : cap
10155        });
10156        continue;
10157      } // fences (gfm)
10158
10159
10160      if (cap = this.rules.fences.exec(src)) {
10161        src = src.substring(cap[0].length);
10162        this.tokens.push({
10163          type: 'code',
10164          lang: cap[2],
10165          text: cap[3] || ''
10166        });
10167        continue;
10168      } // heading
10169
10170
10171      if (cap = this.rules.heading.exec(src)) {
10172        src = src.substring(cap[0].length);
10173        this.tokens.push({
10174          type: 'heading',
10175          depth: cap[1].length,
10176          text: cap[2]
10177        });
10178        continue;
10179      } // table no leading pipe (gfm)
10180
10181
10182      if (top && (cap = this.rules.nptable.exec(src))) {
10183        src = src.substring(cap[0].length);
10184        item = {
10185          type: 'table',
10186          header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
10187          align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
10188          cells: cap[3].replace(/\n$/, '').split('\n')
10189        };
10190
10191        for (i = 0; i < item.align.length; i++) {
10192          if (/^ *-+: *$/.test(item.align[i])) {
10193            item.align[i] = 'right';
10194          } else if (/^ *:-+: *$/.test(item.align[i])) {
10195            item.align[i] = 'center';
10196          } else if (/^ *:-+ *$/.test(item.align[i])) {
10197            item.align[i] = 'left';
10198          } else {
10199            item.align[i] = null;
10200          }
10201        }
10202
10203        for (i = 0; i < item.cells.length; i++) {
10204          item.cells[i] = item.cells[i].split(/ *\| */);
10205        }
10206
10207        this.tokens.push(item);
10208        continue;
10209      } // hr
10210
10211
10212      if (cap = this.rules.hr.exec(src)) {
10213        src = src.substring(cap[0].length);
10214        this.tokens.push({
10215          type: 'hr'
10216        });
10217        continue;
10218      } // blockquote
10219
10220
10221      if (cap = this.rules.blockquote.exec(src)) {
10222        src = src.substring(cap[0].length);
10223        this.tokens.push({
10224          type: 'blockquote_start'
10225        });
10226        cap = cap[0].replace(/^ *> ?/gm, ''); // Pass `top` to keep the current
10227        // "toplevel" state. This is exactly
10228        // how markdown.pl works.
10229
10230        this.token(cap, top);
10231        this.tokens.push({
10232          type: 'blockquote_end'
10233        });
10234        continue;
10235      } // list
10236
10237
10238      if (cap = this.rules.list.exec(src)) {
10239        src = src.substring(cap[0].length);
10240        bull = cap[2];
10241        isordered = bull.length > 1;
10242        this.tokens.push({
10243          type: 'list_start',
10244          ordered: isordered,
10245          start: isordered ? +bull : ''
10246        }); // Get each top-level item.
10247
10248        cap = cap[0].match(this.rules.item);
10249        next = false;
10250        l = cap.length;
10251        i = 0;
10252
10253        for (; i < l; i++) {
10254          item = cap[i]; // Remove the list item's bullet
10255          // so it is seen as the next token.
10256
10257          space = item.length;
10258          item = item.replace(/^ *([*+-]|\d+\.) +/, ''); // Outdent whatever the
10259          // list item contains. Hacky.
10260
10261          if (~item.indexOf('\n ')) {
10262            space -= item.length;
10263            item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');
10264          } // Determine whether the next list item belongs here.
10265          // Backpedal if it does not belong in this list.
10266
10267
10268          if (this.options.smartLists && i !== l - 1) {
10269            b = block.bullet.exec(cap[i + 1])[0];
10270
10271            if (bull !== b && !(bull.length > 1 && b.length > 1)) {
10272              src = cap.slice(i + 1).join('\n') + src;
10273              i = l - 1;
10274            }
10275          } // Determine whether item is loose or not.
10276          // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
10277          // for discount behavior.
10278
10279
10280          loose = next || /\n\n(?!\s*$)/.test(item);
10281
10282          if (i !== l - 1) {
10283            next = item.charAt(item.length - 1) === '\n';
10284            if (!loose) loose = next;
10285          }
10286
10287          this.tokens.push({
10288            type: loose ? 'loose_item_start' : 'list_item_start'
10289          }); // Recurse.
10290
10291          this.token(item, false);
10292          this.tokens.push({
10293            type: 'list_item_end'
10294          });
10295        }
10296
10297        this.tokens.push({
10298          type: 'list_end'
10299        });
10300        continue;
10301      } // html
10302
10303
10304      if (cap = this.rules.html.exec(src)) {
10305        src = src.substring(cap[0].length);
10306        this.tokens.push({
10307          type: this.options.sanitize ? 'paragraph' : 'html',
10308          pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
10309          text: cap[0]
10310        });
10311        continue;
10312      } // def
10313
10314
10315      if (top && (cap = this.rules.def.exec(src))) {
10316        src = src.substring(cap[0].length);
10317        if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
10318        tag = cap[1].toLowerCase();
10319
10320        if (!this.tokens.links[tag]) {
10321          this.tokens.links[tag] = {
10322            href: cap[2],
10323            title: cap[3]
10324          };
10325        }
10326
10327        continue;
10328      } // table (gfm)
10329
10330
10331      if (top && (cap = this.rules.table.exec(src))) {
10332        src = src.substring(cap[0].length);
10333        item = {
10334          type: 'table',
10335          header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
10336          align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
10337          cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
10338        };
10339
10340        for (i = 0; i < item.align.length; i++) {
10341          if (/^ *-+: *$/.test(item.align[i])) {
10342            item.align[i] = 'right';
10343          } else if (/^ *:-+: *$/.test(item.align[i])) {
10344            item.align[i] = 'center';
10345          } else if (/^ *:-+ *$/.test(item.align[i])) {
10346            item.align[i] = 'left';
10347          } else {
10348            item.align[i] = null;
10349          }
10350        }
10351
10352        for (i = 0; i < item.cells.length; i++) {
10353          item.cells[i] = item.cells[i].replace(/^ *\| *| *\| *$/g, '').split(/ *\| */);
10354        }
10355
10356        this.tokens.push(item);
10357        continue;
10358      } // lheading
10359
10360
10361      if (cap = this.rules.lheading.exec(src)) {
10362        src = src.substring(cap[0].length);
10363        this.tokens.push({
10364          type: 'heading',
10365          depth: cap[2] === '=' ? 1 : 2,
10366          text: cap[1]
10367        });
10368        continue;
10369      } // top-level paragraph
10370
10371
10372      if (top && (cap = this.rules.paragraph.exec(src))) {
10373        src = src.substring(cap[0].length);
10374        this.tokens.push({
10375          type: 'paragraph',
10376          text: cap[1].charAt(cap[1].length - 1) === '\n' ? cap[1].slice(0, -1) : cap[1]
10377        });
10378        continue;
10379      } // text
10380
10381
10382      if (cap = this.rules.text.exec(src)) {
10383        // Top-level should never reach here.
10384        src = src.substring(cap[0].length);
10385        this.tokens.push({
10386          type: 'text',
10387          text: cap[0]
10388        });
10389        continue;
10390      }
10391
10392      if (src) {
10393        throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
10394      }
10395    }
10396
10397    return this.tokens;
10398  };
10399  /**
10400   * Inline-Level Grammar
10401   */
10402
10403
10404  var inline = {
10405    escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
10406    autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
10407    url: noop,
10408    tag: /^<!--[\s\S]*?-->|^<\/?[a-zA-Z0-9\-]+(?:"[^"]*"|'[^']*'|\s[^<'">\/\s]*)*?\/?>/,
10409    link: /^!?\[(inside)\]\(href\)/,
10410    reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
10411    nolink: /^!?\[((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\]/,
10412    strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
10413    em: /^_([^\s_](?:[^_]|__)+?[^\s_])_\b|^\*((?:\*\*|[^*])+?)\*(?!\*)/,
10414    code: /^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,
10415    br: /^ {2,}\n(?!\s*$)/,
10416    del: noop,
10417    text: /^[\s\S]+?(?=[\\<!\[`*]|\b_| {2,}\n|$)/
10418  };
10419  inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
10420  inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
10421  inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();
10422  inline._inside = /(?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]]|\](?=[^\[]*\]))*/;
10423  inline._href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
10424  inline.link = edit(inline.link).replace('inside', inline._inside).replace('href', inline._href).getRegex();
10425  inline.reflink = edit(inline.reflink).replace('inside', inline._inside).getRegex();
10426  /**
10427   * Normal Inline Grammar
10428   */
10429
10430  inline.normal = merge({}, inline);
10431  /**
10432   * Pedantic Inline Grammar
10433   */
10434
10435  inline.pedantic = merge({}, inline.normal, {
10436    strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
10437    em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
10438  });
10439  /**
10440   * GFM Inline Grammar
10441   */
10442
10443  inline.gfm = merge({}, inline.normal, {
10444    escape: edit(inline.escape).replace('])', '~|])').getRegex(),
10445    url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace('email', inline._email).getRegex(),
10446    _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
10447    del: /^~~(?=\S)([\s\S]*?\S)~~/,
10448    text: edit(inline.text).replace(']|', '~]|').replace('|', '|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&\'*+/=?^_`{\\|}~-]+@|').getRegex()
10449  });
10450  /**
10451   * GFM + Line Breaks Inline Grammar
10452   */
10453
10454  inline.breaks = merge({}, inline.gfm, {
10455    br: edit(inline.br).replace('{2,}', '*').getRegex(),
10456    text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()
10457  });
10458  /**
10459   * Inline Lexer & Compiler
10460   */
10461
10462  function InlineLexer(links, options) {
10463    this.options = options || marked.defaults;
10464    this.links = links;
10465    this.rules = inline.normal;
10466    this.renderer = this.options.renderer || new Renderer();
10467    this.renderer.options = this.options;
10468
10469    if (!this.links) {
10470      throw new Error('Tokens array requires a `links` property.');
10471    }
10472
10473    if (this.options.gfm) {
10474      if (this.options.breaks) {
10475        this.rules = inline.breaks;
10476      } else {
10477        this.rules = inline.gfm;
10478      }
10479    } else if (this.options.pedantic) {
10480      this.rules = inline.pedantic;
10481    }
10482  }
10483  /**
10484   * Expose Inline Rules
10485   */
10486
10487
10488  InlineLexer.rules = inline;
10489  /**
10490   * Static Lexing/Compiling Method
10491   */
10492
10493  InlineLexer.output = function (src, links, options) {
10494    var inline = new InlineLexer(links, options);
10495    return inline.output(src);
10496  };
10497  /**
10498   * Lexing/Compiling
10499   */
10500
10501
10502  InlineLexer.prototype.output = function (src) {
10503    var out = '',
10504        link,
10505        text,
10506        href,
10507        cap;
10508
10509    while (src) {
10510      // escape
10511      if (cap = this.rules.escape.exec(src)) {
10512        src = src.substring(cap[0].length);
10513        out += cap[1];
10514        continue;
10515      } // autolink
10516
10517
10518      if (cap = this.rules.autolink.exec(src)) {
10519        src = src.substring(cap[0].length);
10520
10521        if (cap[2] === '@') {
10522          text = escape(this.mangle(cap[1]));
10523          href = 'mailto:' + text;
10524        } else {
10525          text = escape(cap[1]);
10526          href = text;
10527        }
10528
10529        out += this.renderer.link(href, null, text);
10530        continue;
10531      } // url (gfm)
10532
10533
10534      if (!this.inLink && (cap = this.rules.url.exec(src))) {
10535        cap[0] = this.rules._backpedal.exec(cap[0])[0];
10536        src = src.substring(cap[0].length);
10537
10538        if (cap[2] === '@') {
10539          text = escape(cap[0]);
10540          href = 'mailto:' + text;
10541        } else {
10542          text = escape(cap[0]);
10543
10544          if (cap[1] === 'www.') {
10545            href = 'http://' + text;
10546          } else {
10547            href = text;
10548          }
10549        }
10550
10551        out += this.renderer.link(href, null, text);
10552        continue;
10553      } // tag
10554
10555
10556      if (cap = this.rules.tag.exec(src)) {
10557        if (!this.inLink && /^<a /i.test(cap[0])) {
10558          this.inLink = true;
10559        } else if (this.inLink && /^<\/a>/i.test(cap[0])) {
10560          this.inLink = false;
10561        }
10562
10563        src = src.substring(cap[0].length);
10564        out += this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];
10565        continue;
10566      } // link
10567
10568
10569      if (cap = this.rules.link.exec(src)) {
10570        src = src.substring(cap[0].length);
10571        this.inLink = true;
10572        out += this.outputLink(cap, {
10573          href: cap[2],
10574          title: cap[3]
10575        });
10576        this.inLink = false;
10577        continue;
10578      } // reflink, nolink
10579
10580
10581      if ((cap = this.rules.reflink.exec(src)) || (cap = this.rules.nolink.exec(src))) {
10582        src = src.substring(cap[0].length);
10583        link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
10584        link = this.links[link.toLowerCase()];
10585
10586        if (!link || !link.href) {
10587          out += cap[0].charAt(0);
10588          src = cap[0].substring(1) + src;
10589          continue;
10590        }
10591
10592        this.inLink = true;
10593        out += this.outputLink(cap, link);
10594        this.inLink = false;
10595        continue;
10596      } // strong
10597
10598
10599      if (cap = this.rules.strong.exec(src)) {
10600        src = src.substring(cap[0].length);
10601        out += this.renderer.strong(this.output(cap[2] || cap[1]));
10602        continue;
10603      } // em
10604
10605
10606      if (cap = this.rules.em.exec(src)) {
10607        src = src.substring(cap[0].length);
10608        out += this.renderer.em(this.output(cap[2] || cap[1]));
10609        continue;
10610      } // code
10611
10612
10613      if (cap = this.rules.code.exec(src)) {
10614        src = src.substring(cap[0].length);
10615        out += this.renderer.codespan(escape(cap[2].trim(), true));
10616        continue;
10617      } // br
10618
10619
10620      if (cap = this.rules.br.exec(src)) {
10621        src = src.substring(cap[0].length);
10622        out += this.renderer.br();
10623        continue;
10624      } // del (gfm)
10625
10626
10627      if (cap = this.rules.del.exec(src)) {
10628        src = src.substring(cap[0].length);
10629        out += this.renderer.del(this.output(cap[1]));
10630        continue;
10631      } // text
10632
10633
10634      if (cap = this.rules.text.exec(src)) {
10635        src = src.substring(cap[0].length);
10636        out += this.renderer.text(escape(this.smartypants(cap[0])));
10637        continue;
10638      }
10639
10640      if (src) {
10641        throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
10642      }
10643    }
10644
10645    return out;
10646  };
10647  /**
10648   * Compile Link
10649   */
10650
10651
10652  InlineLexer.prototype.outputLink = function (cap, link) {
10653    var href = escape(link.href),
10654        title = link.title ? escape(link.title) : null;
10655    return cap[0].charAt(0) !== '!' ? this.renderer.link(href, title, this.output(cap[1])) : this.renderer.image(href, title, escape(cap[1]));
10656  };
10657  /**
10658   * Smartypants Transformations
10659   */
10660
10661
10662  InlineLexer.prototype.smartypants = function (text) {
10663    if (!this.options.smartypants) return text;
10664    return text // em-dashes
10665    .replace(/---/g, '\u2014') // en-dashes
10666    .replace(/--/g, '\u2013') // opening singles
10667    .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018') // closing singles & apostrophes
10668    .replace(/'/g, '\u2019') // opening doubles
10669    .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c') // closing doubles
10670    .replace(/"/g, '\u201d') // ellipses
10671    .replace(/\.{3}/g, '\u2026');
10672  };
10673  /**
10674   * Mangle Links
10675   */
10676
10677
10678  InlineLexer.prototype.mangle = function (text) {
10679    if (!this.options.mangle) return text;
10680    var out = '',
10681        l = text.length,
10682        i = 0,
10683        ch;
10684
10685    for (; i < l; i++) {
10686      ch = text.charCodeAt(i);
10687
10688      if (Math.random() > 0.5) {
10689        ch = 'x' + ch.toString(16);
10690      }
10691
10692      out += '&#' + ch + ';';
10693    }
10694
10695    return out;
10696  };
10697  /**
10698   * Renderer
10699   */
10700
10701
10702  function Renderer(options) {
10703    this.options = options || {};
10704  }
10705
10706  Renderer.prototype.code = function (code, lang, escaped) {
10707    if (this.options.highlight) {
10708      var out = this.options.highlight(code, lang);
10709
10710      if (out != null && out !== code) {
10711        escaped = true;
10712        code = out;
10713      }
10714    }
10715
10716    if (!lang) {
10717      return '<pre><code>' + (escaped ? code : escape(code, true)) + '\n</code></pre>';
10718    }
10719
10720    return '<pre><code class="' + this.options.langPrefix + escape(lang, true) + '">' + (escaped ? code : escape(code, true)) + '\n</code></pre>\n';
10721  };
10722
10723  Renderer.prototype.blockquote = function (quote) {
10724    return '<blockquote>\n' + quote + '</blockquote>\n';
10725  };
10726
10727  Renderer.prototype.html = function (html) {
10728    return html;
10729  };
10730
10731  Renderer.prototype.heading = function (text, level, raw) {
10732    return '<h' + level + ' id="' + this.options.headerPrefix + raw.toLowerCase().replace(/[^\w]+/g, '-') + '">' + text + '</h' + level + '>\n';
10733  };
10734
10735  Renderer.prototype.hr = function () {
10736    return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
10737  };
10738
10739  Renderer.prototype.list = function (body, ordered, start) {
10740    var type = ordered ? 'ol' : 'ul',
10741        startatt = ordered && start !== 1 ? ' start="' + start + '"' : '';
10742    return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
10743  };
10744
10745  Renderer.prototype.listitem = function (text) {
10746    return '<li>' + text + '</li>\n';
10747  };
10748
10749  Renderer.prototype.paragraph = function (text) {
10750    return '<p>' + text + '</p>\n';
10751  };
10752
10753  Renderer.prototype.table = function (header, body) {
10754    return '<table>\n' + '<thead>\n' + header + '</thead>\n' + '<tbody>\n' + body + '</tbody>\n' + '</table>\n';
10755  };
10756
10757  Renderer.prototype.tablerow = function (content) {
10758    return '<tr>\n' + content + '</tr>\n';
10759  };
10760
10761  Renderer.prototype.tablecell = function (content, flags) {
10762    var type = flags.header ? 'th' : 'td';
10763    var tag = flags.align ? '<' + type + ' style="text-align:' + flags.align + '">' : '<' + type + '>';
10764    return tag + content + '</' + type + '>\n';
10765  }; // span level renderer
10766
10767
10768  Renderer.prototype.strong = function (text) {
10769    return '<strong>' + text + '</strong>';
10770  };
10771
10772  Renderer.prototype.em = function (text) {
10773    return '<em>' + text + '</em>';
10774  };
10775
10776  Renderer.prototype.codespan = function (text) {
10777    return '<code>' + text + '</code>';
10778  };
10779
10780  Renderer.prototype.br = function () {
10781    return this.options.xhtml ? '<br/>' : '<br>';
10782  };
10783
10784  Renderer.prototype.del = function (text) {
10785    return '<del>' + text + '</del>';
10786  };
10787
10788  Renderer.prototype.link = function (href, title, text) {
10789    if (this.options.sanitize) {
10790      try {
10791        var prot = decodeURIComponent(unescape(href)).replace(/[^\w:]/g, '').toLowerCase();
10792      } catch (e) {
10793        return text;
10794      }
10795
10796      if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
10797        return text;
10798      }
10799    }
10800
10801    if (this.options.baseUrl && !originIndependentUrl.test(href)) {
10802      href = resolveUrl(this.options.baseUrl, href);
10803    }
10804
10805    var out = '<a href="' + href + '"';
10806
10807    if (title) {
10808      out += ' title="' + title + '"';
10809    }
10810
10811    out += '>' + text + '</a>';
10812    return out;
10813  };
10814
10815  Renderer.prototype.image = function (href, title, text) {
10816    if (this.options.baseUrl && !originIndependentUrl.test(href)) {
10817      href = resolveUrl(this.options.baseUrl, href);
10818    }
10819
10820    var out = '<img src="' + href + '" alt="' + text + '"';
10821
10822    if (title) {
10823      out += ' title="' + title + '"';
10824    }
10825
10826    out += this.options.xhtml ? '/>' : '>';
10827    return out;
10828  };
10829
10830  Renderer.prototype.text = function (text) {
10831    return text;
10832  };
10833  /**
10834   * TextRenderer
10835   * returns only the textual part of the token
10836   */
10837
10838
10839  function TextRenderer() {} // no need for block level renderers
10840
10841
10842  TextRenderer.prototype.strong = TextRenderer.prototype.em = TextRenderer.prototype.codespan = TextRenderer.prototype.del = TextRenderer.prototype.text = function (text) {
10843    return text;
10844  };
10845
10846  TextRenderer.prototype.link = TextRenderer.prototype.image = function (href, title, text) {
10847    return '' + text;
10848  };
10849
10850  TextRenderer.prototype.br = function () {
10851    return '';
10852  };
10853  /**
10854   * Parsing & Compiling
10855   */
10856
10857
10858  function Parser(options) {
10859    this.tokens = [];
10860    this.token = null;
10861    this.options = options || marked.defaults;
10862    this.options.renderer = this.options.renderer || new Renderer();
10863    this.renderer = this.options.renderer;
10864    this.renderer.options = this.options;
10865  }
10866  /**
10867   * Static Parse Method
10868   */
10869
10870
10871  Parser.parse = function (src, options) {
10872    var parser = new Parser(options);
10873    return parser.parse(src);
10874  };
10875  /**
10876   * Parse Loop
10877   */
10878
10879
10880  Parser.prototype.parse = function (src) {
10881    this.inline = new InlineLexer(src.links, this.options); // use an InlineLexer with a TextRenderer to extract pure text
10882
10883    this.inlineText = new InlineLexer(src.links, merge({}, this.options, {
10884      renderer: new TextRenderer()
10885    }));
10886    this.tokens = src.reverse();
10887    var out = '';
10888
10889    while (this.next()) {
10890      out += this.tok();
10891    }
10892
10893    return out;
10894  };
10895  /**
10896   * Next Token
10897   */
10898
10899
10900  Parser.prototype.next = function () {
10901    return this.token = this.tokens.pop();
10902  };
10903  /**
10904   * Preview Next Token
10905   */
10906
10907
10908  Parser.prototype.peek = function () {
10909    return this.tokens[this.tokens.length - 1] || 0;
10910  };
10911  /**
10912   * Parse Text Tokens
10913   */
10914
10915
10916  Parser.prototype.parseText = function () {
10917    var body = this.token.text;
10918
10919    while (this.peek().type === 'text') {
10920      body += '\n' + this.next().text;
10921    }
10922
10923    return this.inline.output(body);
10924  };
10925  /**
10926   * Parse Current Token
10927   */
10928
10929
10930  Parser.prototype.tok = function () {
10931    switch (this.token.type) {
10932      case 'space':
10933        {
10934          return '';
10935        }
10936
10937      case 'hr':
10938        {
10939          return this.renderer.hr();
10940        }
10941
10942      case 'heading':
10943        {
10944          return this.renderer.heading(this.inline.output(this.token.text), this.token.depth, unescape(this.inlineText.output(this.token.text)));
10945        }
10946
10947      case 'code':
10948        {
10949          return this.renderer.code(this.token.text, this.token.lang, this.token.escaped);
10950        }
10951
10952      case 'table':
10953        {
10954          var header = '',
10955              body = '',
10956              i,
10957              row,
10958              cell,
10959              j; // header
10960
10961          cell = '';
10962
10963          for (i = 0; i < this.token.header.length; i++) {
10964            cell += this.renderer.tablecell(this.inline.output(this.token.header[i]), {
10965              header: true,
10966              align: this.token.align[i]
10967            });
10968          }
10969
10970          header += this.renderer.tablerow(cell);
10971
10972          for (i = 0; i < this.token.cells.length; i++) {
10973            row = this.token.cells[i];
10974            cell = '';
10975
10976            for (j = 0; j < row.length; j++) {
10977              cell += this.renderer.tablecell(this.inline.output(row[j]), {
10978                header: false,
10979                align: this.token.align[j]
10980              });
10981            }
10982
10983            body += this.renderer.tablerow(cell);
10984          }
10985
10986          return this.renderer.table(header, body);
10987        }
10988
10989      case 'blockquote_start':
10990        {
10991          body = '';
10992
10993          while (this.next().type !== 'blockquote_end') {
10994            body += this.tok();
10995          }
10996
10997          return this.renderer.blockquote(body);
10998        }
10999
11000      case 'list_start':
11001        {
11002          body = '';
11003          var ordered = this.token.ordered,
11004              start = this.token.start;
11005
11006          while (this.next().type !== 'list_end') {
11007            body += this.tok();
11008          }
11009
11010          return this.renderer.list(body, ordered, start);
11011        }
11012
11013      case 'list_item_start':
11014        {
11015          body = '';
11016
11017          while (this.next().type !== 'list_item_end') {
11018            body += this.token.type === 'text' ? this.parseText() : this.tok();
11019          }
11020
11021          return this.renderer.listitem(body);
11022        }
11023
11024      case 'loose_item_start':
11025        {
11026          body = '';
11027
11028          while (this.next().type !== 'list_item_end') {
11029            body += this.tok();
11030          }
11031
11032          return this.renderer.listitem(body);
11033        }
11034
11035      case 'html':
11036        {
11037          var html = !this.token.pre && !this.options.pedantic ? this.inline.output(this.token.text) : this.token.text;
11038          return this.renderer.html(html);
11039        }
11040
11041      case 'paragraph':
11042        {
11043          return this.renderer.paragraph(this.inline.output(this.token.text));
11044        }
11045
11046      case 'text':
11047        {
11048          return this.renderer.paragraph(this.parseText());
11049        }
11050    }
11051  };
11052  /**
11053   * Helpers
11054   */
11055
11056
11057  function escape(html, encode) {
11058    return html.replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
11059  }
11060
11061  function unescape(html) {
11062    // explicitly match decimal, hex, and named HTML entities
11063    return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function (_, n) {
11064      n = n.toLowerCase();
11065      if (n === 'colon') return ':';
11066
11067      if (n.charAt(0) === '#') {
11068        return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));
11069      }
11070
11071      return '';
11072    });
11073  }
11074
11075  function edit(regex, opt) {
11076    regex = regex.source;
11077    opt = opt || '';
11078    return {
11079      replace: function (name, val) {
11080        val = val.source || val;
11081        val = val.replace(/(^|[^\[])\^/g, '$1');
11082        regex = regex.replace(name, val);
11083        return this;
11084      },
11085      getRegex: function () {
11086        return new RegExp(regex, opt);
11087      }
11088    };
11089  }
11090
11091  function resolveUrl(base, href) {
11092    if (!baseUrls[' ' + base]) {
11093      // we can ignore everything in base after the last slash of its path component,
11094      // but we might need to add _that_
11095      // https://tools.ietf.org/html/rfc3986#section-3
11096      if (/^[^:]+:\/*[^/]*$/.test(base)) {
11097        baseUrls[' ' + base] = base + '/';
11098      } else {
11099        baseUrls[' ' + base] = base.replace(/[^/]*$/, '');
11100      }
11101    }
11102
11103    base = baseUrls[' ' + base];
11104
11105    if (href.slice(0, 2) === '//') {
11106      return base.replace(/:[\s\S]*/, ':') + href;
11107    } else if (href.charAt(0) === '/') {
11108      return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href;
11109    } else {
11110      return base + href;
11111    }
11112  }
11113
11114  var baseUrls = {};
11115  var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
11116
11117  function noop() {}
11118
11119  noop.exec = noop;
11120
11121  function merge(obj) {
11122    var i = 1,
11123        target,
11124        key;
11125
11126    for (; i < arguments.length; i++) {
11127      target = arguments[i];
11128
11129      for (key in target) {
11130        if (Object.prototype.hasOwnProperty.call(target, key)) {
11131          obj[key] = target[key];
11132        }
11133      }
11134    }
11135
11136    return obj;
11137  }
11138  /**
11139   * Marked
11140   */
11141
11142
11143  function marked(src, opt, callback) {
11144    // throw error in case of non string input
11145    if (typeof src === 'undefined' || src === null) {
11146      throw new Error('marked(): input parameter is undefined or null');
11147    }
11148
11149    if (typeof src !== 'string') {
11150      throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
11151    }
11152
11153    if (callback || typeof opt === 'function') {
11154      if (!callback) {
11155        callback = opt;
11156        opt = null;
11157      }
11158
11159      opt = merge({}, marked.defaults, opt || {});
11160      var highlight = opt.highlight,
11161          tokens,
11162          pending,
11163          i = 0;
11164
11165      try {
11166        tokens = Lexer.lex(src, opt);
11167      } catch (e) {
11168        return callback(e);
11169      }
11170
11171      pending = tokens.length;
11172
11173      var done = function (err) {
11174        if (err) {
11175          opt.highlight = highlight;
11176          return callback(err);
11177        }
11178
11179        var out;
11180
11181        try {
11182          out = Parser.parse(tokens, opt);
11183        } catch (e) {
11184          err = e;
11185        }
11186
11187        opt.highlight = highlight;
11188        return err ? callback(err) : callback(null, out);
11189      };
11190
11191      if (!highlight || highlight.length < 3) {
11192        return done();
11193      }
11194
11195      delete opt.highlight;
11196      if (!pending) return done();
11197
11198      for (; i < tokens.length; i++) {
11199        (function (token) {
11200          if (token.type !== 'code') {
11201            return --pending || done();
11202          }
11203
11204          return highlight(token.text, token.lang, function (err, code) {
11205            if (err) return done(err);
11206
11207            if (code == null || code === token.text) {
11208              return --pending || done();
11209            }
11210
11211            token.text = code;
11212            token.escaped = true;
11213            --pending || done();
11214          });
11215        })(tokens[i]);
11216      }
11217
11218      return;
11219    }
11220
11221    try {
11222      if (opt) opt = merge({}, marked.defaults, opt);
11223      return Parser.parse(Lexer.lex(src, opt), opt);
11224    } catch (e) {
11225      e.message += '\nPlease report this to https://github.com/markedjs/marked.';
11226
11227      if ((opt || marked.defaults).silent) {
11228        return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
11229      }
11230
11231      throw e;
11232    }
11233  }
11234  /**
11235   * Options
11236   */
11237
11238
11239  marked.options = marked.setOptions = function (opt) {
11240    merge(marked.defaults, opt);
11241    return marked;
11242  };
11243
11244  marked.defaults = {
11245    gfm: true,
11246    tables: true,
11247    breaks: false,
11248    pedantic: false,
11249    sanitize: false,
11250    sanitizer: null,
11251    mangle: true,
11252    smartLists: false,
11253    silent: false,
11254    highlight: null,
11255    langPrefix: 'lang-',
11256    smartypants: false,
11257    headerPrefix: '',
11258    renderer: new Renderer(),
11259    xhtml: false,
11260    baseUrl: null
11261  };
11262  /**
11263   * Expose
11264   */
11265
11266  marked.Parser = Parser;
11267  marked.parser = Parser.parse;
11268  marked.Renderer = Renderer;
11269  marked.TextRenderer = TextRenderer;
11270  marked.Lexer = Lexer;
11271  marked.lexer = Lexer.lex;
11272  marked.InlineLexer = InlineLexer;
11273  marked.inlineLexer = InlineLexer.output;
11274  marked.parse = marked;
11275
11276  if (true) {
11277    module.exports = marked;
11278  } else {}
11279})(this || (typeof window !== 'undefined' ? window : global));
11280/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
11281
11282/***/ }),
11283
vendor: 7,438 bytes, lines 11284-11527
11284/***/ "./node_modules/marksy/lib/createRenderer.js":
11285/*!***************************************************!*\
11286  !*** ./node_modules/marksy/lib/createRenderer.js ***!
11287  \***************************************************/
11288/*! no static exports found */
11289/***/ (function(module, exports, __webpack_require__) {
11290
11291"use strict";
11292
11293
11294Object.defineProperty(exports, "__esModule", {
11295  value: true
11296});
11297exports.codeRenderer = codeRenderer;
11298exports["default"] = createRenderer;
11299
11300var _marked = _interopRequireDefault(__webpack_require__(/*! marked */ "./node_modules/marked/lib/marked.js"));
11301
11302var _he = _interopRequireDefault(__webpack_require__(/*! he */ "./node_modules/he/he.js"));
11303
11304function _interopRequireDefault(obj) {
11305  return obj && obj.__esModule ? obj : {
11306    "default": obj
11307  };
11308}
11309
11310function codeRenderer(tracker, options) {
11311  function CodeComponent(props) {
11312    var children;
11313
11314    try {
11315      // eslint-disable-next-line react/no-danger-with-children
11316      children = options.createElement('code', {
11317        className: "language-".concat(props.language),
11318        dangerouslySetInnerHTML: options.highlight ? {
11319          __html: options.highlight(props.language, props.code)
11320        } : null
11321      }, options.highlight ? null : props.code);
11322    } catch (e) {
11323      // eslint-disable-next-line
11324      console.warn("".concat(props.language, " is not supported by your defined highlighter."));
11325      children = options.createElement('code', null, props.code);
11326    }
11327
11328    return options.createElement('pre', null, children);
11329  }
11330
11331  return function (code, language) {
11332    // eslint-disable-next-line no-plusplus, no-param-reassign
11333    var elementId = tracker.nextElementId++; // eslint-disable-next-line no-param-reassign
11334
11335    tracker.elements[elementId] = options.createElement(options.elements && options.elements.code || CodeComponent, {
11336      key: elementId,
11337      code: code,
11338      language: language
11339    });
11340    tracker.tree.push(tracker.elements[elementId]);
11341    return "{{".concat(elementId, "}}");
11342  };
11343}
11344
11345function createRenderer(tracker, options) {
11346  var overrides = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
11347  var renderer = new _marked["default"].Renderer();
11348
11349  function getTocPosition(toc, level) {
11350    var currentLevel = toc.children; // eslint-disable-next-line no-constant-condition
11351
11352    while (true) {
11353      if (!currentLevel.length || currentLevel[currentLevel.length - 1].level === level) {
11354        return currentLevel;
11355      }
11356
11357      currentLevel = currentLevel[currentLevel.length - 1].children;
11358    }
11359  }
11360
11361  function populateInlineContent() {
11362    var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
11363    var contentArray = content.split(/(\{\{.*?\}\})/);
11364    var extractedElements = contentArray.map(function (text) {
11365      var elementIdMatch = text.match(/\{\{(.*)\}\}/);
11366
11367      if (elementIdMatch) {
11368        tracker.tree.splice(tracker.tree.indexOf(tracker.elements[elementIdMatch[1]]), 1);
11369        return tracker.elements[elementIdMatch[1]];
11370      }
11371
11372      if (text !== '') {
11373        return _he["default"].decode(text);
11374      }
11375
11376      return null;
11377    });
11378    return extractedElements;
11379  }
11380
11381  function addElement(tag) {
11382    var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11383    var children = arguments.length > 2 ? arguments[2] : undefined;
11384    var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : tag; // eslint-disable-next-line no-plusplus, no-param-reassign
11385
11386    var elementId = tracker.nextElementId++;
11387    var inlineContent = null;
11388    var elementType = options.elements && options.elements[type];
11389
11390    if (children) {
11391      inlineContent = Array.isArray(children) ? children.map(populateInlineContent) : populateInlineContent(children);
11392    } // eslint-disable-next-line no-param-reassign
11393
11394
11395    tracker.elements[elementId] = options.createElement(elementType || tag, Object.assign({
11396      key: elementId
11397    }, props, elementType ? {
11398      context: tracker.context
11399    } : {}), inlineContent);
11400    tracker.tree.push(tracker.elements[elementId]);
11401    return "{{".concat(elementId, "}}");
11402  }
11403
11404  renderer.code = overrides.code || codeRenderer(tracker, options);
11405
11406  renderer.html = overrides.html || function (html) {
11407    // eslint-disable-next-line no-plusplus, no-param-reassign
11408    var elementId = tracker.nextElementId++;
11409    tracker.tree.push(options.createElement('div', {
11410      key: elementId,
11411      dangerouslySetInnerHTML: {
11412        __html: html
11413      }
11414    }));
11415  };
11416
11417  renderer.paragraph = overrides.paragraph || function (text) {
11418    return addElement('p', null, text);
11419  };
11420
11421  renderer.blockquote = overrides.blockquote || function (text) {
11422    return addElement('blockquote', null, text);
11423  };
11424
11425  renderer.link = overrides.link || function (href, title, text) {
11426    return addElement('a', {
11427      href: href,
11428      title: title
11429    }, text);
11430  };
11431
11432  renderer.br = overrides.br || function () {
11433    return addElement('br');
11434  };
11435
11436  renderer.hr = overrides.hr || function () {
11437    return addElement('hr');
11438  };
11439
11440  renderer.strong = overrides.strong || function (text) {
11441    return addElement('strong', null, text);
11442  };
11443
11444  renderer.del = overrides.del || function (text) {
11445    return addElement('del', null, text);
11446  };
11447
11448  renderer.em = overrides.em || function (text) {
11449    return addElement('em', null, text);
11450  };
11451
11452  renderer.heading = overrides.heading || function (text, level) {
11453    // eslint-disable-next-line no-param-reassign
11454    tracker.currentId = tracker.currentId.slice(0, level - 1);
11455    tracker.currentId.push(text.replace(/\s/g, '-').toLowerCase());
11456    var id = tracker.currentId.join('-');
11457    var lastToc = tracker.toc[tracker.toc.length - 1];
11458
11459    if (!lastToc || lastToc.level > level) {
11460      tracker.toc.push({
11461        id: id,
11462        title: text,
11463        level: level,
11464        children: []
11465      });
11466    } else {
11467      var tocPosition = getTocPosition(lastToc, level);
11468      tocPosition.push({
11469        id: id,
11470        title: text,
11471        level: level,
11472        children: []
11473      });
11474    }
11475
11476    return addElement("h".concat(level), {
11477      id: id
11478    }, text);
11479  };
11480
11481  renderer.list = overrides.list || function (body, ordered) {
11482    return addElement(ordered ? 'ol' : 'ul', null, body);
11483  };
11484
11485  renderer.listitem = overrides.listitem || function (text) {
11486    return addElement('li', null, text);
11487  };
11488
11489  renderer.table = overrides.table || function (header, body) {
11490    return addElement('table', null, [addElement('thead', null, header), addElement('tbody', null, body)]);
11491  };
11492
11493  renderer.thead = overrides.thead || function (content) {
11494    return addElement('thead', null, content);
11495  };
11496
11497  renderer.tbody = overrides.tbody || function (content) {
11498    return addElement('tbody', null, content);
11499  };
11500
11501  renderer.tablerow = overrides.tablerow || function (content) {
11502    return addElement('tr', null, content);
11503  };
11504
11505  renderer.tablecell = overrides.tablecell || function (content, flag) {
11506    var tag = flag.header ? 'th' : 'td';
11507    return addElement(tag, {
11508      className: flag.align ? "text-".concat(flag.align) : undefined
11509    }, content);
11510  };
11511
11512  renderer.codespan = overrides.codespan || function (text) {
11513    return addElement('code', null, text, 'codespan');
11514  };
11515
11516  renderer.image = overrides.image || function (href, title, text) {
11517    return addElement('img', {
11518      src: href,
11519      alt: text
11520    });
11521  };
11522
11523  return renderer;
11524}
11525
11526/***/ }),
11527
vendor: 5,516 bytes, lines 11528-11713
11528/***/ "./node_modules/marksy/lib/index.js":
11529/*!******************************************!*\
11530  !*** ./node_modules/marksy/lib/index.js ***!
11531  \******************************************/
11532/*! no static exports found */
11533/***/ (function(module, exports, __webpack_require__) {
11534
11535"use strict";
11536
11537
11538Object.defineProperty(exports, "__esModule", {
11539  value: true
11540});
11541exports.marksy = marksy;
11542exports["default"] = _default;
11543
11544var _marked = _interopRequireDefault(__webpack_require__(/*! marked */ "./node_modules/marked/lib/marked.js"));
11545
11546var _createRenderer = _interopRequireWildcard(__webpack_require__(/*! ./createRenderer */ "./node_modules/marksy/lib/createRenderer.js"));
11547
11548function _interopRequireWildcard(obj) {
11549  if (obj && obj.__esModule) {
11550    return obj;
11551  } else {
11552    var newObj = {};
11553
11554    if (obj != null) {
11555      for (var key in obj) {
11556        if (Object.prototype.hasOwnProperty.call(obj, key)) {
11557          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
11558
11559          if (desc.get || desc.set) {
11560            Object.defineProperty(newObj, key, desc);
11561          } else {
11562            newObj[key] = obj[key];
11563          }
11564        }
11565      }
11566    }
11567
11568    newObj["default"] = obj;
11569    return newObj;
11570  }
11571}
11572
11573function _interopRequireDefault(obj) {
11574  return obj && obj.__esModule ? obj : {
11575    "default": obj
11576  };
11577}
11578
11579function isNativeReflectConstruct() {
11580  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
11581  if (Reflect.construct.sham) return false;
11582  if (typeof Proxy === "function") return true;
11583
11584  try {
11585    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
11586    return true;
11587  } catch (e) {
11588    return false;
11589  }
11590}
11591
11592function _construct(Parent, args, Class) {
11593  if (isNativeReflectConstruct()) {
11594    _construct = Reflect.construct;
11595  } else {
11596    _construct = function _construct(Parent, args, Class) {
11597      var a = [null];
11598      a.push.apply(a, args);
11599      var Constructor = Function.bind.apply(Parent, a);
11600      var instance = new Constructor();
11601      if (Class) _setPrototypeOf(instance, Class.prototype);
11602      return instance;
11603    };
11604  }
11605
11606  return _construct.apply(null, arguments);
11607}
11608
11609function _setPrototypeOf(o, p) {
11610  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
11611    o.__proto__ = p;
11612    return o;
11613  };
11614
11615  return _setPrototypeOf(o, p);
11616}
11617
11618function _toConsumableArray(arr) {
11619  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
11620}
11621
11622function _nonIterableSpread() {
11623  throw new TypeError("Invalid attempt to spread non-iterable instance");
11624}
11625
11626function _iterableToArray(iter) {
11627  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
11628}
11629
11630function _arrayWithoutHoles(arr) {
11631  if (Array.isArray(arr)) {
11632    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
11633      arr2[i] = arr[i];
11634    }
11635
11636    return arr2;
11637  }
11638}
11639
11640function marksy() {
11641  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
11642  var tracker = {
11643    tree: null,
11644    elements: null,
11645    nextElementId: null,
11646    toc: null,
11647    currentIdLevel: 0,
11648    currentId: []
11649  };
11650  var renderer = (0, _createRenderer["default"])(tracker, options, {
11651    code: function code(_code, language) {
11652      if (language === 'marksy') {
11653        try {
11654          // eslint-disable-next-line no-plusplus
11655          var elementId = tracker.nextElementId++;
11656          var components = Object.keys(options.components).map(function (key) {
11657            return options.components[key];
11658          });
11659
11660          var mockedReact = function mockedReact(tag) {
11661            var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11662            var componentProps = components.indexOf(tag) >= 0 ? Object.assign(props || {}, {
11663              // eslint-disable-next-line no-plusplus
11664              key: tracker.nextElementId++,
11665              context: tracker.context
11666            }) : props;
11667
11668            for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
11669              children[_key - 2] = arguments[_key];
11670            }
11671
11672            return options.createElement(tag, componentProps, children);
11673          };
11674
11675          tracker.elements[elementId] = // eslint-disable-next-line no-new-func
11676          _construct(Function, ['h'].concat(_toConsumableArray(Object.keys(options.components)), ["return ".concat(_code)])).apply(void 0, [mockedReact].concat(_toConsumableArray(components))) || null;
11677          tracker.tree.push(tracker.elements[elementId]);
11678          return "{{".concat(elementId, "}}");
11679        } catch (e) {//
11680        }
11681
11682        return null;
11683      }
11684
11685      return (0, _createRenderer.codeRenderer)(tracker, options)(_code, language);
11686    }
11687  });
11688  return function compile(content) {
11689    var markedOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11690    var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
11691    tracker.tree = [];
11692    tracker.elements = {};
11693    tracker.toc = [];
11694    tracker.nextElementId = 0;
11695    tracker.context = context;
11696    tracker.currentId = [];
11697    (0, _marked["default"])(content, Object.assign({
11698      renderer: renderer,
11699      smartypants: true
11700    }, markedOptions));
11701    return {
11702      tree: tracker.tree,
11703      toc: tracker.toc
11704    };
11705  };
11706}
11707
11708function _default(options) {
11709  return marksy(options);
11710}
11711
11712/***/ }),
11713
vendor: 1,355 bytes, lines 11714-11771
11714/***/ "./node_modules/memoize-one/dist/memoize-one.esm.js":
11715/*!**********************************************************!*\
11716  !*** ./node_modules/memoize-one/dist/memoize-one.esm.js ***!
11717  \**********************************************************/
11718/*! exports provided: default */
11719/***/ (function(module, __webpack_exports__, __webpack_require__) {
11720
11721"use strict";
11722__webpack_require__.r(__webpack_exports__);
11723function areInputsEqual(newInputs, lastInputs) {
11724  if (newInputs.length !== lastInputs.length) {
11725    return false;
11726  }
11727
11728  for (var i = 0; i < newInputs.length; i++) {
11729    if (newInputs[i] !== lastInputs[i]) {
11730      return false;
11731    }
11732  }
11733
11734  return true;
11735}
11736
11737function memoizeOne(resultFn, isEqual) {
11738  if (isEqual === void 0) {
11739    isEqual = areInputsEqual;
11740  }
11741
11742  var lastThis;
11743  var lastArgs = [];
11744  var lastResult;
11745  var calledOnce = false;
11746
11747  function memoized() {
11748    var newArgs = [];
11749
11750    for (var _i = 0; _i < arguments.length; _i++) {
11751      newArgs[_i] = arguments[_i];
11752    }
11753
11754    if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {
11755      return lastResult;
11756    }
11757
11758    lastResult = resultFn.apply(this, newArgs);
11759    calledOnce = true;
11760    lastThis = this;
11761    lastArgs = newArgs;
11762    return lastResult;
11763  }
11764
11765  return memoized;
11766}
11767
11768/* harmony default export */ __webpack_exports__["default"] = (memoizeOne);
11769
11770/***/ }),
11771
vendor: 5,629 bytes, lines 11772-11923
11772/***/ "./node_modules/merge-anything/dist/index.esm.js":
11773/*!*******************************************************!*\
11774  !*** ./node_modules/merge-anything/dist/index.esm.js ***!
11775  \*******************************************************/
11776/*! exports provided: default, concatArrays, merge */
11777/***/ (function(module, __webpack_exports__, __webpack_require__) {
11778
11779"use strict";
11780__webpack_require__.r(__webpack_exports__);
11781/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatArrays", function() { return concatArrays; });
11782/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; });
11783/* harmony import */ var is_what__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-what */ "./node_modules/is-what/dist/index.esm.js");
11784
11785/*! *****************************************************************************
11786Copyright (c) Microsoft Corporation. All rights reserved.
11787Licensed under the Apache License, Version 2.0 (the "License"); you may not use
11788this file except in compliance with the License. You may obtain a copy of the
11789License at http://www.apache.org/licenses/LICENSE-2.0
11790
11791THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11792KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
11793WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
11794MERCHANTABLITY OR NON-INFRINGEMENT.
11795
11796See the Apache Version 2.0 License for specific language governing permissions
11797and limitations under the License.
11798***************************************************************************** */
11799
11800function __spreadArrays() {
11801  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
11802
11803  for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];
11804
11805  return r;
11806}
11807
11808function assignProp(carry, key, newVal, originalObject) {
11809  var propType = originalObject.propertyIsEnumerable(key) ? 'enumerable' : 'nonenumerable';
11810  if (propType === 'enumerable') carry[key] = newVal;
11811
11812  if (propType === 'nonenumerable') {
11813    Object.defineProperty(carry, key, {
11814      value: newVal,
11815      enumerable: false,
11816      writable: true,
11817      configurable: true
11818    });
11819  }
11820}
11821
11822function mergeRecursively(origin, newComer, extensions) {
11823  // work directly on newComer if its not an object
11824  if (!Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(newComer)) {
11825    // extend merge rules
11826    if (extensions && Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isArray"])(extensions)) {
11827      extensions.forEach(function (extend) {
11828        newComer = extend(origin, newComer);
11829      });
11830    }
11831
11832    return newComer;
11833  } // define newObject to merge all values upon
11834
11835
11836  var newObject = {};
11837
11838  if (Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(origin)) {
11839    var props_1 = Object.getOwnPropertyNames(origin);
11840    var symbols_1 = Object.getOwnPropertySymbols(origin);
11841    newObject = __spreadArrays(props_1, symbols_1).reduce(function (carry, key) {
11842      // @ts-ignore
11843      var targetVal = origin[key];
11844
11845      if (!Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isSymbol"])(key) && !Object.getOwnPropertyNames(newComer).includes(key) || Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isSymbol"])(key) && !Object.getOwnPropertySymbols(newComer).includes(key)) {
11846        assignProp(carry, key, targetVal, origin);
11847      }
11848
11849      return carry;
11850    }, {});
11851  }
11852
11853  var props = Object.getOwnPropertyNames(newComer);
11854  var symbols = Object.getOwnPropertySymbols(newComer);
11855
11856  var result = __spreadArrays(props, symbols).reduce(function (carry, key) {
11857    // re-define the origin and newComer as targetVal and newVal
11858    var newVal = newComer[key];
11859    var targetVal = Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(origin) ? // @ts-ignore
11860    origin[key] : undefined; // extend merge rules
11861
11862    if (extensions && Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isArray"])(extensions)) {
11863      extensions.forEach(function (extend) {
11864        newVal = extend(targetVal, newVal);
11865      });
11866    } // When newVal is an object do the merge recursively
11867
11868
11869    if (targetVal !== undefined && Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(newVal)) {
11870      newVal = mergeRecursively(targetVal, newVal, extensions);
11871    }
11872
11873    assignProp(carry, key, newVal, newComer);
11874    return carry;
11875  }, newObject);
11876
11877  return result;
11878}
11879/**
11880 * Merge anything recursively.
11881 * Objects get merged, special objects (classes etc.) are re-assigned "as is".
11882 * Basic types overwrite objects or other basic types.
11883 *
11884 * @param {(IConfig | any)} origin
11885 * @param {...any[]} newComers
11886 * @returns the result
11887 */
11888
11889
11890function merge(origin) {
11891  var newComers = [];
11892
11893  for (var _i = 1; _i < arguments.length; _i++) {
11894    newComers[_i - 1] = arguments[_i];
11895  }
11896
11897  var extensions = null;
11898  var base = origin;
11899
11900  if (Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(origin) && origin.extensions && Object.keys(origin).length === 1) {
11901    base = {};
11902    extensions = origin.extensions;
11903  }
11904
11905  return newComers.reduce(function (result, newComer) {
11906    return mergeRecursively(result, newComer, extensions);
11907  }, base);
11908}
11909
11910function concatArrays(originVal, newVal) {
11911  if (Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isArray"])(originVal) && Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isArray"])(newVal)) {
11912    // concat logic
11913    return originVal.concat(newVal);
11914  }
11915
11916  return newVal; // always return newVal as fallback!!
11917}
11918
11919/* harmony default export */ __webpack_exports__["default"] = (merge);
11920
11921
11922/***/ }),
11923
vendor: 1,073 bytes, lines 11924-11959
11924/***/ "./node_modules/normalize-newline/index.js":
11925/*!*************************************************!*\
11926  !*** ./node_modules/normalize-newline/index.js ***!
11927  \*************************************************/
11928/*! no static exports found */
11929/***/ (function(module, exports, __webpack_require__) {
11930
11931"use strict";
11932/* WEBPACK VAR INJECTION */(function(Buffer) {
11933
11934const CRLF = '\r\n';
11935
11936const replaceBuf = buf => {
11937  const i = buf.indexOf(CRLF);
11938
11939  if (i === -1) {
11940    return buf;
11941  }
11942
11943  const start = buf.slice(0, i);
11944  const end = replaceBuf(buf.slice(i + CRLF.length));
11945  const len = i + start.length + end.length;
11946  return Buffer.concat([start, '\n', end], len);
11947};
11948
11949module.exports = x => {
11950  if (typeof x !== 'string' && !Buffer.isBuffer(x)) {
11951    throw new TypeError(`Expected a \`string\` or a \`Buffer\`, got \`${typeof x}\``);
11952  }
11953
11954  return Buffer.isBuffer(x) ? replaceBuf(x) : x.replace(new RegExp(CRLF, 'g'), '\n');
11955};
11956/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../buffer/index.js */ "./node_modules/buffer/index.js").Buffer))
11957
11958/***/ }),
11959
vendor: 2,527 bytes, lines 11960-12065
11960/***/ "./node_modules/object-assign/index.js":
11961/*!*********************************************!*\
11962  !*** ./node_modules/object-assign/index.js ***!
11963  \*********************************************/
11964/*! no static exports found */
11965/***/ (function(module, exports, __webpack_require__) {
11966
11967"use strict";
11968/*
11969object-assign
11970(c) Sindre Sorhus
11971@license MIT
11972*/
11973
11974/* eslint-disable no-unused-vars */
11975
11976var getOwnPropertySymbols = Object.getOwnPropertySymbols;
11977var hasOwnProperty = Object.prototype.hasOwnProperty;
11978var propIsEnumerable = Object.prototype.propertyIsEnumerable;
11979
11980function toObject(val) {
11981  if (val === null || val === undefined) {
11982    throw new TypeError('Object.assign cannot be called with null or undefined');
11983  }
11984
11985  return Object(val);
11986}
11987
11988function shouldUseNative() {
11989  try {
11990    if (!Object.assign) {
11991      return false;
11992    } // Detect buggy property enumeration order in older V8 versions.
11993    // https://bugs.chromium.org/p/v8/issues/detail?id=4118
11994
11995
11996    var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
11997
11998    test1[5] = 'de';
11999
12000    if (Object.getOwnPropertyNames(test1)[0] === '5') {
12001      return false;
12002    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
12003
12004
12005    var test2 = {};
12006
12007    for (var i = 0; i < 10; i++) {
12008      test2['_' + String.fromCharCode(i)] = i;
12009    }
12010
12011    var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
12012      return test2[n];
12013    });
12014
12015    if (order2.join('') !== '0123456789') {
12016      return false;
12017    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
12018
12019
12020    var test3 = {};
12021    'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
12022      test3[letter] = letter;
12023    });
12024
12025    if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
12026      return false;
12027    }
12028
12029    return true;
12030  } catch (err) {
12031    // We don't expect any of the above to throw, but better to be safe.
12032    return false;
12033  }
12034}
12035
12036module.exports = shouldUseNative() ? Object.assign : function (target, source) {
12037  var from;
12038  var to = toObject(target);
12039  var symbols;
12040
12041  for (var s = 1; s < arguments.length; s++) {
12042    from = Object(arguments[s]);
12043
12044    for (var key in from) {
12045      if (hasOwnProperty.call(from, key)) {
12046        to[key] = from[key];
12047      }
12048    }
12049
12050    if (getOwnPropertySymbols) {
12051      symbols = getOwnPropertySymbols(from);
12052
12053      for (var i = 0; i < symbols.length; i++) {
12054        if (propIsEnumerable.call(from, symbols[i])) {
12055          to[symbols[i]] = from[symbols[i]];
12056        }
12057      }
12058    }
12059  }
12060
12061  return to;
12062};
12063
12064/***/ }),
12065
vendor: 1,611 bytes, lines 12066-12133
12066/***/ "./node_modules/prism-react-renderer/themes/dracula/index.js":
12067/*!*******************************************************************!*\
12068  !*** ./node_modules/prism-react-renderer/themes/dracula/index.js ***!
12069  \*******************************************************************/
12070/*! exports provided: default */
12071/***/ (function(module, __webpack_exports__, __webpack_require__) {
12072
12073"use strict";
12074__webpack_require__.r(__webpack_exports__);
12075// Original: https://github.com/dracula/visual-studio-code
12076// Converted automatically using ./tools/themeFromVsCode
12077var theme = {
12078  plain: {
12079    color: "#F8F8F2",
12080    backgroundColor: "#282A36"
12081  },
12082  styles: [{
12083    types: ["prolog", "constant", "builtin"],
12084    style: {
12085      color: "rgb(189, 147, 249)"
12086    }
12087  }, {
12088    types: ["inserted", "function"],
12089    style: {
12090      color: "rgb(80, 250, 123)"
12091    }
12092  }, {
12093    types: ["deleted"],
12094    style: {
12095      color: "rgb(255, 85, 85)"
12096    }
12097  }, {
12098    types: ["changed"],
12099    style: {
12100      color: "rgb(255, 184, 108)"
12101    }
12102  }, {
12103    types: ["punctuation", "symbol"],
12104    style: {
12105      color: "rgb(248, 248, 242)"
12106    }
12107  }, {
12108    types: ["string", "char", "tag", "selector"],
12109    style: {
12110      color: "rgb(255, 121, 198)"
12111    }
12112  }, {
12113    types: ["keyword", "variable"],
12114    style: {
12115      color: "rgb(189, 147, 249)",
12116      fontStyle: "italic"
12117    }
12118  }, {
12119    types: ["comment"],
12120    style: {
12121      color: "rgb(98, 114, 164)"
12122    }
12123  }, {
12124    types: ["attr-name"],
12125    style: {
12126      color: "rgb(241, 250, 140)"
12127    }
12128  }]
12129};
12130/* harmony default export */ __webpack_exports__["default"] = (theme);
12131
12132/***/ }),
12133
vendor: 5,344 bytes, lines 12134-12351
12134/***/ "./node_modules/process/browser.js":
12135/*!*****************************************!*\
12136  !*** ./node_modules/process/browser.js ***!
12137  \*****************************************/
12138/*! no static exports found */
12139/***/ (function(module, exports) {
12140
12141// shim for using process in browser
12142var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it
12143// don't break things.  But we need to wrap it in a try catch in case it is
12144// wrapped in strict mode code which doesn't define any globals.  It's inside a
12145// function because try/catches deoptimize in certain engines.
12146
12147var cachedSetTimeout;
12148var cachedClearTimeout;
12149
12150function defaultSetTimout() {
12151  throw new Error('setTimeout has not been defined');
12152}
12153
12154function defaultClearTimeout() {
12155  throw new Error('clearTimeout has not been defined');
12156}
12157
12158(function () {
12159  try {
12160    if (typeof setTimeout === 'function') {
12161      cachedSetTimeout = setTimeout;
12162    } else {
12163      cachedSetTimeout = defaultSetTimout;
12164    }
12165  } catch (e) {
12166    cachedSetTimeout = defaultSetTimout;
12167  }
12168
12169  try {
12170    if (typeof clearTimeout === 'function') {
12171      cachedClearTimeout = clearTimeout;
12172    } else {
12173      cachedClearTimeout = defaultClearTimeout;
12174    }
12175  } catch (e) {
12176    cachedClearTimeout = defaultClearTimeout;
12177  }
12178})();
12179
12180function runTimeout(fun) {
12181  if (cachedSetTimeout === setTimeout) {
12182    //normal enviroments in sane situations
12183    return setTimeout(fun, 0);
12184  } // if setTimeout wasn't available but was latter defined
12185
12186
12187  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
12188    cachedSetTimeout = setTimeout;
12189    return setTimeout(fun, 0);
12190  }
12191
12192  try {
12193    // when when somebody has screwed with setTimeout but no I.E. maddness
12194    return cachedSetTimeout(fun, 0);
12195  } catch (e) {
12196    try {
12197      // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
12198      return cachedSetTimeout.call(null, fun, 0);
12199    } catch (e) {
12200      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
12201      return cachedSetTimeout.call(this, fun, 0);
12202    }
12203  }
12204}
12205
12206function runClearTimeout(marker) {
12207  if (cachedClearTimeout === clearTimeout) {
12208    //normal enviroments in sane situations
12209    return clearTimeout(marker);
12210  } // if clearTimeout wasn't available but was latter defined
12211
12212
12213  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
12214    cachedClearTimeout = clearTimeout;
12215    return clearTimeout(marker);
12216  }
12217
12218  try {
12219    // when when somebody has screwed with setTimeout but no I.E. maddness
12220    return cachedClearTimeout(marker);
12221  } catch (e) {
12222    try {
12223      // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
12224      return cachedClearTimeout.call(null, marker);
12225    } catch (e) {
12226      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
12227      // Some versions of I.E. have different rules for clearTimeout vs setTimeout
12228      return cachedClearTimeout.call(this, marker);
12229    }
12230  }
12231}
12232
12233var queue = [];
12234var draining = false;
12235var currentQueue;
12236var queueIndex = -1;
12237
12238function cleanUpNextTick() {
12239  if (!draining || !currentQueue) {
12240    return;
12241  }
12242
12243  draining = false;
12244
12245  if (currentQueue.length) {
12246    queue = currentQueue.concat(queue);
12247  } else {
12248    queueIndex = -1;
12249  }
12250
12251  if (queue.length) {
12252    drainQueue();
12253  }
12254}
12255
12256function drainQueue() {
12257  if (draining) {
12258    return;
12259  }
12260
12261  var timeout = runTimeout(cleanUpNextTick);
12262  draining = true;
12263  var len = queue.length;
12264
12265  while (len) {
12266    currentQueue = queue;
12267    queue = [];
12268
12269    while (++queueIndex < len) {
12270      if (currentQueue) {
12271        currentQueue[queueIndex].run();
12272      }
12273    }
12274
12275    queueIndex = -1;
12276    len = queue.length;
12277  }
12278
12279  currentQueue = null;
12280  draining = false;
12281  runClearTimeout(timeout);
12282}
12283
12284process.nextTick = function (fun) {
12285  var args = new Array(arguments.length - 1);
12286
12287  if (arguments.length > 1) {
12288    for (var i = 1; i < arguments.length; i++) {
12289      args[i - 1] = arguments[i];
12290    }
12291  }
12292
12293  queue.push(new Item(fun, args));
12294
12295  if (queue.length === 1 && !draining) {
12296    runTimeout(drainQueue);
12297  }
12298}; // v8 likes predictible objects
12299
12300
12301function Item(fun, array) {
12302  this.fun = fun;
12303  this.array = array;
12304}
12305
12306Item.prototype.run = function () {
12307  this.fun.apply(null, this.array);
12308};
12309
12310process.title = 'browser';
12311process.browser = true;
12312process.env = {};
12313process.argv = [];
12314process.version = ''; // empty string to avoid regexp issues
12315
12316process.versions = {};
12317
12318function noop() {}
12319
12320process.on = noop;
12321process.addListener = noop;
12322process.once = noop;
12323process.off = noop;
12324process.removeListener = noop;
12325process.removeAllListeners = noop;
12326process.emit = noop;
12327process.prependListener = noop;
12328process.prependOnceListener = noop;
12329
12330process.listeners = function (name) {
12331  return [];
12332};
12333
12334process.binding = function (name) {
12335  throw new Error('process.binding is not supported');
12336};
12337
12338process.cwd = function () {
12339  return '/';
12340};
12341
12342process.chdir = function (dir) {
12343  throw new Error('process.chdir is not supported');
12344};
12345
12346process.umask = function () {
12347  return 0;
12348};
12349
12350/***/ }),
12351
vendor: 3,931 bytes, lines 12352-12457
12352/***/ "./node_modules/prop-types/checkPropTypes.js":
12353/*!***************************************************!*\
12354  !*** ./node_modules/prop-types/checkPropTypes.js ***!
12355  \***************************************************/
12356/*! no static exports found */
12357/***/ (function(module, exports, __webpack_require__) {
12358
12359"use strict";
12360/**
12361 * Copyright (c) 2013-present, Facebook, Inc.
12362 *
12363 * This source code is licensed under the MIT license found in the
12364 * LICENSE file in the root directory of this source tree.
12365 */
12366
12367
12368var printWarning = function () {};
12369
12370if (true) {
12371  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
12372
12373  var loggedTypeFailures = {};
12374  var has = Function.call.bind(Object.prototype.hasOwnProperty);
12375
12376  printWarning = function (text) {
12377    var message = 'Warning: ' + text;
12378
12379    if (typeof console !== 'undefined') {
12380      console.error(message);
12381    }
12382
12383    try {
12384      // --- Welcome to debugging React ---
12385      // This error was thrown as a convenience so that you can use this stack
12386      // to find the callsite that caused this warning to fire.
12387      throw new Error(message);
12388    } catch (x) {}
12389  };
12390}
12391/**
12392 * Assert that the values match with the type specs.
12393 * Error messages are memorized and will only be shown once.
12394 *
12395 * @param {object} typeSpecs Map of name to a ReactPropType
12396 * @param {object} values Runtime values that need to be type-checked
12397 * @param {string} location e.g. "prop", "context", "child context"
12398 * @param {string} componentName Name of the component for error messages.
12399 * @param {?Function} getStack Returns the component stack.
12400 * @private
12401 */
12402
12403
12404function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
12405  if (true) {
12406    for (var typeSpecName in typeSpecs) {
12407      if (has(typeSpecs, typeSpecName)) {
12408        var error; // Prop type validation may throw. In case they do, we don't want to
12409        // fail the render phase where it didn't fail before. So we log it.
12410        // After these have been cleaned up, we'll let them throw.
12411
12412        try {
12413          // This is intentionally an invariant that gets caught. It's the same
12414          // behavior as without this statement except with a better message.
12415          if (typeof typeSpecs[typeSpecName] !== 'function') {
12416            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.');
12417            err.name = 'Invariant Violation';
12418            throw err;
12419          }
12420
12421          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
12422        } catch (ex) {
12423          error = ex;
12424        }
12425
12426        if (error && !(error instanceof Error)) {
12427          printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');
12428        }
12429
12430        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
12431          // Only monitor this failure once because there tends to be a lot of the
12432          // same error.
12433          loggedTypeFailures[error.message] = true;
12434          var stack = getStack ? getStack() : '';
12435          printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));
12436        }
12437      }
12438    }
12439  }
12440}
12441/**
12442 * Resets warning cache when testing.
12443 *
12444 * @private
12445 */
12446
12447
12448checkPropTypes.resetWarningCache = function () {
12449  if (true) {
12450    loggedTypeFailures = {};
12451  }
12452};
12453
12454module.exports = checkPropTypes;
12455
12456/***/ }),
12457
vendor: 21,779 bytes, lines 12458-13111
12458/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
12459/*!************************************************************!*\
12460  !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
12461  \************************************************************/
12462/*! no static exports found */
12463/***/ (function(module, exports, __webpack_require__) {
12464
12465"use strict";
12466/**
12467 * Copyright (c) 2013-present, Facebook, Inc.
12468 *
12469 * This source code is licensed under the MIT license found in the
12470 * LICENSE file in the root directory of this source tree.
12471 */
12472
12473
12474var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js");
12475
12476var assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
12477
12478var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
12479
12480var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");
12481
12482var has = Function.call.bind(Object.prototype.hasOwnProperty);
12483
12484var printWarning = function () {};
12485
12486if (true) {
12487  printWarning = function (text) {
12488    var message = 'Warning: ' + text;
12489
12490    if (typeof console !== 'undefined') {
12491      console.error(message);
12492    }
12493
12494    try {
12495      // --- Welcome to debugging React ---
12496      // This error was thrown as a convenience so that you can use this stack
12497      // to find the callsite that caused this warning to fire.
12498      throw new Error(message);
12499    } catch (x) {}
12500  };
12501}
12502
12503function emptyFunctionThatReturnsNull() {
12504  return null;
12505}
12506
12507module.exports = function (isValidElement, throwOnDirectAccess) {
12508  /* global Symbol */
12509  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
12510  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
12511
12512  /**
12513   * Returns the iterator method function contained on the iterable object.
12514   *
12515   * Be sure to invoke the function with the iterable as context:
12516   *
12517   *     var iteratorFn = getIteratorFn(myIterable);
12518   *     if (iteratorFn) {
12519   *       var iterator = iteratorFn.call(myIterable);
12520   *       ...
12521   *     }
12522   *
12523   * @param {?object} maybeIterable
12524   * @return {?function}
12525   */
12526
12527  function getIteratorFn(maybeIterable) {
12528    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
12529
12530    if (typeof iteratorFn === 'function') {
12531      return iteratorFn;
12532    }
12533  }
12534  /**
12535   * Collection of methods that allow declaration and validation of props that are
12536   * supplied to React components. Example usage:
12537   *
12538   *   var Props = require('ReactPropTypes');
12539   *   var MyArticle = React.createClass({
12540   *     propTypes: {
12541   *       // An optional string prop named "description".
12542   *       description: Props.string,
12543   *
12544   *       // A required enum prop named "category".
12545   *       category: Props.oneOf(['News','Photos']).isRequired,
12546   *
12547   *       // A prop named "dialog" that requires an instance of Dialog.
12548   *       dialog: Props.instanceOf(Dialog).isRequired
12549   *     },
12550   *     render: function() { ... }
12551   *   });
12552   *
12553   * A more formal specification of how these methods are used:
12554   *
12555   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
12556   *   decl := ReactPropTypes.{type}(.isRequired)?
12557   *
12558   * Each and every declaration produces a function with the same signature. This
12559   * allows the creation of custom validation functions. For example:
12560   *
12561   *  var MyLink = React.createClass({
12562   *    propTypes: {
12563   *      // An optional string or URI prop named "href".
12564   *      href: function(props, propName, componentName) {
12565   *        var propValue = props[propName];
12566   *        if (propValue != null && typeof propValue !== 'string' &&
12567   *            !(propValue instanceof URI)) {
12568   *          return new Error(
12569   *            'Expected a string or an URI for ' + propName + ' in ' +
12570   *            componentName
12571   *          );
12572   *        }
12573   *      }
12574   *    },
12575   *    render: function() {...}
12576   *  });
12577   *
12578   * @internal
12579   */
12580
12581
12582  var ANONYMOUS = '<<anonymous>>'; // Important!
12583  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
12584
12585  var ReactPropTypes = {
12586    array: createPrimitiveTypeChecker('array'),
12587    bool: createPrimitiveTypeChecker('boolean'),
12588    func: createPrimitiveTypeChecker('function'),
12589    number: createPrimitiveTypeChecker('number'),
12590    object: createPrimitiveTypeChecker('object'),
12591    string: createPrimitiveTypeChecker('string'),
12592    symbol: createPrimitiveTypeChecker('symbol'),
12593    any: createAnyTypeChecker(),
12594    arrayOf: createArrayOfTypeChecker,
12595    element: createElementTypeChecker(),
12596    elementType: createElementTypeTypeChecker(),
12597    instanceOf: createInstanceTypeChecker,
12598    node: createNodeChecker(),
12599    objectOf: createObjectOfTypeChecker,
12600    oneOf: createEnumTypeChecker,
12601    oneOfType: createUnionTypeChecker,
12602    shape: createShapeTypeChecker,
12603    exact: createStrictShapeTypeChecker
12604  };
12605  /**
12606   * inlined Object.is polyfill to avoid requiring consumers ship their own
12607   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
12608   */
12609
12610  /*eslint-disable no-self-compare*/
12611
12612  function is(x, y) {
12613    // SameValue algorithm
12614    if (x === y) {
12615      // Steps 1-5, 7-10
12616      // Steps 6.b-6.e: +0 != -0
12617      return x !== 0 || 1 / x === 1 / y;
12618    } else {
12619      // Step 6.a: NaN == NaN
12620      return x !== x && y !== y;
12621    }
12622  }
12623  /*eslint-enable no-self-compare*/
12624
12625  /**
12626   * We use an Error-like object for backward compatibility as people may call
12627   * PropTypes directly and inspect their output. However, we don't use real
12628   * Errors anymore. We don't inspect their stack anyway, and creating them
12629   * is prohibitively expensive if they are created too often, such as what
12630   * happens in oneOfType() for any type before the one that matched.
12631   */
12632
12633
12634  function PropTypeError(message) {
12635    this.message = message;
12636    this.stack = '';
12637  } // Make `instanceof Error` still work for returned errors.
12638
12639
12640  PropTypeError.prototype = Error.prototype;
12641
12642  function createChainableTypeChecker(validate) {
12643    if (true) {
12644      var manualPropTypeCallCache = {};
12645      var manualPropTypeWarningCount = 0;
12646    }
12647
12648    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
12649      componentName = componentName || ANONYMOUS;
12650      propFullName = propFullName || propName;
12651
12652      if (secret !== ReactPropTypesSecret) {
12653        if (throwOnDirectAccess) {
12654          // New behavior only for users of `prop-types` package
12655          var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');
12656          err.name = 'Invariant Violation';
12657          throw err;
12658        } else if ( true && typeof console !== 'undefined') {
12659          // Old behavior for people using React.PropTypes
12660          var cacheKey = componentName + ':' + propName;
12661
12662          if (!manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors
12663          manualPropTypeWarningCount < 3) {
12664            printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');
12665            manualPropTypeCallCache[cacheKey] = true;
12666            manualPropTypeWarningCount++;
12667          }
12668        }
12669      }
12670
12671      if (props[propName] == null) {
12672        if (isRequired) {
12673          if (props[propName] === null) {
12674            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
12675          }
12676
12677          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
12678        }
12679
12680        return null;
12681      } else {
12682        return validate(props, propName, componentName, location, propFullName);
12683      }
12684    }
12685
12686    var chainedCheckType = checkType.bind(null, false);
12687    chainedCheckType.isRequired = checkType.bind(null, true);
12688    return chainedCheckType;
12689  }
12690
12691  function createPrimitiveTypeChecker(expectedType) {
12692    function validate(props, propName, componentName, location, propFullName, secret) {
12693      var propValue = props[propName];
12694      var propType = getPropType(propValue);
12695
12696      if (propType !== expectedType) {
12697        // `propValue` being instance of, say, date/regexp, pass the 'object'
12698        // check, but we can offer a more precise error message here rather than
12699        // 'of type `object`'.
12700        var preciseType = getPreciseType(propValue);
12701        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
12702      }
12703
12704      return null;
12705    }
12706
12707    return createChainableTypeChecker(validate);
12708  }
12709
12710  function createAnyTypeChecker() {
12711    return createChainableTypeChecker(emptyFunctionThatReturnsNull);
12712  }
12713
12714  function createArrayOfTypeChecker(typeChecker) {
12715    function validate(props, propName, componentName, location, propFullName) {
12716      if (typeof typeChecker !== 'function') {
12717        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
12718      }
12719
12720      var propValue = props[propName];
12721
12722      if (!Array.isArray(propValue)) {
12723        var propType = getPropType(propValue);
12724        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
12725      }
12726
12727      for (var i = 0; i < propValue.length; i++) {
12728        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
12729
12730        if (error instanceof Error) {
12731          return error;
12732        }
12733      }
12734
12735      return null;
12736    }
12737
12738    return createChainableTypeChecker(validate);
12739  }
12740
12741  function createElementTypeChecker() {
12742    function validate(props, propName, componentName, location, propFullName) {
12743      var propValue = props[propName];
12744
12745      if (!isValidElement(propValue)) {
12746        var propType = getPropType(propValue);
12747        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
12748      }
12749
12750      return null;
12751    }
12752
12753    return createChainableTypeChecker(validate);
12754  }
12755
12756  function createElementTypeTypeChecker() {
12757    function validate(props, propName, componentName, location, propFullName) {
12758      var propValue = props[propName];
12759
12760      if (!ReactIs.isValidElementType(propValue)) {
12761        var propType = getPropType(propValue);
12762        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
12763      }
12764
12765      return null;
12766    }
12767
12768    return createChainableTypeChecker(validate);
12769  }
12770
12771  function createInstanceTypeChecker(expectedClass) {
12772    function validate(props, propName, componentName, location, propFullName) {
12773      if (!(props[propName] instanceof expectedClass)) {
12774        var expectedClassName = expectedClass.name || ANONYMOUS;
12775        var actualClassName = getClassName(props[propName]);
12776        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
12777      }
12778
12779      return null;
12780    }
12781
12782    return createChainableTypeChecker(validate);
12783  }
12784
12785  function createEnumTypeChecker(expectedValues) {
12786    if (!Array.isArray(expectedValues)) {
12787      if (true) {
12788        if (arguments.length > 1) {
12789          printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');
12790        } else {
12791          printWarning('Invalid argument supplied to oneOf, expected an array.');
12792        }
12793      }
12794
12795      return emptyFunctionThatReturnsNull;
12796    }
12797
12798    function validate(props, propName, componentName, location, propFullName) {
12799      var propValue = props[propName];
12800
12801      for (var i = 0; i < expectedValues.length; i++) {
12802        if (is(propValue, expectedValues[i])) {
12803          return null;
12804        }
12805      }
12806
12807      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
12808        var type = getPreciseType(value);
12809
12810        if (type === 'symbol') {
12811          return String(value);
12812        }
12813
12814        return value;
12815      });
12816      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
12817    }
12818
12819    return createChainableTypeChecker(validate);
12820  }
12821
12822  function createObjectOfTypeChecker(typeChecker) {
12823    function validate(props, propName, componentName, location, propFullName) {
12824      if (typeof typeChecker !== 'function') {
12825        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
12826      }
12827
12828      var propValue = props[propName];
12829      var propType = getPropType(propValue);
12830
12831      if (propType !== 'object') {
12832        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
12833      }
12834
12835      for (var key in propValue) {
12836        if (has(propValue, key)) {
12837          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
12838
12839          if (error instanceof Error) {
12840            return error;
12841          }
12842        }
12843      }
12844
12845      return null;
12846    }
12847
12848    return createChainableTypeChecker(validate);
12849  }
12850
12851  function createUnionTypeChecker(arrayOfTypeCheckers) {
12852    if (!Array.isArray(arrayOfTypeCheckers)) {
12853       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : undefined;
12854      return emptyFunctionThatReturnsNull;
12855    }
12856
12857    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
12858      var checker = arrayOfTypeCheckers[i];
12859
12860      if (typeof checker !== 'function') {
12861        printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');
12862        return emptyFunctionThatReturnsNull;
12863      }
12864    }
12865
12866    function validate(props, propName, componentName, location, propFullName) {
12867      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
12868        var checker = arrayOfTypeCheckers[i];
12869
12870        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
12871          return null;
12872        }
12873      }
12874
12875      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
12876    }
12877
12878    return createChainableTypeChecker(validate);
12879  }
12880
12881  function createNodeChecker() {
12882    function validate(props, propName, componentName, location, propFullName) {
12883      if (!isNode(props[propName])) {
12884        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
12885      }
12886
12887      return null;
12888    }
12889
12890    return createChainableTypeChecker(validate);
12891  }
12892
12893  function createShapeTypeChecker(shapeTypes) {
12894    function validate(props, propName, componentName, location, propFullName) {
12895      var propValue = props[propName];
12896      var propType = getPropType(propValue);
12897
12898      if (propType !== 'object') {
12899        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
12900      }
12901
12902      for (var key in shapeTypes) {
12903        var checker = shapeTypes[key];
12904
12905        if (!checker) {
12906          continue;
12907        }
12908
12909        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
12910
12911        if (error) {
12912          return error;
12913        }
12914      }
12915
12916      return null;
12917    }
12918
12919    return createChainableTypeChecker(validate);
12920  }
12921
12922  function createStrictShapeTypeChecker(shapeTypes) {
12923    function validate(props, propName, componentName, location, propFullName) {
12924      var propValue = props[propName];
12925      var propType = getPropType(propValue);
12926
12927      if (propType !== 'object') {
12928        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
12929      } // We need to check all keys in case some are required but missing from
12930      // props.
12931
12932
12933      var allKeys = assign({}, props[propName], shapeTypes);
12934
12935      for (var key in allKeys) {
12936        var checker = shapeTypes[key];
12937
12938        if (!checker) {
12939          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, '  ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  '));
12940        }
12941
12942        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
12943
12944        if (error) {
12945          return error;
12946        }
12947      }
12948
12949      return null;
12950    }
12951
12952    return createChainableTypeChecker(validate);
12953  }
12954
12955  function isNode(propValue) {
12956    switch (typeof propValue) {
12957      case 'number':
12958      case 'string':
12959      case 'undefined':
12960        return true;
12961
12962      case 'boolean':
12963        return !propValue;
12964
12965      case 'object':
12966        if (Array.isArray(propValue)) {
12967          return propValue.every(isNode);
12968        }
12969
12970        if (propValue === null || isValidElement(propValue)) {
12971          return true;
12972        }
12973
12974        var iteratorFn = getIteratorFn(propValue);
12975
12976        if (iteratorFn) {
12977          var iterator = iteratorFn.call(propValue);
12978          var step;
12979
12980          if (iteratorFn !== propValue.entries) {
12981            while (!(step = iterator.next()).done) {
12982              if (!isNode(step.value)) {
12983                return false;
12984              }
12985            }
12986          } else {
12987            // Iterator will provide entry [k,v] tuples rather than values.
12988            while (!(step = iterator.next()).done) {
12989              var entry = step.value;
12990
12991              if (entry) {
12992                if (!isNode(entry[1])) {
12993                  return false;
12994                }
12995              }
12996            }
12997          }
12998        } else {
12999          return false;
13000        }
13001
13002        return true;
13003
13004      default:
13005        return false;
13006    }
13007  }
13008
13009  function isSymbol(propType, propValue) {
13010    // Native Symbol.
13011    if (propType === 'symbol') {
13012      return true;
13013    } // falsy value can't be a Symbol
13014
13015
13016    if (!propValue) {
13017      return false;
13018    } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
13019
13020
13021    if (propValue['@@toStringTag'] === 'Symbol') {
13022      return true;
13023    } // Fallback for non-spec compliant Symbols which are polyfilled.
13024
13025
13026    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
13027      return true;
13028    }
13029
13030    return false;
13031  } // Equivalent of `typeof` but with special handling for array and regexp.
13032
13033
13034  function getPropType(propValue) {
13035    var propType = typeof propValue;
13036
13037    if (Array.isArray(propValue)) {
13038      return 'array';
13039    }
13040
13041    if (propValue instanceof RegExp) {
13042      // Old webkits (at least until Android 4.0) return 'function' rather than
13043      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
13044      // passes PropTypes.object.
13045      return 'object';
13046    }
13047
13048    if (isSymbol(propType, propValue)) {
13049      return 'symbol';
13050    }
13051
13052    return propType;
13053  } // This handles more types than `getPropType`. Only used for error messages.
13054  // See `createPrimitiveTypeChecker`.
13055
13056
13057  function getPreciseType(propValue) {
13058    if (typeof propValue === 'undefined' || propValue === null) {
13059      return '' + propValue;
13060    }
13061
13062    var propType = getPropType(propValue);
13063
13064    if (propType === 'object') {
13065      if (propValue instanceof Date) {
13066        return 'date';
13067      } else if (propValue instanceof RegExp) {
13068        return 'regexp';
13069      }
13070    }
13071
13072    return propType;
13073  } // Returns a string that is postfixed to a warning about an invalid type.
13074  // For example, "undefined" or "of type array"
13075
13076
13077  function getPostfixForTypeWarning(value) {
13078    var type = getPreciseType(value);
13079
13080    switch (type) {
13081      case 'array':
13082      case 'object':
13083        return 'an ' + type;
13084
13085      case 'boolean':
13086      case 'date':
13087      case 'regexp':
13088        return 'a ' + type;
13089
13090      default:
13091        return type;
13092    }
13093  } // Returns class name of the object, if any.
13094
13095
13096  function getClassName(propValue) {
13097    if (!propValue.constructor || !propValue.constructor.name) {
13098      return ANONYMOUS;
13099    }
13100
13101    return propValue.constructor.name;
13102  }
13103
13104  ReactPropTypes.checkPropTypes = checkPropTypes;
13105  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
13106  ReactPropTypes.PropTypes = ReactPropTypes;
13107  return ReactPropTypes;
13108};
13109
13110/***/ }),
13111
vendor: 905 bytes, lines 13112-13135
13112/***/ "./node_modules/prop-types/index.js":
13113/*!******************************************!*\
13114  !*** ./node_modules/prop-types/index.js ***!
13115  \******************************************/
13116/*! no static exports found */
13117/***/ (function(module, exports, __webpack_require__) {
13118
13119/**
13120 * Copyright (c) 2013-present, Facebook, Inc.
13121 *
13122 * This source code is licensed under the MIT license found in the
13123 * LICENSE file in the root directory of this source tree.
13124 */
13125if (true) {
13126  var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js"); // By explicitly using `prop-types` you are opting into new development behavior.
13127  // http://fb.me/prop-types-in-prod
13128
13129
13130  var throwOnDirectAccess = true;
13131  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "./node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
13132} else {}
13133
13134/***/ }),
13135
vendor: 676 bytes, lines 13136-13156
13136/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
13137/*!*************************************************************!*\
13138  !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
13139  \*************************************************************/
13140/*! no static exports found */
13141/***/ (function(module, exports, __webpack_require__) {
13142
13143"use strict";
13144/**
13145 * Copyright (c) 2013-present, Facebook, Inc.
13146 *
13147 * This source code is licensed under the MIT license found in the
13148 * LICENSE file in the root directory of this source tree.
13149 */
13150
13151
13152var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
13153module.exports = ReactPropTypesSecret;
13154
13155/***/ }),
13156
vendor: 9,608 bytes, lines 13157-13523
13157/***/ "./node_modules/query-string/index.js":
13158/*!********************************************!*\
13159  !*** ./node_modules/query-string/index.js ***!
13160  \********************************************/
13161/*! no static exports found */
13162/***/ (function(module, exports, __webpack_require__) {
13163
13164"use strict";
13165
13166
13167const strictUriEncode = __webpack_require__(/*! strict-uri-encode */ "./node_modules/strict-uri-encode/index.js");
13168
13169const decodeComponent = __webpack_require__(/*! decode-uri-component */ "./node_modules/decode-uri-component/index.js");
13170
13171const splitOnFirst = __webpack_require__(/*! split-on-first */ "./node_modules/split-on-first/index.js");
13172
13173const isNullOrUndefined = value => value === null || value === undefined;
13174
13175function encoderForArrayFormat(options) {
13176  switch (options.arrayFormat) {
13177    case 'index':
13178      return key => (result, value) => {
13179        const index = result.length;
13180
13181        if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {
13182          return result;
13183        }
13184
13185        if (value === null) {
13186          return [...result, [encode(key, options), '[', index, ']'].join('')];
13187        }
13188
13189        return [...result, [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')];
13190      };
13191
13192    case 'bracket':
13193      return key => (result, value) => {
13194        if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {
13195          return result;
13196        }
13197
13198        if (value === null) {
13199          return [...result, [encode(key, options), '[]'].join('')];
13200        }
13201
13202        return [...result, [encode(key, options), '[]=', encode(value, options)].join('')];
13203      };
13204
13205    case 'comma':
13206    case 'separator':
13207      return key => (result, value) => {
13208        if (value === null || value === undefined || value.length === 0) {
13209          return result;
13210        }
13211
13212        if (result.length === 0) {
13213          return [[encode(key, options), '=', encode(value, options)].join('')];
13214        }
13215
13216        return [[result, encode(value, options)].join(options.arrayFormatSeparator)];
13217      };
13218
13219    default:
13220      return key => (result, value) => {
13221        if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {
13222          return result;
13223        }
13224
13225        if (value === null) {
13226          return [...result, encode(key, options)];
13227        }
13228
13229        return [...result, [encode(key, options), '=', encode(value, options)].join('')];
13230      };
13231  }
13232}
13233
13234function parserForArrayFormat(options) {
13235  let result;
13236
13237  switch (options.arrayFormat) {
13238    case 'index':
13239      return (key, value, accumulator) => {
13240        result = /\[(\d*)\]$/.exec(key);
13241        key = key.replace(/\[\d*\]$/, '');
13242
13243        if (!result) {
13244          accumulator[key] = value;
13245          return;
13246        }
13247
13248        if (accumulator[key] === undefined) {
13249          accumulator[key] = {};
13250        }
13251
13252        accumulator[key][result[1]] = value;
13253      };
13254
13255    case 'bracket':
13256      return (key, value, accumulator) => {
13257        result = /(\[\])$/.exec(key);
13258        key = key.replace(/\[\]$/, '');
13259
13260        if (!result) {
13261          accumulator[key] = value;
13262          return;
13263        }
13264
13265        if (accumulator[key] === undefined) {
13266          accumulator[key] = [value];
13267          return;
13268        }
13269
13270        accumulator[key] = [].concat(accumulator[key], value);
13271      };
13272
13273    case 'comma':
13274    case 'separator':
13275      return (key, value, accumulator) => {
13276        const isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1;
13277        const newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);
13278        accumulator[key] = newValue;
13279      };
13280
13281    default:
13282      return (key, value, accumulator) => {
13283        if (accumulator[key] === undefined) {
13284          accumulator[key] = value;
13285          return;
13286        }
13287
13288        accumulator[key] = [].concat(accumulator[key], value);
13289      };
13290  }
13291}
13292
13293function validateArrayFormatSeparator(value) {
13294  if (typeof value !== 'string' || value.length !== 1) {
13295    throw new TypeError('arrayFormatSeparator must be single character string');
13296  }
13297}
13298
13299function encode(value, options) {
13300  if (options.encode) {
13301    return options.strict ? strictUriEncode(value) : encodeURIComponent(value);
13302  }
13303
13304  return value;
13305}
13306
13307function decode(value, options) {
13308  if (options.decode) {
13309    return decodeComponent(value);
13310  }
13311
13312  return value;
13313}
13314
13315function keysSorter(input) {
13316  if (Array.isArray(input)) {
13317    return input.sort();
13318  }
13319
13320  if (typeof input === 'object') {
13321    return keysSorter(Object.keys(input)).sort((a, b) => Number(a) - Number(b)).map(key => input[key]);
13322  }
13323
13324  return input;
13325}
13326
13327function removeHash(input) {
13328  const hashStart = input.indexOf('#');
13329
13330  if (hashStart !== -1) {
13331    input = input.slice(0, hashStart);
13332  }
13333
13334  return input;
13335}
13336
13337function getHash(url) {
13338  let hash = '';
13339  const hashStart = url.indexOf('#');
13340
13341  if (hashStart !== -1) {
13342    hash = url.slice(hashStart);
13343  }
13344
13345  return hash;
13346}
13347
13348function extract(input) {
13349  input = removeHash(input);
13350  const queryStart = input.indexOf('?');
13351
13352  if (queryStart === -1) {
13353    return '';
13354  }
13355
13356  return input.slice(queryStart + 1);
13357}
13358
13359function parseValue(value, options) {
13360  if (options.parseNumbers && !Number.isNaN(Number(value)) && typeof value === 'string' && value.trim() !== '') {
13361    value = Number(value);
13362  } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
13363    value = value.toLowerCase() === 'true';
13364  }
13365
13366  return value;
13367}
13368
13369function parse(input, options) {
13370  options = Object.assign({
13371    decode: true,
13372    sort: true,
13373    arrayFormat: 'none',
13374    arrayFormatSeparator: ',',
13375    parseNumbers: false,
13376    parseBooleans: false
13377  }, options);
13378  validateArrayFormatSeparator(options.arrayFormatSeparator);
13379  const formatter = parserForArrayFormat(options); // Create an object with no prototype
13380
13381  const ret = Object.create(null);
13382
13383  if (typeof input !== 'string') {
13384    return ret;
13385  }
13386
13387  input = input.trim().replace(/^[?#&]/, '');
13388
13389  if (!input) {
13390    return ret;
13391  }
13392
13393  for (const param of input.split('&')) {
13394    let [key, value] = splitOnFirst(options.decode ? param.replace(/\+/g, ' ') : param, '='); // Missing `=` should be `null`:
13395    // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
13396
13397    value = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);
13398    formatter(decode(key, options), value, ret);
13399  }
13400
13401  for (const key of Object.keys(ret)) {
13402    const value = ret[key];
13403
13404    if (typeof value === 'object' && value !== null) {
13405      for (const k of Object.keys(value)) {
13406        value[k] = parseValue(value[k], options);
13407      }
13408    } else {
13409      ret[key] = parseValue(value, options);
13410    }
13411  }
13412
13413  if (options.sort === false) {
13414    return ret;
13415  }
13416
13417  return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {
13418    const value = ret[key];
13419
13420    if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {
13421      // Sort object keys, not values
13422      result[key] = keysSorter(value);
13423    } else {
13424      result[key] = value;
13425    }
13426
13427    return result;
13428  }, Object.create(null));
13429}
13430
13431exports.extract = extract;
13432exports.parse = parse;
13433
13434exports.stringify = (object, options) => {
13435  if (!object) {
13436    return '';
13437  }
13438
13439  options = Object.assign({
13440    encode: true,
13441    strict: true,
13442    arrayFormat: 'none',
13443    arrayFormatSeparator: ','
13444  }, options);
13445  validateArrayFormatSeparator(options.arrayFormatSeparator);
13446
13447  const shouldFilter = key => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === '';
13448
13449  const formatter = encoderForArrayFormat(options);
13450  const objectCopy = {};
13451
13452  for (const key of Object.keys(object)) {
13453    if (!shouldFilter(key)) {
13454      objectCopy[key] = object[key];
13455    }
13456  }
13457
13458  const keys = Object.keys(objectCopy);
13459
13460  if (options.sort !== false) {
13461    keys.sort(options.sort);
13462  }
13463
13464  return keys.map(key => {
13465    const value = object[key];
13466
13467    if (value === undefined) {
13468      return '';
13469    }
13470
13471    if (value === null) {
13472      return encode(key, options);
13473    }
13474
13475    if (Array.isArray(value)) {
13476      return value.reduce(formatter(key), []).join('&');
13477    }
13478
13479    return encode(key, options) + '=' + encode(value, options);
13480  }).filter(x => x.length > 0).join('&');
13481};
13482
13483exports.parseUrl = (input, options) => {
13484  options = Object.assign({
13485    decode: true
13486  }, options);
13487  const [url, hash] = splitOnFirst(input, '#');
13488  return Object.assign({
13489    url: url.split('?')[0] || '',
13490    query: parse(extract(input), options)
13491  }, options && options.parseFragmentIdentifier && hash ? {
13492    fragmentIdentifier: decode(hash, options)
13493  } : {});
13494};
13495
13496exports.stringifyUrl = (input, options) => {
13497  options = Object.assign({
13498    encode: true,
13499    strict: true
13500  }, options);
13501  const url = removeHash(input.url).split('?')[0] || '';
13502  const queryFromUrl = exports.extract(input.url);
13503  const parsedQueryFromUrl = exports.parse(queryFromUrl, {
13504    sort: false
13505  });
13506  const query = Object.assign(parsedQueryFromUrl, input.query);
13507  let queryString = exports.stringify(query, options);
13508
13509  if (queryString) {
13510    queryString = `?${queryString}`;
13511  }
13512
13513  let hash = getHash(input.url);
13514
13515  if (input.fragmentIdentifier) {
13516    hash = `#${encode(input.fragmentIdentifier, options)}`;
13517  }
13518
13519  return `${url}${queryString}${hash}`;
13520};
13521
13522/***/ }),
13523
vendor: 721,738 bytes, lines 13524-17669
13524/***/ "./node_modules/react-dom/cjs/react-dom.development.js":
13525/*!*************************************************************!*\
13526  !*** ./node_modules/react-dom/cjs/react-dom.development.js ***!
13527  \*************************************************************/
13528/*! no static exports found */
13529/***/ (function(module, exports, __webpack_require__) {
13530
13531"use strict";
13532/** @license React v16.13.1
13533 * react-dom.development.js
13534 *
13535 * Copyright (c) Facebook, Inc. and its affiliates.
13536 *
13537 * This source code is licensed under the MIT license found in the
13538 * LICENSE file in the root directory of this source tree.
13539 */if(true){(function(){'use strict';var React=__webpack_require__(/*! react */ "./node_modules/react/index.js");var _assign=__webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");var Scheduler=__webpack_require__(/*! scheduler */ "./node_modules/scheduler/index.js");var checkPropTypes=__webpack_require__(/*! prop-types/checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");var tracing=__webpack_require__(/*! scheduler/tracing */ "./node_modules/scheduler/tracing.js");var ReactSharedInternals=React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;// Prevent newer renderers from RTE when used with older react package versions.
13540// Current owner and dispatcher used to share the same ref,
13541// but PR #14548 split them out to better support the react-debug-tools package.
13542if(!ReactSharedInternals.hasOwnProperty('ReactCurrentDispatcher')){ReactSharedInternals.ReactCurrentDispatcher={current:null};}if(!ReactSharedInternals.hasOwnProperty('ReactCurrentBatchConfig')){ReactSharedInternals.ReactCurrentBatchConfig={suspense:null};}// by calls to these methods by a Babel plugin.
13543//
13544// In PROD (or in packages without access to React internals),
13545// they are left as they are instead.
13546function warn(format){{for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}printWarning('warn',format,args);}}function error(format){{for(var _len2=arguments.length,args=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){args[_key2-1]=arguments[_key2];}printWarning('error',format,args);}}function printWarning(level,format,args){// When changing this logic, you might want to also
13547// update consoleWithStackDev.www.js as well.
13548{var hasExistingStack=args.length>0&&typeof args[args.length-1]==='string'&&args[args.length-1].indexOf('\n    in')===0;if(!hasExistingStack){var ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;var stack=ReactDebugCurrentFrame.getStackAddendum();if(stack!==''){format+='%s';args=args.concat([stack]);}}var argsWithFormat=args.map(function(item){return''+item;});// Careful: RN currently depends on this prefix
13549argsWithFormat.unshift('Warning: '+format);// We intentionally don't use spread (or .apply) directly because it
13550// breaks IE9: https://github.com/facebook/react/issues/13610
13551// eslint-disable-next-line react-internal/no-production-logging
13552Function.prototype.apply.call(console[level],console,argsWithFormat);try{// --- Welcome to debugging React ---
13553// This error was thrown as a convenience so that you can use this stack
13554// to find the callsite that caused this warning to fire.
13555var argIndex=0;var message='Warning: '+format.replace(/%s/g,function(){return args[argIndex++];});throw new Error(message);}catch(x){}}}if(!React){{throw Error("ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.");}}var invokeGuardedCallbackImpl=function(name,func,context,a,b,c,d,e,f){var funcArgs=Array.prototype.slice.call(arguments,3);try{func.apply(context,funcArgs);}catch(error){this.onError(error);}};{// In DEV mode, we swap out invokeGuardedCallback for a special version
13556// that plays more nicely with the browser's DevTools. The idea is to preserve
13557// "Pause on exceptions" behavior. Because React wraps all user-provided
13558// functions in invokeGuardedCallback, and the production version of
13559// invokeGuardedCallback uses a try-catch, all user exceptions are treated
13560// like caught exceptions, and the DevTools won't pause unless the developer
13561// takes the extra step of enabling pause on caught exceptions. This is
13562// unintuitive, though, because even though React has caught the error, from
13563// the developer's perspective, the error is uncaught.
13564//
13565// To preserve the expected "Pause on exceptions" behavior, we don't use a
13566// try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake
13567// DOM node, and call the user-provided callback from inside an event handler
13568// for that fake event. If the callback throws, the error is "captured" using
13569// a global event handler. But because the error happens in a different
13570// event loop context, it does not interrupt the normal program flow.
13571// Effectively, this gives us try-catch behavior without actually using
13572// try-catch. Neat!
13573// Check that the browser supports the APIs we need to implement our special
13574// DEV version of invokeGuardedCallback
13575if(typeof window!=='undefined'&&typeof window.dispatchEvent==='function'&&typeof document!=='undefined'&&typeof document.createEvent==='function'){var fakeNode=document.createElement('react');var invokeGuardedCallbackDev=function(name,func,context,a,b,c,d,e,f){// If document doesn't exist we know for sure we will crash in this method
13576// when we call document.createEvent(). However this can cause confusing
13577// errors: https://github.com/facebookincubator/create-react-app/issues/3482
13578// So we preemptively throw with a better message instead.
13579if(!(typeof document!=='undefined')){{throw Error("The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous.");}}var evt=document.createEvent('Event');// Keeps track of whether the user-provided callback threw an error. We
13580// set this to true at the beginning, then set it to false right after
13581// calling the function. If the function errors, `didError` will never be
13582// set to false. This strategy works even if the browser is flaky and
13583// fails to call our global error handler, because it doesn't rely on
13584// the error event at all.
13585var didError=true;// Keeps track of the value of window.event so that we can reset it
13586// during the callback to let user code access window.event in the
13587// browsers that support it.
13588var windowEvent=window.event;// Keeps track of the descriptor of window.event to restore it after event
13589// dispatching: https://github.com/facebook/react/issues/13688
13590var windowEventDescriptor=Object.getOwnPropertyDescriptor(window,'event');// Create an event handler for our fake event. We will synchronously
13591// dispatch our fake event using `dispatchEvent`. Inside the handler, we
13592// call the user-provided callback.
13593var funcArgs=Array.prototype.slice.call(arguments,3);function callCallback(){// We immediately remove the callback from event listeners so that
13594// nested `invokeGuardedCallback` calls do not clash. Otherwise, a
13595// nested call would trigger the fake event handlers of any call higher
13596// in the stack.
13597fakeNode.removeEventListener(evtType,callCallback,false);// We check for window.hasOwnProperty('event') to prevent the
13598// window.event assignment in both IE <= 10 as they throw an error
13599// "Member not found" in strict mode, and in Firefox which does not
13600// support window.event.
13601if(typeof window.event!=='undefined'&&window.hasOwnProperty('event')){window.event=windowEvent;}func.apply(context,funcArgs);didError=false;}// Create a global error event handler. We use this to capture the value
13602// that was thrown. It's possible that this error handler will fire more
13603// than once; for example, if non-React code also calls `dispatchEvent`
13604// and a handler for that event throws. We should be resilient to most of
13605// those cases. Even if our error event handler fires more than once, the
13606// last error event is always used. If the callback actually does error,
13607// we know that the last error event is the correct one, because it's not
13608// possible for anything else to have happened in between our callback
13609// erroring and the code that follows the `dispatchEvent` call below. If
13610// the callback doesn't error, but the error event was fired, we know to
13611// ignore it because `didError` will be false, as described above.
13612var error;// Use this to track whether the error event is ever called.
13613var didSetError=false;var isCrossOriginError=false;function handleWindowError(event){error=event.error;didSetError=true;if(error===null&&event.colno===0&&event.lineno===0){isCrossOriginError=true;}if(event.defaultPrevented){// Some other error handler has prevented default.
13614// Browsers silence the error report if this happens.
13615// We'll remember this to later decide whether to log it or not.
13616if(error!=null&&typeof error==='object'){try{error._suppressLogging=true;}catch(inner){// Ignore.
13617}}}}// Create a fake event type.
13618var evtType="react-"+(name?name:'invokeguardedcallback');// Attach our event handlers
13619window.addEventListener('error',handleWindowError);fakeNode.addEventListener(evtType,callCallback,false);// Synchronously dispatch our fake event. If the user-provided function
13620// errors, it will trigger our global error handler.
13621evt.initEvent(evtType,false,false);fakeNode.dispatchEvent(evt);if(windowEventDescriptor){Object.defineProperty(window,'event',windowEventDescriptor);}if(didError){if(!didSetError){// The callback errored, but the error event never fired.
13622error=new Error('An error was thrown inside one of your components, but React '+"doesn't know what it was. This is likely due to browser "+'flakiness. React does its best to preserve the "Pause on '+'exceptions" behavior of the DevTools, which requires some '+"DEV-mode only tricks. It's possible that these don't work in "+'your browser. Try triggering the error in production mode, '+'or switching to a modern browser. If you suspect that this is '+'actually an issue with React, please file an issue.');}else if(isCrossOriginError){error=new Error("A cross-origin error was thrown. React doesn't have access to "+'the actual error object in development. '+'See https://fb.me/react-crossorigin-error for more information.');}this.onError(error);}// Remove our event listeners
13623window.removeEventListener('error',handleWindowError);};invokeGuardedCallbackImpl=invokeGuardedCallbackDev;}}var invokeGuardedCallbackImpl$1=invokeGuardedCallbackImpl;var hasError=false;var caughtError=null;// Used by event system to capture/rethrow the first error.
13624var hasRethrowError=false;var rethrowError=null;var reporter={onError:function(error){hasError=true;caughtError=error;}};/**
13625 * Call a function while guarding against errors that happens within it.
13626 * Returns an error if it throws, otherwise null.
13627 *
13628 * In production, this is implemented using a try-catch. The reason we don't
13629 * use a try-catch directly is so that we can swap out a different
13630 * implementation in DEV mode.
13631 *
13632 * @param {String} name of the guard to use for logging or debugging
13633 * @param {Function} func The function to invoke
13634 * @param {*} context The context to use when calling the function
13635 * @param {...*} args Arguments for function
13636 */function invokeGuardedCallback(name,func,context,a,b,c,d,e,f){hasError=false;caughtError=null;invokeGuardedCallbackImpl$1.apply(reporter,arguments);}/**
13637 * Same as invokeGuardedCallback, but instead of returning an error, it stores
13638 * it in a global so it can be rethrown by `rethrowCaughtError` later.
13639 * TODO: See if caughtError and rethrowError can be unified.
13640 *
13641 * @param {String} name of the guard to use for logging or debugging
13642 * @param {Function} func The function to invoke
13643 * @param {*} context The context to use when calling the function
13644 * @param {...*} args Arguments for function
13645 */function invokeGuardedCallbackAndCatchFirstError(name,func,context,a,b,c,d,e,f){invokeGuardedCallback.apply(this,arguments);if(hasError){var error=clearCaughtError();if(!hasRethrowError){hasRethrowError=true;rethrowError=error;}}}/**
13646 * During execution of guarded functions we will capture the first error which
13647 * we will rethrow to be handled by the top level error handler.
13648 */function rethrowCaughtError(){if(hasRethrowError){var error=rethrowError;hasRethrowError=false;rethrowError=null;throw error;}}function hasCaughtError(){return hasError;}function clearCaughtError(){if(hasError){var error=caughtError;hasError=false;caughtError=null;return error;}else{{{throw Error("clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.");}}}}var getFiberCurrentPropsFromNode=null;var getInstanceFromNode=null;var getNodeFromInstance=null;function setComponentTree(getFiberCurrentPropsFromNodeImpl,getInstanceFromNodeImpl,getNodeFromInstanceImpl){getFiberCurrentPropsFromNode=getFiberCurrentPropsFromNodeImpl;getInstanceFromNode=getInstanceFromNodeImpl;getNodeFromInstance=getNodeFromInstanceImpl;{if(!getNodeFromInstance||!getInstanceFromNode){error('EventPluginUtils.setComponentTree(...): Injected '+'module is missing getNodeFromInstance or getInstanceFromNode.');}}}var validateEventDispatches;{validateEventDispatches=function(event){var dispatchListeners=event._dispatchListeners;var dispatchInstances=event._dispatchInstances;var listenersIsArr=Array.isArray(dispatchListeners);var listenersLen=listenersIsArr?dispatchListeners.length:dispatchListeners?1:0;var instancesIsArr=Array.isArray(dispatchInstances);var instancesLen=instancesIsArr?dispatchInstances.length:dispatchInstances?1:0;if(instancesIsArr!==listenersIsArr||instancesLen!==listenersLen){error('EventPluginUtils: Invalid `event`.');}};}/**
13649 * Dispatch the event to the listener.
13650 * @param {SyntheticEvent} event SyntheticEvent to handle
13651 * @param {function} listener Application-level callback
13652 * @param {*} inst Internal component instance
13653 */function executeDispatch(event,listener,inst){var type=event.type||'unknown-event';event.currentTarget=getNodeFromInstance(inst);invokeGuardedCallbackAndCatchFirstError(type,listener,undefined,event);event.currentTarget=null;}/**
13654 * Standard/simple iteration through an event's collected dispatches.
13655 */function executeDispatchesInOrder(event){var dispatchListeners=event._dispatchListeners;var dispatchInstances=event._dispatchInstances;{validateEventDispatches(event);}if(Array.isArray(dispatchListeners)){for(var i=0;i<dispatchListeners.length;i++){if(event.isPropagationStopped()){break;}// Listeners and Instances are two parallel arrays that are always in sync.
13656executeDispatch(event,dispatchListeners[i],dispatchInstances[i]);}}else if(dispatchListeners){executeDispatch(event,dispatchListeners,dispatchInstances);}event._dispatchListeners=null;event._dispatchInstances=null;}var FunctionComponent=0;var ClassComponent=1;var IndeterminateComponent=2;// Before we know whether it is function or class
13657var HostRoot=3;// Root of a host tree. Could be nested inside another node.
13658var HostPortal=4;// A subtree. Could be an entry point to a different renderer.
13659var HostComponent=5;var HostText=6;var Fragment=7;var Mode=8;var ContextConsumer=9;var ContextProvider=10;var ForwardRef=11;var Profiler=12;var SuspenseComponent=13;var MemoComponent=14;var SimpleMemoComponent=15;var LazyComponent=16;var IncompleteClassComponent=17;var DehydratedFragment=18;var SuspenseListComponent=19;var FundamentalComponent=20;var ScopeComponent=21;var Block=22;/**
13660 * Injectable ordering of event plugins.
13661 */var eventPluginOrder=null;/**
13662 * Injectable mapping from names to event plugin modules.
13663 */var namesToPlugins={};/**
13664 * Recomputes the plugin list using the injected plugins and plugin ordering.
13665 *
13666 * @private
13667 */function recomputePluginOrdering(){if(!eventPluginOrder){// Wait until an `eventPluginOrder` is injected.
13668return;}for(var pluginName in namesToPlugins){var pluginModule=namesToPlugins[pluginName];var pluginIndex=eventPluginOrder.indexOf(pluginName);if(!(pluginIndex>-1)){{throw Error("EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `"+pluginName+"`.");}}if(plugins[pluginIndex]){continue;}if(!pluginModule.extractEvents){{throw Error("EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `"+pluginName+"` does not.");}}plugins[pluginIndex]=pluginModule;var publishedEvents=pluginModule.eventTypes;for(var eventName in publishedEvents){if(!publishEventForPlugin(publishedEvents[eventName],pluginModule,eventName)){{throw Error("EventPluginRegistry: Failed to publish event `"+eventName+"` for plugin `"+pluginName+"`.");}}}}}/**
13669 * Publishes an event so that it can be dispatched by the supplied plugin.
13670 *
13671 * @param {object} dispatchConfig Dispatch configuration for the event.
13672 * @param {object} PluginModule Plugin publishing the event.
13673 * @return {boolean} True if the event was successfully published.
13674 * @private
13675 */function publishEventForPlugin(dispatchConfig,pluginModule,eventName){if(!!eventNameDispatchConfigs.hasOwnProperty(eventName)){{throw Error("EventPluginRegistry: More than one plugin attempted to publish the same event name, `"+eventName+"`.");}}eventNameDispatchConfigs[eventName]=dispatchConfig;var phasedRegistrationNames=dispatchConfig.phasedRegistrationNames;if(phasedRegistrationNames){for(var phaseName in phasedRegistrationNames){if(phasedRegistrationNames.hasOwnProperty(phaseName)){var phasedRegistrationName=phasedRegistrationNames[phaseName];publishRegistrationName(phasedRegistrationName,pluginModule,eventName);}}return true;}else if(dispatchConfig.registrationName){publishRegistrationName(dispatchConfig.registrationName,pluginModule,eventName);return true;}return false;}/**
13676 * Publishes a registration name that is used to identify dispatched events.
13677 *
13678 * @param {string} registrationName Registration name to add.
13679 * @param {object} PluginModule Plugin publishing the event.
13680 * @private
13681 */function publishRegistrationName(registrationName,pluginModule,eventName){if(!!registrationNameModules[registrationName]){{throw Error("EventPluginRegistry: More than one plugin attempted to publish the same registration name, `"+registrationName+"`.");}}registrationNameModules[registrationName]=pluginModule;registrationNameDependencies[registrationName]=pluginModule.eventTypes[eventName].dependencies;{var lowerCasedName=registrationName.toLowerCase();possibleRegistrationNames[lowerCasedName]=registrationName;if(registrationName==='onDoubleClick'){possibleRegistrationNames.ondblclick=registrationName;}}}/**
13682 * Registers plugins so that they can extract and dispatch events.
13683 */ /**
13684 * Ordered list of injected plugins.
13685 */var plugins=[];/**
13686 * Mapping from event name to dispatch config
13687 */var eventNameDispatchConfigs={};/**
13688 * Mapping from registration name to plugin module
13689 */var registrationNameModules={};/**
13690 * Mapping from registration name to event name
13691 */var registrationNameDependencies={};/**
13692 * Mapping from lowercase registration names to the properly cased version,
13693 * used to warn in the case of missing event handlers. Available
13694 * only in true.
13695 * @type {Object}
13696 */var possibleRegistrationNames={};// Trust the developer to only use possibleRegistrationNames in true
13697/**
13698 * Injects an ordering of plugins (by plugin name). This allows the ordering
13699 * to be decoupled from injection of the actual plugins so that ordering is
13700 * always deterministic regardless of packaging, on-the-fly injection, etc.
13701 *
13702 * @param {array} InjectedEventPluginOrder
13703 * @internal
13704 */function injectEventPluginOrder(injectedEventPluginOrder){if(!!eventPluginOrder){{throw Error("EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.");}}// Clone the ordering so it cannot be dynamically mutated.
13705eventPluginOrder=Array.prototype.slice.call(injectedEventPluginOrder);recomputePluginOrdering();}/**
13706 * Injects plugins to be used by plugin event system. The plugin names must be
13707 * in the ordering injected by `injectEventPluginOrder`.
13708 *
13709 * Plugins can be injected as part of page initialization or on-the-fly.
13710 *
13711 * @param {object} injectedNamesToPlugins Map from names to plugin modules.
13712 * @internal
13713 */function injectEventPluginsByName(injectedNamesToPlugins){var isOrderingDirty=false;for(var pluginName in injectedNamesToPlugins){if(!injectedNamesToPlugins.hasOwnProperty(pluginName)){continue;}var pluginModule=injectedNamesToPlugins[pluginName];if(!namesToPlugins.hasOwnProperty(pluginName)||namesToPlugins[pluginName]!==pluginModule){if(!!namesToPlugins[pluginName]){{throw Error("EventPluginRegistry: Cannot inject two different event plugins using the same name, `"+pluginName+"`.");}}namesToPlugins[pluginName]=pluginModule;isOrderingDirty=true;}}if(isOrderingDirty){recomputePluginOrdering();}}var canUseDOM=!!(typeof window!=='undefined'&&typeof window.document!=='undefined'&&typeof window.document.createElement!=='undefined');var PLUGIN_EVENT_SYSTEM=1;var IS_REPLAYED=1<<5;var IS_FIRST_ANCESTOR=1<<6;var restoreImpl=null;var restoreTarget=null;var restoreQueue=null;function restoreStateOfTarget(target){// We perform this translation at the end of the event loop so that we
13714// always receive the correct fiber here
13715var internalInstance=getInstanceFromNode(target);if(!internalInstance){// Unmounted
13716return;}if(!(typeof restoreImpl==='function')){{throw Error("setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue.");}}var stateNode=internalInstance.stateNode;// Guard against Fiber being unmounted.
13717if(stateNode){var _props=getFiberCurrentPropsFromNode(stateNode);restoreImpl(internalInstance.stateNode,internalInstance.type,_props);}}function setRestoreImplementation(impl){restoreImpl=impl;}function enqueueStateRestore(target){if(restoreTarget){if(restoreQueue){restoreQueue.push(target);}else{restoreQueue=[target];}}else{restoreTarget=target;}}function needsStateRestore(){return restoreTarget!==null||restoreQueue!==null;}function restoreStateIfNeeded(){if(!restoreTarget){return;}var target=restoreTarget;var queuedTargets=restoreQueue;restoreTarget=null;restoreQueue=null;restoreStateOfTarget(target);if(queuedTargets){for(var i=0;i<queuedTargets.length;i++){restoreStateOfTarget(queuedTargets[i]);}}}var enableProfilerTimer=true;// Trace which interactions trigger each commit.
13718var enableDeprecatedFlareAPI=false;// Experimental Host Component support.
13719var enableFundamentalAPI=false;// Experimental Scope support.
13720var warnAboutStringRefs=false;// the renderer. Such as when we're dispatching events or if third party
13721// libraries need to call batchedUpdates. Eventually, this API will go away when
13722// everything is batched by default. We'll then have a similar API to opt-out of
13723// scheduled work and instead do synchronous work.
13724// Defaults
13725var batchedUpdatesImpl=function(fn,bookkeeping){return fn(bookkeeping);};var discreteUpdatesImpl=function(fn,a,b,c,d){return fn(a,b,c,d);};var flushDiscreteUpdatesImpl=function(){};var batchedEventUpdatesImpl=batchedUpdatesImpl;var isInsideEventHandler=false;var isBatchingEventUpdates=false;function finishEventHandler(){// Here we wait until all updates have propagated, which is important
13726// when using controlled components within layers:
13727// https://github.com/facebook/react/issues/1698
13728// Then we restore state of any controlled component.
13729var controlledComponentsHavePendingUpdates=needsStateRestore();if(controlledComponentsHavePendingUpdates){// If a controlled event was fired, we may need to restore the state of
13730// the DOM node back to the controlled value. This is necessary when React
13731// bails out of the update without touching the DOM.
13732flushDiscreteUpdatesImpl();restoreStateIfNeeded();}}function batchedUpdates(fn,bookkeeping){if(isInsideEventHandler){// If we are currently inside another batch, we need to wait until it
13733// fully completes before restoring state.
13734return fn(bookkeeping);}isInsideEventHandler=true;try{return batchedUpdatesImpl(fn,bookkeeping);}finally{isInsideEventHandler=false;finishEventHandler();}}function batchedEventUpdates(fn,a,b){if(isBatchingEventUpdates){// If we are currently inside another batch, we need to wait until it
13735// fully completes before restoring state.
13736return fn(a,b);}isBatchingEventUpdates=true;try{return batchedEventUpdatesImpl(fn,a,b);}finally{isBatchingEventUpdates=false;finishEventHandler();}}// This is for the React Flare event system
13737function discreteUpdates(fn,a,b,c,d){var prevIsInsideEventHandler=isInsideEventHandler;isInsideEventHandler=true;try{return discreteUpdatesImpl(fn,a,b,c,d);}finally{isInsideEventHandler=prevIsInsideEventHandler;if(!isInsideEventHandler){finishEventHandler();}}}function flushDiscreteUpdatesIfNeeded(timeStamp){// event.timeStamp isn't overly reliable due to inconsistencies in
13738// how different browsers have historically provided the time stamp.
13739// Some browsers provide high-resolution time stamps for all events,
13740// some provide low-resolution time stamps for all events. FF < 52
13741// even mixes both time stamps together. Some browsers even report
13742// negative time stamps or time stamps that are 0 (iOS9) in some cases.
13743// Given we are only comparing two time stamps with equality (!==),
13744// we are safe from the resolution differences. If the time stamp is 0
13745// we bail-out of preventing the flush, which can affect semantics,
13746// such as if an earlier flush removes or adds event listeners that
13747// are fired in the subsequent flush. However, this is the same
13748// behaviour as we had before this change, so the risks are low.
13749if(!isInsideEventHandler&&!enableDeprecatedFlareAPI){flushDiscreteUpdatesImpl();}}function setBatchingImplementation(_batchedUpdatesImpl,_discreteUpdatesImpl,_flushDiscreteUpdatesImpl,_batchedEventUpdatesImpl){batchedUpdatesImpl=_batchedUpdatesImpl;discreteUpdatesImpl=_discreteUpdatesImpl;flushDiscreteUpdatesImpl=_flushDiscreteUpdatesImpl;batchedEventUpdatesImpl=_batchedEventUpdatesImpl;}var DiscreteEvent=0;var UserBlockingEvent=1;var ContinuousEvent=2;// A reserved attribute.
13750// It is handled by React separately and shouldn't be written to the DOM.
13751var RESERVED=0;// A simple string attribute.
13752// Attributes that aren't in the whitelist are presumed to have this type.
13753var STRING=1;// A string attribute that accepts booleans in React. In HTML, these are called
13754// "enumerated" attributes with "true" and "false" as possible values.
13755// When true, it should be set to a "true" string.
13756// When false, it should be set to a "false" string.
13757var BOOLEANISH_STRING=2;// A real boolean attribute.
13758// When true, it should be present (set either to an empty string or its name).
13759// When false, it should be omitted.
13760var BOOLEAN=3;// An attribute that can be used as a flag as well as with a value.
13761// When true, it should be present (set either to an empty string or its name).
13762// When false, it should be omitted.
13763// For any other value, should be present with that value.
13764var OVERLOADED_BOOLEAN=4;// An attribute that must be numeric or parse as a numeric.
13765// When falsy, it should be removed.
13766var NUMERIC=5;// An attribute that must be positive numeric or parse as a positive numeric.
13767// When falsy, it should be removed.
13768var POSITIVE_NUMERIC=6;/* eslint-disable max-len */var ATTRIBUTE_NAME_START_CHAR=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";/* eslint-enable max-len */var ATTRIBUTE_NAME_CHAR=ATTRIBUTE_NAME_START_CHAR+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";var ROOT_ATTRIBUTE_NAME='data-reactroot';var VALID_ATTRIBUTE_NAME_REGEX=new RegExp('^['+ATTRIBUTE_NAME_START_CHAR+']['+ATTRIBUTE_NAME_CHAR+']*$');var hasOwnProperty=Object.prototype.hasOwnProperty;var illegalAttributeNameCache={};var validatedAttributeNameCache={};function isAttributeNameSafe(attributeName){if(hasOwnProperty.call(validatedAttributeNameCache,attributeName)){return true;}if(hasOwnProperty.call(illegalAttributeNameCache,attributeName)){return false;}if(VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)){validatedAttributeNameCache[attributeName]=true;return true;}illegalAttributeNameCache[attributeName]=true;{error('Invalid attribute name: `%s`',attributeName);}return false;}function shouldIgnoreAttribute(name,propertyInfo,isCustomComponentTag){if(propertyInfo!==null){return propertyInfo.type===RESERVED;}if(isCustomComponentTag){return false;}if(name.length>2&&(name[0]==='o'||name[0]==='O')&&(name[1]==='n'||name[1]==='N')){return true;}return false;}function shouldRemoveAttributeWithWarning(name,value,propertyInfo,isCustomComponentTag){if(propertyInfo!==null&&propertyInfo.type===RESERVED){return false;}switch(typeof value){case'function':// $FlowIssue symbol is perfectly valid here
13769case'symbol':// eslint-disable-line
13770return true;case'boolean':{if(isCustomComponentTag){return false;}if(propertyInfo!==null){return!propertyInfo.acceptsBooleans;}else{var prefix=name.toLowerCase().slice(0,5);return prefix!=='data-'&&prefix!=='aria-';}}default:return false;}}function shouldRemoveAttribute(name,value,propertyInfo,isCustomComponentTag){if(value===null||typeof value==='undefined'){return true;}if(shouldRemoveAttributeWithWarning(name,value,propertyInfo,isCustomComponentTag)){return true;}if(isCustomComponentTag){return false;}if(propertyInfo!==null){switch(propertyInfo.type){case BOOLEAN:return!value;case OVERLOADED_BOOLEAN:return value===false;case NUMERIC:return isNaN(value);case POSITIVE_NUMERIC:return isNaN(value)||value<1;}}return false;}function getPropertyInfo(name){return properties.hasOwnProperty(name)?properties[name]:null;}function PropertyInfoRecord(name,type,mustUseProperty,attributeName,attributeNamespace,sanitizeURL){this.acceptsBooleans=type===BOOLEANISH_STRING||type===BOOLEAN||type===OVERLOADED_BOOLEAN;this.attributeName=attributeName;this.attributeNamespace=attributeNamespace;this.mustUseProperty=mustUseProperty;this.propertyName=name;this.type=type;this.sanitizeURL=sanitizeURL;}// When adding attributes to this list, be sure to also add them to
13771// the `possibleStandardNames` module to ensure casing and incorrect
13772// name warnings.
13773var properties={};// These props are reserved by React. They shouldn't be written to the DOM.
13774var reservedProps=['children','dangerouslySetInnerHTML',// TODO: This prevents the assignment of defaultValue to regular
13775// elements (not just inputs). Now that ReactDOMInput assigns to the
13776// defaultValue property -- do we need this?
13777'defaultValue','defaultChecked','innerHTML','suppressContentEditableWarning','suppressHydrationWarning','style'];reservedProps.forEach(function(name){properties[name]=new PropertyInfoRecord(name,RESERVED,false,// mustUseProperty
13778name,// attributeName
13779null,// attributeNamespace
13780false);});// A few React string attributes have a different name.
13781// This is a mapping from React prop names to the attribute names.
13782[['acceptCharset','accept-charset'],['className','class'],['htmlFor','for'],['httpEquiv','http-equiv']].forEach(function(_ref){var name=_ref[0],attributeName=_ref[1];properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty
13783attributeName,// attributeName
13784null,// attributeNamespace
13785false);});// These are "enumerated" HTML attributes that accept "true" and "false".
13786// In React, we let users pass `true` and `false` even though technically
13787// these aren't boolean attributes (they are coerced to strings).
13788['contentEditable','draggable','spellCheck','value'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEANISH_STRING,false,// mustUseProperty
13789name.toLowerCase(),// attributeName
13790null,// attributeNamespace
13791false);});// These are "enumerated" SVG attributes that accept "true" and "false".
13792// In React, we let users pass `true` and `false` even though technically
13793// these aren't boolean attributes (they are coerced to strings).
13794// Since these are SVG attributes, their attribute names are case-sensitive.
13795['autoReverse','externalResourcesRequired','focusable','preserveAlpha'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEANISH_STRING,false,// mustUseProperty
13796name,// attributeName
13797null,// attributeNamespace
13798false);});// These are HTML boolean attributes.
13799['allowFullScreen','async',// Note: there is a special case that prevents it from being written to the DOM
13800// on the client side because the browsers are inconsistent. Instead we call focus().
13801'autoFocus','autoPlay','controls','default','defer','disabled','disablePictureInPicture','formNoValidate','hidden','loop','noModule','noValidate','open','playsInline','readOnly','required','reversed','scoped','seamless',// Microdata
13802'itemScope'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEAN,false,// mustUseProperty
13803name.toLowerCase(),// attributeName
13804null,// attributeNamespace
13805false);});// These are the few React props that we set as DOM properties
13806// rather than attributes. These are all booleans.
13807['checked',// Note: `option.selected` is not updated if `select.multiple` is
13808// disabled with `removeAttribute`. We have special logic for handling this.
13809'multiple','muted','selected'// NOTE: if you add a camelCased prop to this list,
13810// you'll need to set attributeName to name.toLowerCase()
13811// instead in the assignment below.
13812].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEAN,true,// mustUseProperty
13813name,// attributeName
13814null,// attributeNamespace
13815false);});// These are HTML attributes that are "overloaded booleans": they behave like
13816// booleans, but can also accept a string value.
13817['capture','download'// NOTE: if you add a camelCased prop to this list,
13818// you'll need to set attributeName to name.toLowerCase()
13819// instead in the assignment below.
13820].forEach(function(name){properties[name]=new PropertyInfoRecord(name,OVERLOADED_BOOLEAN,false,// mustUseProperty
13821name,// attributeName
13822null,// attributeNamespace
13823false);});// These are HTML attributes that must be positive numbers.
13824['cols','rows','size','span'// NOTE: if you add a camelCased prop to this list,
13825// you'll need to set attributeName to name.toLowerCase()
13826// instead in the assignment below.
13827].forEach(function(name){properties[name]=new PropertyInfoRecord(name,POSITIVE_NUMERIC,false,// mustUseProperty
13828name,// attributeName
13829null,// attributeNamespace
13830false);});// These are HTML attributes that must be numbers.
13831['rowSpan','start'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,NUMERIC,false,// mustUseProperty
13832name.toLowerCase(),// attributeName
13833null,// attributeNamespace
13834false);});var CAMELIZE=/[\-\:]([a-z])/g;var capitalize=function(token){return token[1].toUpperCase();};// This is a list of all SVG attributes that need special casing, namespacing,
13835// or boolean value assignment. Regular attributes that just accept strings
13836// and have the same names are omitted, just like in the HTML whitelist.
13837// Some of these attributes can be hard to find. This list was created by
13838// scraping the MDN documentation.
13839['accent-height','alignment-baseline','arabic-form','baseline-shift','cap-height','clip-path','clip-rule','color-interpolation','color-interpolation-filters','color-profile','color-rendering','dominant-baseline','enable-background','fill-opacity','fill-rule','flood-color','flood-opacity','font-family','font-size','font-size-adjust','font-stretch','font-style','font-variant','font-weight','glyph-name','glyph-orientation-horizontal','glyph-orientation-vertical','horiz-adv-x','horiz-origin-x','image-rendering','letter-spacing','lighting-color','marker-end','marker-mid','marker-start','overline-position','overline-thickness','paint-order','panose-1','pointer-events','rendering-intent','shape-rendering','stop-color','stop-opacity','strikethrough-position','strikethrough-thickness','stroke-dasharray','stroke-dashoffset','stroke-linecap','stroke-linejoin','stroke-miterlimit','stroke-opacity','stroke-width','text-anchor','text-decoration','text-rendering','underline-position','underline-thickness','unicode-bidi','unicode-range','units-per-em','v-alphabetic','v-hanging','v-ideographic','v-mathematical','vector-effect','vert-adv-y','vert-origin-x','vert-origin-y','word-spacing','writing-mode','xmlns:xlink','x-height'// NOTE: if you add a camelCased prop to this list,
13840// you'll need to set attributeName to name.toLowerCase()
13841// instead in the assignment below.
13842].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty
13843attributeName,null,// attributeNamespace
13844false);});// String SVG attributes with the xlink namespace.
13845['xlink:actuate','xlink:arcrole','xlink:role','xlink:show','xlink:title','xlink:type'// NOTE: if you add a camelCased prop to this list,
13846// you'll need to set attributeName to name.toLowerCase()
13847// instead in the assignment below.
13848].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty
13849attributeName,'http://www.w3.org/1999/xlink',false);});// String SVG attributes with the xml namespace.
13850['xml:base','xml:lang','xml:space'// NOTE: if you add a camelCased prop to this list,
13851// you'll need to set attributeName to name.toLowerCase()
13852// instead in the assignment below.
13853].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty
13854attributeName,'http://www.w3.org/XML/1998/namespace',false);});// These attribute exists both in HTML and SVG.
13855// The attribute name is case-sensitive in SVG so we can't just use
13856// the React name like we do for attributes that exist only in HTML.
13857['tabIndex','crossOrigin'].forEach(function(attributeName){properties[attributeName]=new PropertyInfoRecord(attributeName,STRING,false,// mustUseProperty
13858attributeName.toLowerCase(),// attributeName
13859null,// attributeNamespace
13860false);});// These attributes accept URLs. These must not allow javascript: URLS.
13861// These will also need to accept Trusted Types object in the future.
13862var xlinkHref='xlinkHref';properties[xlinkHref]=new PropertyInfoRecord('xlinkHref',STRING,false,// mustUseProperty
13863'xlink:href','http://www.w3.org/1999/xlink',true);['src','href','action','formAction'].forEach(function(attributeName){properties[attributeName]=new PropertyInfoRecord(attributeName,STRING,false,// mustUseProperty
13864attributeName.toLowerCase(),// attributeName
13865null,// attributeNamespace
13866true);});var ReactDebugCurrentFrame=null;{ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;}// A javascript: URL can contain leading C0 control or \u0020 SPACE,
13867// and any newline or tab are filtered out as if they're not part of the URL.
13868// https://url.spec.whatwg.org/#url-parsing
13869// Tab or newline are defined as \r\n\t:
13870// https://infra.spec.whatwg.org/#ascii-tab-or-newline
13871// A C0 control is a code point in the range \u0000 NULL to \u001F
13872// INFORMATION SEPARATOR ONE, inclusive:
13873// https://infra.spec.whatwg.org/#c0-control-or-space
13874/* eslint-disable max-len */var isJavaScriptProtocol=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i;var didWarn=false;function sanitizeURL(url){{if(!didWarn&&isJavaScriptProtocol.test(url)){didWarn=true;error('A future version of React will block javascript: URLs as a security precaution. '+'Use event handlers instead if you can. If you need to generate unsafe HTML try '+'using dangerouslySetInnerHTML instead. React was passed %s.',JSON.stringify(url));}}}/**
13875 * Get the value for a property on a node. Only used in DEV for SSR validation.
13876 * The "expected" argument is used as a hint of what the expected value is.
13877 * Some properties have multiple equivalent values.
13878 */function getValueForProperty(node,name,expected,propertyInfo){{if(propertyInfo.mustUseProperty){var propertyName=propertyInfo.propertyName;return node[propertyName];}else{if(propertyInfo.sanitizeURL){// If we haven't fully disabled javascript: URLs, and if
13879// the hydration is successful of a javascript: URL, we
13880// still want to warn on the client.
13881sanitizeURL(''+expected);}var attributeName=propertyInfo.attributeName;var stringValue=null;if(propertyInfo.type===OVERLOADED_BOOLEAN){if(node.hasAttribute(attributeName)){var value=node.getAttribute(attributeName);if(value===''){return true;}if(shouldRemoveAttribute(name,expected,propertyInfo,false)){return value;}if(value===''+expected){return expected;}return value;}}else if(node.hasAttribute(attributeName)){if(shouldRemoveAttribute(name,expected,propertyInfo,false)){// We had an attribute but shouldn't have had one, so read it
13882// for the error message.
13883return node.getAttribute(attributeName);}if(propertyInfo.type===BOOLEAN){// If this was a boolean, it doesn't matter what the value is
13884// the fact that we have it is the same as the expected.
13885return expected;}// Even if this property uses a namespace we use getAttribute
13886// because we assume its namespaced name is the same as our config.
13887// To use getAttributeNS we need the local name which we don't have
13888// in our config atm.
13889stringValue=node.getAttribute(attributeName);}if(shouldRemoveAttribute(name,expected,propertyInfo,false)){return stringValue===null?expected:stringValue;}else if(stringValue===''+expected){return expected;}else{return stringValue;}}}}/**
13890 * Get the value for a attribute on a node. Only used in DEV for SSR validation.
13891 * The third argument is used as a hint of what the expected value is. Some
13892 * attributes have multiple equivalent values.
13893 */function getValueForAttribute(node,name,expected){{if(!isAttributeNameSafe(name)){return;}if(!node.hasAttribute(name)){return expected===undefined?undefined:null;}var value=node.getAttribute(name);if(value===''+expected){return expected;}return value;}}/**
13894 * Sets the value for a property on a node.
13895 *
13896 * @param {DOMElement} node
13897 * @param {string} name
13898 * @param {*} value
13899 */function setValueForProperty(node,name,value,isCustomComponentTag){var propertyInfo=getPropertyInfo(name);if(shouldIgnoreAttribute(name,propertyInfo,isCustomComponentTag)){return;}if(shouldRemoveAttribute(name,value,propertyInfo,isCustomComponentTag)){value=null;}// If the prop isn't in the special list, treat it as a simple attribute.
13900if(isCustomComponentTag||propertyInfo===null){if(isAttributeNameSafe(name)){var _attributeName=name;if(value===null){node.removeAttribute(_attributeName);}else{node.setAttribute(_attributeName,''+value);}}return;}var mustUseProperty=propertyInfo.mustUseProperty;if(mustUseProperty){var propertyName=propertyInfo.propertyName;if(value===null){var type=propertyInfo.type;node[propertyName]=type===BOOLEAN?false:'';}else{// Contrary to `setAttribute`, object properties are properly
13901// `toString`ed by IE8/9.
13902node[propertyName]=value;}return;}// The rest are treated as attributes with special cases.
13903var attributeName=propertyInfo.attributeName,attributeNamespace=propertyInfo.attributeNamespace;if(value===null){node.removeAttribute(attributeName);}else{var _type=propertyInfo.type;var attributeValue;if(_type===BOOLEAN||_type===OVERLOADED_BOOLEAN&&value===true){// If attribute type is boolean, we know for sure it won't be an execution sink
13904// and we won't require Trusted Type here.
13905attributeValue='';}else{// `setAttribute` with objects becomes only `[object]` in IE8/9,
13906// ('' + value) makes it output the correct toString()-value.
13907{attributeValue=''+value;}if(propertyInfo.sanitizeURL){sanitizeURL(attributeValue.toString());}}if(attributeNamespace){node.setAttributeNS(attributeNamespace,attributeName,attributeValue);}else{node.setAttribute(attributeName,attributeValue);}}}var BEFORE_SLASH_RE=/^(.*)[\\\/]/;function describeComponentFrame(name,source,ownerName){var sourceInfo='';if(source){var path=source.fileName;var fileName=path.replace(BEFORE_SLASH_RE,'');{// In DEV, include code for a common special case:
13908// prefer "folder/index.js" instead of just "index.js".
13909if(/^index\./.test(fileName)){var match=path.match(BEFORE_SLASH_RE);if(match){var pathBeforeSlash=match[1];if(pathBeforeSlash){var folderName=pathBeforeSlash.replace(BEFORE_SLASH_RE,'');fileName=folderName+'/'+fileName;}}}}sourceInfo=' (at '+fileName+':'+source.lineNumber+')';}else if(ownerName){sourceInfo=' (created by '+ownerName+')';}return'\n    in '+(name||'Unknown')+sourceInfo;}// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
13910// nor polyfill, then a plain number is used for performance.
13911var hasSymbol=typeof Symbol==='function'&&Symbol.for;var REACT_ELEMENT_TYPE=hasSymbol?Symbol.for('react.element'):0xeac7;var REACT_PORTAL_TYPE=hasSymbol?Symbol.for('react.portal'):0xeaca;var REACT_FRAGMENT_TYPE=hasSymbol?Symbol.for('react.fragment'):0xeacb;var REACT_STRICT_MODE_TYPE=hasSymbol?Symbol.for('react.strict_mode'):0xeacc;var REACT_PROFILER_TYPE=hasSymbol?Symbol.for('react.profiler'):0xead2;var REACT_PROVIDER_TYPE=hasSymbol?Symbol.for('react.provider'):0xeacd;var REACT_CONTEXT_TYPE=hasSymbol?Symbol.for('react.context'):0xeace;// TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
13912var REACT_CONCURRENT_MODE_TYPE=hasSymbol?Symbol.for('react.concurrent_mode'):0xeacf;var REACT_FORWARD_REF_TYPE=hasSymbol?Symbol.for('react.forward_ref'):0xead0;var REACT_SUSPENSE_TYPE=hasSymbol?Symbol.for('react.suspense'):0xead1;var REACT_SUSPENSE_LIST_TYPE=hasSymbol?Symbol.for('react.suspense_list'):0xead8;var REACT_MEMO_TYPE=hasSymbol?Symbol.for('react.memo'):0xead3;var REACT_LAZY_TYPE=hasSymbol?Symbol.for('react.lazy'):0xead4;var REACT_BLOCK_TYPE=hasSymbol?Symbol.for('react.block'):0xead9;var MAYBE_ITERATOR_SYMBOL=typeof Symbol==='function'&&Symbol.iterator;var FAUX_ITERATOR_SYMBOL='@@iterator';function getIteratorFn(maybeIterable){if(maybeIterable===null||typeof maybeIterable!=='object'){return null;}var maybeIterator=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL];if(typeof maybeIterator==='function'){return maybeIterator;}return null;}var Uninitialized=-1;var Pending=0;var Resolved=1;var Rejected=2;function refineResolvedLazyComponent(lazyComponent){return lazyComponent._status===Resolved?lazyComponent._result:null;}function initializeLazyComponentType(lazyComponent){if(lazyComponent._status===Uninitialized){lazyComponent._status=Pending;var ctor=lazyComponent._ctor;var thenable=ctor();lazyComponent._result=thenable;thenable.then(function(moduleObject){if(lazyComponent._status===Pending){var defaultExport=moduleObject.default;{if(defaultExport===undefined){error('lazy: Expected the result of a dynamic import() call. '+'Instead received: %s\n\nYour code should look like: \n  '+"const MyComponent = lazy(() => import('./MyComponent'))",moduleObject);}}lazyComponent._status=Resolved;lazyComponent._result=defaultExport;}},function(error){if(lazyComponent._status===Pending){lazyComponent._status=Rejected;lazyComponent._result=error;}});}}function getWrappedName(outerType,innerType,wrapperName){var functionName=innerType.displayName||innerType.name||'';return outerType.displayName||(functionName!==''?wrapperName+"("+functionName+")":wrapperName);}function getComponentName(type){if(type==null){// Host root, text node or just invalid type.
13913return null;}{if(typeof type.tag==='number'){error('Received an unexpected object in getComponentName(). '+'This is likely a bug in React. Please file an issue.');}}if(typeof type==='function'){return type.displayName||type.name||null;}if(typeof type==='string'){return type;}switch(type){case REACT_FRAGMENT_TYPE:return'Fragment';case REACT_PORTAL_TYPE:return'Portal';case REACT_PROFILER_TYPE:return"Profiler";case REACT_STRICT_MODE_TYPE:return'StrictMode';case REACT_SUSPENSE_TYPE:return'Suspense';case REACT_SUSPENSE_LIST_TYPE:return'SuspenseList';}if(typeof type==='object'){switch(type.$$typeof){case REACT_CONTEXT_TYPE:return'Context.Consumer';case REACT_PROVIDER_TYPE:return'Context.Provider';case REACT_FORWARD_REF_TYPE:return getWrappedName(type,type.render,'ForwardRef');case REACT_MEMO_TYPE:return getComponentName(type.type);case REACT_BLOCK_TYPE:return getComponentName(type.render);case REACT_LAZY_TYPE:{var thenable=type;var resolvedThenable=refineResolvedLazyComponent(thenable);if(resolvedThenable){return getComponentName(resolvedThenable);}break;}}}return null;}var ReactDebugCurrentFrame$1=ReactSharedInternals.ReactDebugCurrentFrame;function describeFiber(fiber){switch(fiber.tag){case HostRoot:case HostPortal:case HostText:case Fragment:case ContextProvider:case ContextConsumer:return'';default:var owner=fiber._debugOwner;var source=fiber._debugSource;var name=getComponentName(fiber.type);var ownerName=null;if(owner){ownerName=getComponentName(owner.type);}return describeComponentFrame(name,source,ownerName);}}function getStackByFiberInDevAndProd(workInProgress){var info='';var node=workInProgress;do{info+=describeFiber(node);node=node.return;}while(node);return info;}var current=null;var isRendering=false;function getCurrentFiberOwnerNameInDevOrNull(){{if(current===null){return null;}var owner=current._debugOwner;if(owner!==null&&typeof owner!=='undefined'){return getComponentName(owner.type);}}return null;}function getCurrentFiberStackInDev(){{if(current===null){return'';}// Safe because if current fiber exists, we are reconciling,
13914// and it is guaranteed to be the work-in-progress version.
13915return getStackByFiberInDevAndProd(current);}}function resetCurrentFiber(){{ReactDebugCurrentFrame$1.getCurrentStack=null;current=null;isRendering=false;}}function setCurrentFiber(fiber){{ReactDebugCurrentFrame$1.getCurrentStack=getCurrentFiberStackInDev;current=fiber;isRendering=false;}}function setIsRendering(rendering){{isRendering=rendering;}}// Flow does not allow string concatenation of most non-string types. To work
13916// around this limitation, we use an opaque type that can only be obtained by
13917// passing the value through getToStringValue first.
13918function toString(value){return''+value;}function getToStringValue(value){switch(typeof value){case'boolean':case'number':case'object':case'string':case'undefined':return value;default:// function, symbol are assigned as empty strings
13919return'';}}var ReactDebugCurrentFrame$2=null;var ReactControlledValuePropTypes={checkPropTypes:null};{ReactDebugCurrentFrame$2=ReactSharedInternals.ReactDebugCurrentFrame;var hasReadOnlyValue={button:true,checkbox:true,image:true,hidden:true,radio:true,reset:true,submit:true};var propTypes={value:function(props,propName,componentName){if(hasReadOnlyValue[props.type]||props.onChange||props.readOnly||props.disabled||props[propName]==null||enableDeprecatedFlareAPI){return null;}return new Error('You provided a `value` prop to a form field without an '+'`onChange` handler. This will render a read-only field. If '+'the field should be mutable use `defaultValue`. Otherwise, '+'set either `onChange` or `readOnly`.');},checked:function(props,propName,componentName){if(props.onChange||props.readOnly||props.disabled||props[propName]==null||enableDeprecatedFlareAPI){return null;}return new Error('You provided a `checked` prop to a form field without an '+'`onChange` handler. This will render a read-only field. If '+'the field should be mutable use `defaultChecked`. Otherwise, '+'set either `onChange` or `readOnly`.');}};/**
13920   * Provide a linked `value` attribute for controlled forms. You should not use
13921   * this outside of the ReactDOM controlled form components.
13922   */ReactControlledValuePropTypes.checkPropTypes=function(tagName,props){checkPropTypes(propTypes,props,'prop',tagName,ReactDebugCurrentFrame$2.getStackAddendum);};}function isCheckable(elem){var type=elem.type;var nodeName=elem.nodeName;return nodeName&&nodeName.toLowerCase()==='input'&&(type==='checkbox'||type==='radio');}function getTracker(node){return node._valueTracker;}function detachTracker(node){node._valueTracker=null;}function getValueFromNode(node){var value='';if(!node){return value;}if(isCheckable(node)){value=node.checked?'true':'false';}else{value=node.value;}return value;}function trackValueOnNode(node){var valueField=isCheckable(node)?'checked':'value';var descriptor=Object.getOwnPropertyDescriptor(node.constructor.prototype,valueField);var currentValue=''+node[valueField];// if someone has already defined a value or Safari, then bail
13923// and don't track value will cause over reporting of changes,
13924// but it's better then a hard failure
13925// (needed for certain tests that spyOn input values and Safari)
13926if(node.hasOwnProperty(valueField)||typeof descriptor==='undefined'||typeof descriptor.get!=='function'||typeof descriptor.set!=='function'){return;}var get=descriptor.get,set=descriptor.set;Object.defineProperty(node,valueField,{configurable:true,get:function(){return get.call(this);},set:function(value){currentValue=''+value;set.call(this,value);}});// We could've passed this the first time
13927// but it triggers a bug in IE11 and Edge 14/15.
13928// Calling defineProperty() again should be equivalent.
13929// https://github.com/facebook/react/issues/11768
13930Object.defineProperty(node,valueField,{enumerable:descriptor.enumerable});var tracker={getValue:function(){return currentValue;},setValue:function(value){currentValue=''+value;},stopTracking:function(){detachTracker(node);delete node[valueField];}};return tracker;}function track(node){if(getTracker(node)){return;}// TODO: Once it's just Fiber we can move this to node._wrapperState
13931node._valueTracker=trackValueOnNode(node);}function updateValueIfChanged(node){if(!node){return false;}var tracker=getTracker(node);// if there is no tracker at this point it's unlikely
13932// that trying again will succeed
13933if(!tracker){return true;}var lastValue=tracker.getValue();var nextValue=getValueFromNode(node);if(nextValue!==lastValue){tracker.setValue(nextValue);return true;}return false;}var didWarnValueDefaultValue=false;var didWarnCheckedDefaultChecked=false;var didWarnControlledToUncontrolled=false;var didWarnUncontrolledToControlled=false;function isControlled(props){var usesChecked=props.type==='checkbox'||props.type==='radio';return usesChecked?props.checked!=null:props.value!=null;}/**
13934 * Implements an <input> host component that allows setting these optional
13935 * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.
13936 *
13937 * If `checked` or `value` are not supplied (or null/undefined), user actions
13938 * that affect the checked state or value will trigger updates to the element.
13939 *
13940 * If they are supplied (and not null/undefined), the rendered element will not
13941 * trigger updates to the element. Instead, the props must change in order for
13942 * the rendered element to be updated.
13943 *
13944 * The rendered element will be initialized as unchecked (or `defaultChecked`)
13945 * with an empty value (or `defaultValue`).
13946 *
13947 * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html
13948 */function getHostProps(element,props){var node=element;var checked=props.checked;var hostProps=_assign({},props,{defaultChecked:undefined,defaultValue:undefined,value:undefined,checked:checked!=null?checked:node._wrapperState.initialChecked});return hostProps;}function initWrapperState(element,props){{ReactControlledValuePropTypes.checkPropTypes('input',props);if(props.checked!==undefined&&props.defaultChecked!==undefined&&!didWarnCheckedDefaultChecked){error('%s contains an input of type %s with both checked and defaultChecked props. '+'Input elements must be either controlled or uncontrolled '+'(specify either the checked prop, or the defaultChecked prop, but not '+'both). Decide between using a controlled or uncontrolled input '+'element and remove one of these props. More info: '+'https://fb.me/react-controlled-components',getCurrentFiberOwnerNameInDevOrNull()||'A component',props.type);didWarnCheckedDefaultChecked=true;}if(props.value!==undefined&&props.defaultValue!==undefined&&!didWarnValueDefaultValue){error('%s contains an input of type %s with both value and defaultValue props. '+'Input elements must be either controlled or uncontrolled '+'(specify either the value prop, or the defaultValue prop, but not '+'both). Decide between using a controlled or uncontrolled input '+'element and remove one of these props. More info: '+'https://fb.me/react-controlled-components',getCurrentFiberOwnerNameInDevOrNull()||'A component',props.type);didWarnValueDefaultValue=true;}}var node=element;var defaultValue=props.defaultValue==null?'':props.defaultValue;node._wrapperState={initialChecked:props.checked!=null?props.checked:props.defaultChecked,initialValue:getToStringValue(props.value!=null?props.value:defaultValue),controlled:isControlled(props)};}function updateChecked(element,props){var node=element;var checked=props.checked;if(checked!=null){setValueForProperty(node,'checked',checked,false);}}function updateWrapper(element,props){var node=element;{var controlled=isControlled(props);if(!node._wrapperState.controlled&&controlled&&!didWarnUncontrolledToControlled){error('A component is changing an uncontrolled input of type %s to be controlled. '+'Input elements should not switch from uncontrolled to controlled (or vice versa). '+'Decide between using a controlled or uncontrolled input '+'element for the lifetime of the component. More info: https://fb.me/react-controlled-components',props.type);didWarnUncontrolledToControlled=true;}if(node._wrapperState.controlled&&!controlled&&!didWarnControlledToUncontrolled){error('A component is changing a controlled input of type %s to be uncontrolled. '+'Input elements should not switch from controlled to uncontrolled (or vice versa). '+'Decide between using a controlled or uncontrolled input '+'element for the lifetime of the component. More info: https://fb.me/react-controlled-components',props.type);didWarnControlledToUncontrolled=true;}}updateChecked(element,props);var value=getToStringValue(props.value);var type=props.type;if(value!=null){if(type==='number'){if(value===0&&node.value===''||// We explicitly want to coerce to number here if possible.
13949// eslint-disable-next-line
13950node.value!=value){node.value=toString(value);}}else if(node.value!==toString(value)){node.value=toString(value);}}else if(type==='submit'||type==='reset'){// Submit/reset inputs need the attribute removed completely to avoid
13951// blank-text buttons.
13952node.removeAttribute('value');return;}{// When syncing the value attribute, the value comes from a cascade of
13953// properties:
13954//  1. The value React property
13955//  2. The defaultValue React property
13956//  3. Otherwise there should be no change
13957if(props.hasOwnProperty('value')){setDefaultValue(node,props.type,value);}else if(props.hasOwnProperty('defaultValue')){setDefaultValue(node,props.type,getToStringValue(props.defaultValue));}}{// When syncing the checked attribute, it only changes when it needs
13958// to be removed, such as transitioning from a checkbox into a text input
13959if(props.checked==null&&props.defaultChecked!=null){node.defaultChecked=!!props.defaultChecked;}}}function postMountWrapper(element,props,isHydrating){var node=element;// Do not assign value if it is already set. This prevents user text input
13960// from being lost during SSR hydration.
13961if(props.hasOwnProperty('value')||props.hasOwnProperty('defaultValue')){var type=props.type;var isButton=type==='submit'||type==='reset';// Avoid setting value attribute on submit/reset inputs as it overrides the
13962// default value provided by the browser. See: #12872
13963if(isButton&&(props.value===undefined||props.value===null)){return;}var initialValue=toString(node._wrapperState.initialValue);// Do not assign value if it is already set. This prevents user text input
13964// from being lost during SSR hydration.
13965if(!isHydrating){{// When syncing the value attribute, the value property should use
13966// the wrapperState._initialValue property. This uses:
13967//
13968//   1. The value React property when present
13969//   2. The defaultValue React property when present
13970//   3. An empty string
13971if(initialValue!==node.value){node.value=initialValue;}}}{// Otherwise, the value attribute is synchronized to the property,
13972// so we assign defaultValue to the same thing as the value property
13973// assignment step above.
13974node.defaultValue=initialValue;}}// Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug
13975// this is needed to work around a chrome bug where setting defaultChecked
13976// will sometimes influence the value of checked (even after detachment).
13977// Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416
13978// We need to temporarily unset name to avoid disrupting radio button groups.
13979var name=node.name;if(name!==''){node.name='';}{// When syncing the checked attribute, both the checked property and
13980// attribute are assigned at the same time using defaultChecked. This uses:
13981//
13982//   1. The checked React property when present
13983//   2. The defaultChecked React property when present
13984//   3. Otherwise, false
13985node.defaultChecked=!node.defaultChecked;node.defaultChecked=!!node._wrapperState.initialChecked;}if(name!==''){node.name=name;}}function restoreControlledState(element,props){var node=element;updateWrapper(node,props);updateNamedCousins(node,props);}function updateNamedCousins(rootNode,props){var name=props.name;if(props.type==='radio'&&name!=null){var queryRoot=rootNode;while(queryRoot.parentNode){queryRoot=queryRoot.parentNode;}// If `rootNode.form` was non-null, then we could try `form.elements`,
13986// but that sometimes behaves strangely in IE8. We could also try using
13987// `form.getElementsByName`, but that will only return direct children
13988// and won't include inputs that use the HTML5 `form=` attribute. Since
13989// the input might not even be in a form. It might not even be in the
13990// document. Let's just use the local `querySelectorAll` to ensure we don't
13991// miss anything.
13992var group=queryRoot.querySelectorAll('input[name='+JSON.stringify(''+name)+'][type="radio"]');for(var i=0;i<group.length;i++){var otherNode=group[i];if(otherNode===rootNode||otherNode.form!==rootNode.form){continue;}// This will throw if radio buttons rendered by different copies of React
13993// and the same name are rendered into the same form (same as #1939).
13994// That's probably okay; we don't support it just as we don't support
13995// mixing React radio buttons with non-React ones.
13996var otherProps=getFiberCurrentPropsFromNode$1(otherNode);if(!otherProps){{throw Error("ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.");}}// We need update the tracked value on the named cousin since the value
13997// was changed but the input saw no event or value set
13998updateValueIfChanged(otherNode);// If this is a controlled radio button group, forcing the input that
13999// was previously checked to update will cause it to be come re-checked
14000// as appropriate.
14001updateWrapper(otherNode,otherProps);}}}// In Chrome, assigning defaultValue to certain input types triggers input validation.
14002// For number inputs, the display value loses trailing decimal points. For email inputs,
14003// Chrome raises "The specified value <x> is not a valid email address".
14004//
14005// Here we check to see if the defaultValue has actually changed, avoiding these problems
14006// when the user is inputting text
14007//
14008// https://github.com/facebook/react/issues/7253
14009function setDefaultValue(node,type,value){if(// Focused number inputs synchronize on blur. See ChangeEventPlugin.js
14010type!=='number'||node.ownerDocument.activeElement!==node){if(value==null){node.defaultValue=toString(node._wrapperState.initialValue);}else if(node.defaultValue!==toString(value)){node.defaultValue=toString(value);}}}var didWarnSelectedSetOnOption=false;var didWarnInvalidChild=false;function flattenChildren(children){var content='';// Flatten children. We'll warn if they are invalid
14011// during validateProps() which runs for hydration too.
14012// Note that this would throw on non-element objects.
14013// Elements are stringified (which is normally irrelevant
14014// but matters for <fbt>).
14015React.Children.forEach(children,function(child){if(child==null){return;}content+=child;// Note: we don't warn about invalid children here.
14016// Instead, this is done separately below so that
14017// it happens during the hydration codepath too.
14018});return content;}/**
14019 * Implements an <option> host component that warns when `selected` is set.
14020 */function validateProps(element,props){{// This mirrors the codepath above, but runs for hydration too.
14021// Warn about invalid children here so that client and hydration are consistent.
14022// TODO: this seems like it could cause a DEV-only throw for hydration
14023// if children contains a non-element object. We should try to avoid that.
14024if(typeof props.children==='object'&&props.children!==null){React.Children.forEach(props.children,function(child){if(child==null){return;}if(typeof child==='string'||typeof child==='number'){return;}if(typeof child.type!=='string'){return;}if(!didWarnInvalidChild){didWarnInvalidChild=true;error('Only strings and numbers are supported as <option> children.');}});}// TODO: Remove support for `selected` in <option>.
14025if(props.selected!=null&&!didWarnSelectedSetOnOption){error('Use the `defaultValue` or `value` props on <select> instead of '+'setting `selected` on <option>.');didWarnSelectedSetOnOption=true;}}}function postMountWrapper$1(element,props){// value="" should make a value attribute (#6219)
14026if(props.value!=null){element.setAttribute('value',toString(getToStringValue(props.value)));}}function getHostProps$1(element,props){var hostProps=_assign({children:undefined},props);var content=flattenChildren(props.children);if(content){hostProps.children=content;}return hostProps;}var didWarnValueDefaultValue$1;{didWarnValueDefaultValue$1=false;}function getDeclarationErrorAddendum(){var ownerName=getCurrentFiberOwnerNameInDevOrNull();if(ownerName){return'\n\nCheck the render method of `'+ownerName+'`.';}return'';}var valuePropNames=['value','defaultValue'];/**
14027 * Validation function for `value` and `defaultValue`.
14028 */function checkSelectPropTypes(props){{ReactControlledValuePropTypes.checkPropTypes('select',props);for(var i=0;i<valuePropNames.length;i++){var propName=valuePropNames[i];if(props[propName]==null){continue;}var isArray=Array.isArray(props[propName]);if(props.multiple&&!isArray){error('The `%s` prop supplied to <select> must be an array if '+'`multiple` is true.%s',propName,getDeclarationErrorAddendum());}else if(!props.multiple&&isArray){error('The `%s` prop supplied to <select> must be a scalar '+'value if `multiple` is false.%s',propName,getDeclarationErrorAddendum());}}}}function updateOptions(node,multiple,propValue,setDefaultSelected){var options=node.options;if(multiple){var selectedValues=propValue;var selectedValue={};for(var i=0;i<selectedValues.length;i++){// Prefix to avoid chaos with special keys.
14029selectedValue['$'+selectedValues[i]]=true;}for(var _i=0;_i<options.length;_i++){var selected=selectedValue.hasOwnProperty('$'+options[_i].value);if(options[_i].selected!==selected){options[_i].selected=selected;}if(selected&&setDefaultSelected){options[_i].defaultSelected=true;}}}else{// Do not set `select.value` as exact behavior isn't consistent across all
14030// browsers for all cases.
14031var _selectedValue=toString(getToStringValue(propValue));var defaultSelected=null;for(var _i2=0;_i2<options.length;_i2++){if(options[_i2].value===_selectedValue){options[_i2].selected=true;if(setDefaultSelected){options[_i2].defaultSelected=true;}return;}if(defaultSelected===null&&!options[_i2].disabled){defaultSelected=options[_i2];}}if(defaultSelected!==null){defaultSelected.selected=true;}}}/**
14032 * Implements a <select> host component that allows optionally setting the
14033 * props `value` and `defaultValue`. If `multiple` is false, the prop must be a
14034 * stringable. If `multiple` is true, the prop must be an array of stringables.
14035 *
14036 * If `value` is not supplied (or null/undefined), user actions that change the
14037 * selected option will trigger updates to the rendered options.
14038 *
14039 * If it is supplied (and not null/undefined), the rendered options will not
14040 * update in response to user actions. Instead, the `value` prop must change in
14041 * order for the rendered options to update.
14042 *
14043 * If `defaultValue` is provided, any options with the supplied values will be
14044 * selected.
14045 */function getHostProps$2(element,props){return _assign({},props,{value:undefined});}function initWrapperState$1(element,props){var node=element;{checkSelectPropTypes(props);}node._wrapperState={wasMultiple:!!props.multiple};{if(props.value!==undefined&&props.defaultValue!==undefined&&!didWarnValueDefaultValue$1){error('Select elements must be either controlled or uncontrolled '+'(specify either the value prop, or the defaultValue prop, but not '+'both). Decide between using a controlled or uncontrolled select '+'element and remove one of these props. More info: '+'https://fb.me/react-controlled-components');didWarnValueDefaultValue$1=true;}}}function postMountWrapper$2(element,props){var node=element;node.multiple=!!props.multiple;var value=props.value;if(value!=null){updateOptions(node,!!props.multiple,value,false);}else if(props.defaultValue!=null){updateOptions(node,!!props.multiple,props.defaultValue,true);}}function postUpdateWrapper(element,props){var node=element;var wasMultiple=node._wrapperState.wasMultiple;node._wrapperState.wasMultiple=!!props.multiple;var value=props.value;if(value!=null){updateOptions(node,!!props.multiple,value,false);}else if(wasMultiple!==!!props.multiple){// For simplicity, reapply `defaultValue` if `multiple` is toggled.
14046if(props.defaultValue!=null){updateOptions(node,!!props.multiple,props.defaultValue,true);}else{// Revert the select back to its default unselected state.
14047updateOptions(node,!!props.multiple,props.multiple?[]:'',false);}}}function restoreControlledState$1(element,props){var node=element;var value=props.value;if(value!=null){updateOptions(node,!!props.multiple,value,false);}}var didWarnValDefaultVal=false;/**
14048 * Implements a <textarea> host component that allows setting `value`, and
14049 * `defaultValue`. This differs from the traditional DOM API because value is
14050 * usually set as PCDATA children.
14051 *
14052 * If `value` is not supplied (or null/undefined), user actions that affect the
14053 * value will trigger updates to the element.
14054 *
14055 * If `value` is supplied (and not null/undefined), the rendered element will
14056 * not trigger updates to the element. Instead, the `value` prop must change in
14057 * order for the rendered element to be updated.
14058 *
14059 * The rendered element will be initialized with an empty value, the prop
14060 * `defaultValue` if specified, or the children content (deprecated).
14061 */function getHostProps$3(element,props){var node=element;if(!(props.dangerouslySetInnerHTML==null)){{throw Error("`dangerouslySetInnerHTML` does not make sense on <textarea>.");}}// Always set children to the same thing. In IE9, the selection range will
14062// get reset if `textContent` is mutated.  We could add a check in setTextContent
14063// to only set the value if/when the value differs from the node value (which would
14064// completely solve this IE9 bug), but Sebastian+Sophie seemed to like this
14065// solution. The value can be a boolean or object so that's why it's forced
14066// to be a string.
14067var hostProps=_assign({},props,{value:undefined,defaultValue:undefined,children:toString(node._wrapperState.initialValue)});return hostProps;}function initWrapperState$2(element,props){var node=element;{ReactControlledValuePropTypes.checkPropTypes('textarea',props);if(props.value!==undefined&&props.defaultValue!==undefined&&!didWarnValDefaultVal){error('%s contains a textarea with both value and defaultValue props. '+'Textarea elements must be either controlled or uncontrolled '+'(specify either the value prop, or the defaultValue prop, but not '+'both). Decide between using a controlled or uncontrolled textarea '+'and remove one of these props. More info: '+'https://fb.me/react-controlled-components',getCurrentFiberOwnerNameInDevOrNull()||'A component');didWarnValDefaultVal=true;}}var initialValue=props.value;// Only bother fetching default value if we're going to use it
14068if(initialValue==null){var children=props.children,defaultValue=props.defaultValue;if(children!=null){{error('Use the `defaultValue` or `value` props instead of setting '+'children on <textarea>.');}{if(!(defaultValue==null)){{throw Error("If you supply `defaultValue` on a <textarea>, do not pass children.");}}if(Array.isArray(children)){if(!(children.length<=1)){{throw Error("<textarea> can only have at most one child.");}}children=children[0];}defaultValue=children;}}if(defaultValue==null){defaultValue='';}initialValue=defaultValue;}node._wrapperState={initialValue:getToStringValue(initialValue)};}function updateWrapper$1(element,props){var node=element;var value=getToStringValue(props.value);var defaultValue=getToStringValue(props.defaultValue);if(value!=null){// Cast `value` to a string to ensure the value is set correctly. While
14069// browsers typically do this as necessary, jsdom doesn't.
14070var newValue=toString(value);// To avoid side effects (such as losing text selection), only set value if changed
14071if(newValue!==node.value){node.value=newValue;}if(props.defaultValue==null&&node.defaultValue!==newValue){node.defaultValue=newValue;}}if(defaultValue!=null){node.defaultValue=toString(defaultValue);}}function postMountWrapper$3(element,props){var node=element;// This is in postMount because we need access to the DOM node, which is not
14072// available until after the component has mounted.
14073var textContent=node.textContent;// Only set node.value if textContent is equal to the expected
14074// initial value. In IE10/IE11 there is a bug where the placeholder attribute
14075// will populate textContent as well.
14076// https://developer.microsoft.com/microsoft-edge/platform/issues/101525/
14077if(textContent===node._wrapperState.initialValue){if(textContent!==''&&textContent!==null){node.value=textContent;}}}function restoreControlledState$2(element,props){// DOM component is still mounted; update
14078updateWrapper$1(element,props);}var HTML_NAMESPACE='http://www.w3.org/1999/xhtml';var MATH_NAMESPACE='http://www.w3.org/1998/Math/MathML';var SVG_NAMESPACE='http://www.w3.org/2000/svg';var Namespaces={html:HTML_NAMESPACE,mathml:MATH_NAMESPACE,svg:SVG_NAMESPACE};// Assumes there is no parent namespace.
14079function getIntrinsicNamespace(type){switch(type){case'svg':return SVG_NAMESPACE;case'math':return MATH_NAMESPACE;default:return HTML_NAMESPACE;}}function getChildNamespace(parentNamespace,type){if(parentNamespace==null||parentNamespace===HTML_NAMESPACE){// No (or default) parent namespace: potential entry point.
14080return getIntrinsicNamespace(type);}if(parentNamespace===SVG_NAMESPACE&&type==='foreignObject'){// We're leaving SVG.
14081return HTML_NAMESPACE;}// By default, pass namespace below.
14082return parentNamespace;}/* globals MSApp */ /**
14083 * Create a function which has 'unsafe' privileges (required by windows8 apps)
14084 */var createMicrosoftUnsafeLocalFunction=function(func){if(typeof MSApp!=='undefined'&&MSApp.execUnsafeLocalFunction){return function(arg0,arg1,arg2,arg3){MSApp.execUnsafeLocalFunction(function(){return func(arg0,arg1,arg2,arg3);});};}else{return func;}};var reusableSVGContainer;/**
14085 * Set the innerHTML property of a node
14086 *
14087 * @param {DOMElement} node
14088 * @param {string} html
14089 * @internal
14090 */var setInnerHTML=createMicrosoftUnsafeLocalFunction(function(node,html){if(node.namespaceURI===Namespaces.svg){if(!('innerHTML'in node)){// IE does not have innerHTML for SVG nodes, so instead we inject the
14091// new markup in a temp node and then move the child nodes across into
14092// the target node
14093reusableSVGContainer=reusableSVGContainer||document.createElement('div');reusableSVGContainer.innerHTML='<svg>'+html.valueOf().toString()+'</svg>';var svgNode=reusableSVGContainer.firstChild;while(node.firstChild){node.removeChild(node.firstChild);}while(svgNode.firstChild){node.appendChild(svgNode.firstChild);}return;}}node.innerHTML=html;});/**
14094 * HTML nodeType values that represent the type of the node
14095 */var ELEMENT_NODE=1;var TEXT_NODE=3;var COMMENT_NODE=8;var DOCUMENT_NODE=9;var DOCUMENT_FRAGMENT_NODE=11;/**
14096 * Set the textContent property of a node. For text updates, it's faster
14097 * to set the `nodeValue` of the Text node directly instead of using
14098 * `.textContent` which will remove the existing node and create a new one.
14099 *
14100 * @param {DOMElement} node
14101 * @param {string} text
14102 * @internal
14103 */var setTextContent=function(node,text){if(text){var firstChild=node.firstChild;if(firstChild&&firstChild===node.lastChild&&firstChild.nodeType===TEXT_NODE){firstChild.nodeValue=text;return;}}node.textContent=text;};// Do not use the below two methods directly!
14104// Instead use constants exported from DOMTopLevelEventTypes in ReactDOM.
14105// (It is the only module that is allowed to access these methods.)
14106function unsafeCastStringToDOMTopLevelType(topLevelType){return topLevelType;}function unsafeCastDOMTopLevelTypeToString(topLevelType){return topLevelType;}/**
14107 * Generate a mapping of standard vendor prefixes using the defined style property and event name.
14108 *
14109 * @param {string} styleProp
14110 * @param {string} eventName
14111 * @returns {object}
14112 */function makePrefixMap(styleProp,eventName){var prefixes={};prefixes[styleProp.toLowerCase()]=eventName.toLowerCase();prefixes['Webkit'+styleProp]='webkit'+eventName;prefixes['Moz'+styleProp]='moz'+eventName;return prefixes;}/**
14113 * A list of event names to a configurable list of vendor prefixes.
14114 */var vendorPrefixes={animationend:makePrefixMap('Animation','AnimationEnd'),animationiteration:makePrefixMap('Animation','AnimationIteration'),animationstart:makePrefixMap('Animation','AnimationStart'),transitionend:makePrefixMap('Transition','TransitionEnd')};/**
14115 * Event names that have already been detected and prefixed (if applicable).
14116 */var prefixedEventNames={};/**
14117 * Element to check for prefixes on.
14118 */var style={};/**
14119 * Bootstrap if a DOM exists.
14120 */if(canUseDOM){style=document.createElement('div').style;// On some platforms, in particular some releases of Android 4.x,
14121// the un-prefixed "animation" and "transition" properties are defined on the
14122// style object but the events that fire will still be prefixed, so we need
14123// to check if the un-prefixed events are usable, and if not remove them from the map.
14124if(!('AnimationEvent'in window)){delete vendorPrefixes.animationend.animation;delete vendorPrefixes.animationiteration.animation;delete vendorPrefixes.animationstart.animation;}// Same as above
14125if(!('TransitionEvent'in window)){delete vendorPrefixes.transitionend.transition;}}/**
14126 * Attempts to determine the correct vendor prefixed event name.
14127 *
14128 * @param {string} eventName
14129 * @returns {string}
14130 */function getVendorPrefixedEventName(eventName){if(prefixedEventNames[eventName]){return prefixedEventNames[eventName];}else if(!vendorPrefixes[eventName]){return eventName;}var prefixMap=vendorPrefixes[eventName];for(var styleProp in prefixMap){if(prefixMap.hasOwnProperty(styleProp)&&styleProp in style){return prefixedEventNames[eventName]=prefixMap[styleProp];}}return eventName;}/**
14131 * To identify top level events in ReactDOM, we use constants defined by this
14132 * module. This is the only module that uses the unsafe* methods to express
14133 * that the constants actually correspond to the browser event names. This lets
14134 * us save some bundle size by avoiding a top level type -> event name map.
14135 * The rest of ReactDOM code should import top level types from this file.
14136 */var TOP_ABORT=unsafeCastStringToDOMTopLevelType('abort');var TOP_ANIMATION_END=unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationend'));var TOP_ANIMATION_ITERATION=unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationiteration'));var TOP_ANIMATION_START=unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationstart'));var TOP_BLUR=unsafeCastStringToDOMTopLevelType('blur');var TOP_CAN_PLAY=unsafeCastStringToDOMTopLevelType('canplay');var TOP_CAN_PLAY_THROUGH=unsafeCastStringToDOMTopLevelType('canplaythrough');var TOP_CANCEL=unsafeCastStringToDOMTopLevelType('cancel');var TOP_CHANGE=unsafeCastStringToDOMTopLevelType('change');var TOP_CLICK=unsafeCastStringToDOMTopLevelType('click');var TOP_CLOSE=unsafeCastStringToDOMTopLevelType('close');var TOP_COMPOSITION_END=unsafeCastStringToDOMTopLevelType('compositionend');var TOP_COMPOSITION_START=unsafeCastStringToDOMTopLevelType('compositionstart');var TOP_COMPOSITION_UPDATE=unsafeCastStringToDOMTopLevelType('compositionupdate');var TOP_CONTEXT_MENU=unsafeCastStringToDOMTopLevelType('contextmenu');var TOP_COPY=unsafeCastStringToDOMTopLevelType('copy');var TOP_CUT=unsafeCastStringToDOMTopLevelType('cut');var TOP_DOUBLE_CLICK=unsafeCastStringToDOMTopLevelType('dblclick');var TOP_AUX_CLICK=unsafeCastStringToDOMTopLevelType('auxclick');var TOP_DRAG=unsafeCastStringToDOMTopLevelType('drag');var TOP_DRAG_END=unsafeCastStringToDOMTopLevelType('dragend');var TOP_DRAG_ENTER=unsafeCastStringToDOMTopLevelType('dragenter');var TOP_DRAG_EXIT=unsafeCastStringToDOMTopLevelType('dragexit');var TOP_DRAG_LEAVE=unsafeCastStringToDOMTopLevelType('dragleave');var TOP_DRAG_OVER=unsafeCastStringToDOMTopLevelType('dragover');var TOP_DRAG_START=unsafeCastStringToDOMTopLevelType('dragstart');var TOP_DROP=unsafeCastStringToDOMTopLevelType('drop');var TOP_DURATION_CHANGE=unsafeCastStringToDOMTopLevelType('durationchange');var TOP_EMPTIED=unsafeCastStringToDOMTopLevelType('emptied');var TOP_ENCRYPTED=unsafeCastStringToDOMTopLevelType('encrypted');var TOP_ENDED=unsafeCastStringToDOMTopLevelType('ended');var TOP_ERROR=unsafeCastStringToDOMTopLevelType('error');var TOP_FOCUS=unsafeCastStringToDOMTopLevelType('focus');var TOP_GOT_POINTER_CAPTURE=unsafeCastStringToDOMTopLevelType('gotpointercapture');var TOP_INPUT=unsafeCastStringToDOMTopLevelType('input');var TOP_INVALID=unsafeCastStringToDOMTopLevelType('invalid');var TOP_KEY_DOWN=unsafeCastStringToDOMTopLevelType('keydown');var TOP_KEY_PRESS=unsafeCastStringToDOMTopLevelType('keypress');var TOP_KEY_UP=unsafeCastStringToDOMTopLevelType('keyup');var TOP_LOAD=unsafeCastStringToDOMTopLevelType('load');var TOP_LOAD_START=unsafeCastStringToDOMTopLevelType('loadstart');var TOP_LOADED_DATA=unsafeCastStringToDOMTopLevelType('loadeddata');var TOP_LOADED_METADATA=unsafeCastStringToDOMTopLevelType('loadedmetadata');var TOP_LOST_POINTER_CAPTURE=unsafeCastStringToDOMTopLevelType('lostpointercapture');var TOP_MOUSE_DOWN=unsafeCastStringToDOMTopLevelType('mousedown');var TOP_MOUSE_MOVE=unsafeCastStringToDOMTopLevelType('mousemove');var TOP_MOUSE_OUT=unsafeCastStringToDOMTopLevelType('mouseout');var TOP_MOUSE_OVER=unsafeCastStringToDOMTopLevelType('mouseover');var TOP_MOUSE_UP=unsafeCastStringToDOMTopLevelType('mouseup');var TOP_PASTE=unsafeCastStringToDOMTopLevelType('paste');var TOP_PAUSE=unsafeCastStringToDOMTopLevelType('pause');var TOP_PLAY=unsafeCastStringToDOMTopLevelType('play');var TOP_PLAYING=unsafeCastStringToDOMTopLevelType('playing');var TOP_POINTER_CANCEL=unsafeCastStringToDOMTopLevelType('pointercancel');var TOP_POINTER_DOWN=unsafeCastStringToDOMTopLevelType('pointerdown');var TOP_POINTER_MOVE=unsafeCastStringToDOMTopLevelType('pointermove');var TOP_POINTER_OUT=unsafeCastStringToDOMTopLevelType('pointerout');var TOP_POINTER_OVER=unsafeCastStringToDOMTopLevelType('pointerover');var TOP_POINTER_UP=unsafeCastStringToDOMTopLevelType('pointerup');var TOP_PROGRESS=unsafeCastStringToDOMTopLevelType('progress');var TOP_RATE_CHANGE=unsafeCastStringToDOMTopLevelType('ratechange');var TOP_RESET=unsafeCastStringToDOMTopLevelType('reset');var TOP_SCROLL=unsafeCastStringToDOMTopLevelType('scroll');var TOP_SEEKED=unsafeCastStringToDOMTopLevelType('seeked');var TOP_SEEKING=unsafeCastStringToDOMTopLevelType('seeking');var TOP_SELECTION_CHANGE=unsafeCastStringToDOMTopLevelType('selectionchange');var TOP_STALLED=unsafeCastStringToDOMTopLevelType('stalled');var TOP_SUBMIT=unsafeCastStringToDOMTopLevelType('submit');var TOP_SUSPEND=unsafeCastStringToDOMTopLevelType('suspend');var TOP_TEXT_INPUT=unsafeCastStringToDOMTopLevelType('textInput');var TOP_TIME_UPDATE=unsafeCastStringToDOMTopLevelType('timeupdate');var TOP_TOGGLE=unsafeCastStringToDOMTopLevelType('toggle');var TOP_TOUCH_CANCEL=unsafeCastStringToDOMTopLevelType('touchcancel');var TOP_TOUCH_END=unsafeCastStringToDOMTopLevelType('touchend');var TOP_TOUCH_MOVE=unsafeCastStringToDOMTopLevelType('touchmove');var TOP_TOUCH_START=unsafeCastStringToDOMTopLevelType('touchstart');var TOP_TRANSITION_END=unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('transitionend'));var TOP_VOLUME_CHANGE=unsafeCastStringToDOMTopLevelType('volumechange');var TOP_WAITING=unsafeCastStringToDOMTopLevelType('waiting');var TOP_WHEEL=unsafeCastStringToDOMTopLevelType('wheel');// List of events that need to be individually attached to media elements.
14137// Note that events in this list will *not* be listened to at the top level
14138// unless they're explicitly whitelisted in `ReactBrowserEventEmitter.listenTo`.
14139var mediaEventTypes=[TOP_ABORT,TOP_CAN_PLAY,TOP_CAN_PLAY_THROUGH,TOP_DURATION_CHANGE,TOP_EMPTIED,TOP_ENCRYPTED,TOP_ENDED,TOP_ERROR,TOP_LOADED_DATA,TOP_LOADED_METADATA,TOP_LOAD_START,TOP_PAUSE,TOP_PLAY,TOP_PLAYING,TOP_PROGRESS,TOP_RATE_CHANGE,TOP_SEEKED,TOP_SEEKING,TOP_STALLED,TOP_SUSPEND,TOP_TIME_UPDATE,TOP_VOLUME_CHANGE,TOP_WAITING];function getRawEventName(topLevelType){return unsafeCastDOMTopLevelTypeToString(topLevelType);}var PossiblyWeakMap=typeof WeakMap==='function'?WeakMap:Map;// prettier-ignore
14140var elementListenerMap=new PossiblyWeakMap();function getListenerMapForElement(element){var listenerMap=elementListenerMap.get(element);if(listenerMap===undefined){listenerMap=new Map();elementListenerMap.set(element,listenerMap);}return listenerMap;}/**
14141 * `ReactInstanceMap` maintains a mapping from a public facing stateful
14142 * instance (key) and the internal representation (value). This allows public
14143 * methods to accept the user facing instance as an argument and map them back
14144 * to internal methods.
14145 *
14146 * Note that this module is currently shared and assumed to be stateless.
14147 * If this becomes an actual Map, that will break.
14148 */function get(key){return key._reactInternalFiber;}function has(key){return key._reactInternalFiber!==undefined;}function set(key,value){key._reactInternalFiber=value;}// Don't change these two values. They're used by React Dev Tools.
14149var NoEffect=/*              */0;var PerformedWork=/*         */1;// You can change the rest (and add more).
14150var Placement=/*             */2;var Update=/*                */4;var PlacementAndUpdate=/*    */6;var Deletion=/*              */8;var ContentReset=/*          */16;var Callback=/*              */32;var DidCapture=/*            */64;var Ref=/*                   */128;var Snapshot=/*              */256;var Passive=/*               */512;var Hydrating=/*             */1024;var HydratingAndUpdate=/*    */1028;// Passive & Update & Callback & Ref & Snapshot
14151var LifecycleEffectMask=/*   */932;// Union of all host effects
14152var HostEffectMask=/*        */2047;var Incomplete=/*            */2048;var ShouldCapture=/*         */4096;var ReactCurrentOwner=ReactSharedInternals.ReactCurrentOwner;function getNearestMountedFiber(fiber){var node=fiber;var nearestMounted=fiber;if(!fiber.alternate){// If there is no alternate, this might be a new tree that isn't inserted
14153// yet. If it is, then it will have a pending insertion effect on it.
14154var nextNode=node;do{node=nextNode;if((node.effectTag&(Placement|Hydrating))!==NoEffect){// This is an insertion or in-progress hydration. The nearest possible
14155// mounted fiber is the parent but we need to continue to figure out
14156// if that one is still mounted.
14157nearestMounted=node.return;}nextNode=node.return;}while(nextNode);}else{while(node.return){node=node.return;}}if(node.tag===HostRoot){// TODO: Check if this was a nested HostRoot when used with
14158// renderContainerIntoSubtree.
14159return nearestMounted;}// If we didn't hit the root, that means that we're in an disconnected tree
14160// that has been unmounted.
14161return null;}function getSuspenseInstanceFromFiber(fiber){if(fiber.tag===SuspenseComponent){var suspenseState=fiber.memoizedState;if(suspenseState===null){var current=fiber.alternate;if(current!==null){suspenseState=current.memoizedState;}}if(suspenseState!==null){return suspenseState.dehydrated;}}return null;}function getContainerFromFiber(fiber){return fiber.tag===HostRoot?fiber.stateNode.containerInfo:null;}function isFiberMounted(fiber){return getNearestMountedFiber(fiber)===fiber;}function isMounted(component){{var owner=ReactCurrentOwner.current;if(owner!==null&&owner.tag===ClassComponent){var ownerFiber=owner;var instance=ownerFiber.stateNode;if(!instance._warnedAboutRefsInRender){error('%s is accessing isMounted inside its render() function. '+'render() should be a pure function of props and state. It should '+'never access something that requires stale data from the previous '+'render, such as refs. Move this logic to componentDidMount and '+'componentDidUpdate instead.',getComponentName(ownerFiber.type)||'A component');}instance._warnedAboutRefsInRender=true;}}var fiber=get(component);if(!fiber){return false;}return getNearestMountedFiber(fiber)===fiber;}function assertIsMounted(fiber){if(!(getNearestMountedFiber(fiber)===fiber)){{throw Error("Unable to find node on an unmounted component.");}}}function findCurrentFiberUsingSlowPath(fiber){var alternate=fiber.alternate;if(!alternate){// If there is no alternate, then we only need to check if it is mounted.
14162var nearestMounted=getNearestMountedFiber(fiber);if(!(nearestMounted!==null)){{throw Error("Unable to find node on an unmounted component.");}}if(nearestMounted!==fiber){return null;}return fiber;}// If we have two possible branches, we'll walk backwards up to the root
14163// to see what path the root points to. On the way we may hit one of the
14164// special cases and we'll deal with them.
14165var a=fiber;var b=alternate;while(true){var parentA=a.return;if(parentA===null){// We're at the root.
14166break;}var parentB=parentA.alternate;if(parentB===null){// There is no alternate. This is an unusual case. Currently, it only
14167// happens when a Suspense component is hidden. An extra fragment fiber
14168// is inserted in between the Suspense fiber and its children. Skip
14169// over this extra fragment fiber and proceed to the next parent.
14170var nextParent=parentA.return;if(nextParent!==null){a=b=nextParent;continue;}// If there's no parent, we're at the root.
14171break;}// If both copies of the parent fiber point to the same child, we can
14172// assume that the child is current. This happens when we bailout on low
14173// priority: the bailed out fiber's child reuses the current child.
14174if(parentA.child===parentB.child){var child=parentA.child;while(child){if(child===a){// We've determined that A is the current branch.
14175assertIsMounted(parentA);return fiber;}if(child===b){// We've determined that B is the current branch.
14176assertIsMounted(parentA);return alternate;}child=child.sibling;}// We should never have an alternate for any mounting node. So the only
14177// way this could possibly happen is if this was unmounted, if at all.
14178{{throw Error("Unable to find node on an unmounted component.");}}}if(a.return!==b.return){// The return pointer of A and the return pointer of B point to different
14179// fibers. We assume that return pointers never criss-cross, so A must
14180// belong to the child set of A.return, and B must belong to the child
14181// set of B.return.
14182a=parentA;b=parentB;}else{// The return pointers point to the same fiber. We'll have to use the
14183// default, slow path: scan the child sets of each parent alternate to see
14184// which child belongs to which set.
14185//
14186// Search parent A's child set
14187var didFindChild=false;var _child=parentA.child;while(_child){if(_child===a){didFindChild=true;a=parentA;b=parentB;break;}if(_child===b){didFindChild=true;b=parentA;a=parentB;break;}_child=_child.sibling;}if(!didFindChild){// Search parent B's child set
14188_child=parentB.child;while(_child){if(_child===a){didFindChild=true;a=parentB;b=parentA;break;}if(_child===b){didFindChild=true;b=parentB;a=parentA;break;}_child=_child.sibling;}if(!didFindChild){{throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.");}}}}if(!(a.alternate===b)){{throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.");}}}// If the root is not a host container, we're in a disconnected tree. I.e.
14189// unmounted.
14190if(!(a.tag===HostRoot)){{throw Error("Unable to find node on an unmounted component.");}}if(a.stateNode.current===a){// We've determined that A is the current branch.
14191return fiber;}// Otherwise B has to be current branch.
14192return alternate;}function findCurrentHostFiber(parent){var currentParent=findCurrentFiberUsingSlowPath(parent);if(!currentParent){return null;}// Next we'll drill down this component to find the first HostComponent/Text.
14193var node=currentParent;while(true){if(node.tag===HostComponent||node.tag===HostText){return node;}else if(node.child){node.child.return=node;node=node.child;continue;}if(node===currentParent){return null;}while(!node.sibling){if(!node.return||node.return===currentParent){return null;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}// Flow needs the return null here, but ESLint complains about it.
14194// eslint-disable-next-line no-unreachable
14195return null;}function findCurrentHostFiberWithNoPortals(parent){var currentParent=findCurrentFiberUsingSlowPath(parent);if(!currentParent){return null;}// Next we'll drill down this component to find the first HostComponent/Text.
14196var node=currentParent;while(true){if(node.tag===HostComponent||node.tag===HostText||enableFundamentalAPI){return node;}else if(node.child&&node.tag!==HostPortal){node.child.return=node;node=node.child;continue;}if(node===currentParent){return null;}while(!node.sibling){if(!node.return||node.return===currentParent){return null;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}// Flow needs the return null here, but ESLint complains about it.
14197// eslint-disable-next-line no-unreachable
14198return null;}/**
14199 * Accumulates items that must not be null or undefined into the first one. This
14200 * is used to conserve memory by avoiding array allocations, and thus sacrifices
14201 * API cleanness. Since `current` can be null before being passed in and not
14202 * null after this function, make sure to assign it back to `current`:
14203 *
14204 * `a = accumulateInto(a, b);`
14205 *
14206 * This API should be sparingly used. Try `accumulate` for something cleaner.
14207 *
14208 * @return {*|array<*>} An accumulation of items.
14209 */function accumulateInto(current,next){if(!(next!=null)){{throw Error("accumulateInto(...): Accumulated items must not be null or undefined.");}}if(current==null){return next;}// Both are not empty. Warning: Never call x.concat(y) when you are not
14210// certain that x is an Array (x could be a string with concat method).
14211if(Array.isArray(current)){if(Array.isArray(next)){current.push.apply(current,next);return current;}current.push(next);return current;}if(Array.isArray(next)){// A bit too dangerous to mutate `next`.
14212return[current].concat(next);}return[current,next];}/**
14213 * @param {array} arr an "accumulation" of items which is either an Array or
14214 * a single item. Useful when paired with the `accumulate` module. This is a
14215 * simple utility that allows us to reason about a collection of items, but
14216 * handling the case when there is exactly one item (and we do not need to
14217 * allocate an array).
14218 * @param {function} cb Callback invoked with each element or a collection.
14219 * @param {?} [scope] Scope used as `this` in a callback.
14220 */function forEachAccumulated(arr,cb,scope){if(Array.isArray(arr)){arr.forEach(cb,scope);}else if(arr){cb.call(scope,arr);}}/**
14221 * Internal queue of events that have accumulated their dispatches and are
14222 * waiting to have their dispatches executed.
14223 */var eventQueue=null;/**
14224 * Dispatches an event and releases it back into the pool, unless persistent.
14225 *
14226 * @param {?object} event Synthetic event to be dispatched.
14227 * @private
14228 */var executeDispatchesAndRelease=function(event){if(event){executeDispatchesInOrder(event);if(!event.isPersistent()){event.constructor.release(event);}}};var executeDispatchesAndReleaseTopLevel=function(e){return executeDispatchesAndRelease(e);};function runEventsInBatch(events){if(events!==null){eventQueue=accumulateInto(eventQueue,events);}// Set `eventQueue` to null before processing it so that we can tell if more
14229// events get enqueued while processing.
14230var processingEventQueue=eventQueue;eventQueue=null;if(!processingEventQueue){return;}forEachAccumulated(processingEventQueue,executeDispatchesAndReleaseTopLevel);if(!!eventQueue){{throw Error("processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.");}}// This would be a good time to rethrow if any of the event handlers threw.
14231rethrowCaughtError();}/**
14232 * Gets the target node from a native browser event by accounting for
14233 * inconsistencies in browser DOM APIs.
14234 *
14235 * @param {object} nativeEvent Native browser event.
14236 * @return {DOMEventTarget} Target node.
14237 */function getEventTarget(nativeEvent){// Fallback to nativeEvent.srcElement for IE9
14238// https://github.com/facebook/react/issues/12506
14239var target=nativeEvent.target||nativeEvent.srcElement||window;// Normalize SVG <use> element events #4963
14240if(target.correspondingUseElement){target=target.correspondingUseElement;}// Safari may fire events on text nodes (Node.TEXT_NODE is 3).
14241// @see http://www.quirksmode.org/js/events_properties.html
14242return target.nodeType===TEXT_NODE?target.parentNode:target;}/**
14243 * Checks if an event is supported in the current execution environment.
14244 *
14245 * NOTE: This will not work correctly for non-generic events such as `change`,
14246 * `reset`, `load`, `error`, and `select`.
14247 *
14248 * Borrows from Modernizr.
14249 *
14250 * @param {string} eventNameSuffix Event name, e.g. "click".
14251 * @return {boolean} True if the event is supported.
14252 * @internal
14253 * @license Modernizr 3.0.0pre (Custom Build) | MIT
14254 */function isEventSupported(eventNameSuffix){if(!canUseDOM){return false;}var eventName='on'+eventNameSuffix;var isSupported=(eventName in document);if(!isSupported){var element=document.createElement('div');element.setAttribute(eventName,'return;');isSupported=typeof element[eventName]==='function';}return isSupported;}/**
14255 * Summary of `DOMEventPluginSystem` event handling:
14256 *
14257 *  - Top-level delegation is used to trap most native browser events. This
14258 *    may only occur in the main thread and is the responsibility of
14259 *    ReactDOMEventListener, which is injected and can therefore support
14260 *    pluggable event sources. This is the only work that occurs in the main
14261 *    thread.
14262 *
14263 *  - We normalize and de-duplicate events to account for browser quirks. This
14264 *    may be done in the worker thread.
14265 *
14266 *  - Forward these native events (with the associated top-level type used to
14267 *    trap it) to `EventPluginRegistry`, which in turn will ask plugins if they want
14268 *    to extract any synthetic events.
14269 *
14270 *  - The `EventPluginRegistry` will then process each event by annotating them with
14271 *    "dispatches", a sequence of listeners and IDs that care about that event.
14272 *
14273 *  - The `EventPluginRegistry` then dispatches the events.
14274 *
14275 * Overview of React and the event system:
14276 *
14277 * +------------+    .
14278 * |    DOM     |    .
14279 * +------------+    .
14280 *       |           .
14281 *       v           .
14282 * +------------+    .
14283 * | ReactEvent |    .
14284 * |  Listener  |    .
14285 * +------------+    .                         +-----------+
14286 *       |           .               +--------+|SimpleEvent|
14287 *       |           .               |         |Plugin     |
14288 * +-----|------+    .               v         +-----------+
14289 * |     |      |    .    +--------------+                    +------------+
14290 * |     +-----------.--->|PluginRegistry|                    |    Event   |
14291 * |            |    .    |              |     +-----------+  | Propagators|
14292 * | ReactEvent |    .    |              |     |TapEvent   |  |------------|
14293 * |  Emitter   |    .    |              |<---+|Plugin     |  |other plugin|
14294 * |            |    .    |              |     +-----------+  |  utilities |
14295 * |     +-----------.--->|              |                    +------------+
14296 * |     |      |    .    +--------------+
14297 * +-----|------+    .                ^        +-----------+
14298 *       |           .                |        |Enter/Leave|
14299 *       +           .                +-------+|Plugin     |
14300 * +-------------+   .                         +-----------+
14301 * | application |   .
14302 * |-------------|   .
14303 * |             |   .
14304 * |             |   .
14305 * +-------------+   .
14306 *                   .
14307 *    React Core     .  General Purpose Event Plugin System
14308 */var CALLBACK_BOOKKEEPING_POOL_SIZE=10;var callbackBookkeepingPool=[];function releaseTopLevelCallbackBookKeeping(instance){instance.topLevelType=null;instance.nativeEvent=null;instance.targetInst=null;instance.ancestors.length=0;if(callbackBookkeepingPool.length<CALLBACK_BOOKKEEPING_POOL_SIZE){callbackBookkeepingPool.push(instance);}}// Used to store ancestor hierarchy in top level callback
14309function getTopLevelCallbackBookKeeping(topLevelType,nativeEvent,targetInst,eventSystemFlags){if(callbackBookkeepingPool.length){var instance=callbackBookkeepingPool.pop();instance.topLevelType=topLevelType;instance.eventSystemFlags=eventSystemFlags;instance.nativeEvent=nativeEvent;instance.targetInst=targetInst;return instance;}return{topLevelType:topLevelType,eventSystemFlags:eventSystemFlags,nativeEvent:nativeEvent,targetInst:targetInst,ancestors:[]};}/**
14310 * Find the deepest React component completely containing the root of the
14311 * passed-in instance (for use when entire React trees are nested within each
14312 * other). If React trees are not nested, returns null.
14313 */function findRootContainerNode(inst){if(inst.tag===HostRoot){return inst.stateNode.containerInfo;}// TODO: It may be a good idea to cache this to prevent unnecessary DOM
14314// traversal, but caching is difficult to do correctly without using a
14315// mutation observer to listen for all DOM changes.
14316while(inst.return){inst=inst.return;}if(inst.tag!==HostRoot){// This can happen if we're in a detached tree.
14317return null;}return inst.stateNode.containerInfo;}/**
14318 * Allows registered plugins an opportunity to extract events from top-level
14319 * native browser events.
14320 *
14321 * @return {*} An accumulation of synthetic events.
14322 * @internal
14323 */function extractPluginEvents(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var events=null;for(var i=0;i<plugins.length;i++){// Not every plugin in the ordering may be loaded at runtime.
14324var possiblePlugin=plugins[i];if(possiblePlugin){var extractedEvents=possiblePlugin.extractEvents(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags);if(extractedEvents){events=accumulateInto(events,extractedEvents);}}}return events;}function runExtractedPluginEventsInBatch(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var events=extractPluginEvents(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags);runEventsInBatch(events);}function handleTopLevel(bookKeeping){var targetInst=bookKeeping.targetInst;// Loop through the hierarchy, in case there's any nested components.
14325// It's important that we build the array of ancestors before calling any
14326// event handlers, because event handlers can modify the DOM, leading to
14327// inconsistencies with ReactMount's node cache. See #1105.
14328var ancestor=targetInst;do{if(!ancestor){var ancestors=bookKeeping.ancestors;ancestors.push(ancestor);break;}var root=findRootContainerNode(ancestor);if(!root){break;}var tag=ancestor.tag;if(tag===HostComponent||tag===HostText){bookKeeping.ancestors.push(ancestor);}ancestor=getClosestInstanceFromNode(root);}while(ancestor);for(var i=0;i<bookKeeping.ancestors.length;i++){targetInst=bookKeeping.ancestors[i];var eventTarget=getEventTarget(bookKeeping.nativeEvent);var topLevelType=bookKeeping.topLevelType;var nativeEvent=bookKeeping.nativeEvent;var eventSystemFlags=bookKeeping.eventSystemFlags;// If this is the first ancestor, we mark it on the system flags
14329if(i===0){eventSystemFlags|=IS_FIRST_ANCESTOR;}runExtractedPluginEventsInBatch(topLevelType,targetInst,nativeEvent,eventTarget,eventSystemFlags);}}function dispatchEventForLegacyPluginEventSystem(topLevelType,eventSystemFlags,nativeEvent,targetInst){var bookKeeping=getTopLevelCallbackBookKeeping(topLevelType,nativeEvent,targetInst,eventSystemFlags);try{// Event queue being processed in the same cycle allows
14330// `preventDefault`.
14331batchedEventUpdates(handleTopLevel,bookKeeping);}finally{releaseTopLevelCallbackBookKeeping(bookKeeping);}}/**
14332 * We listen for bubbled touch events on the document object.
14333 *
14334 * Firefox v8.01 (and possibly others) exhibited strange behavior when
14335 * mounting `onmousemove` events at some node that was not the document
14336 * element. The symptoms were that if your mouse is not moving over something
14337 * contained within that mount point (for example on the background) the
14338 * top-level listeners for `onmousemove` won't be called. However, if you
14339 * register the `mousemove` on the document object, then it will of course
14340 * catch all `mousemove`s. This along with iOS quirks, justifies restricting
14341 * top-level listeners to the document object only, at least for these
14342 * movement types of events and possibly all events.
14343 *
14344 * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
14345 *
14346 * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but
14347 * they bubble to document.
14348 *
14349 * @param {string} registrationName Name of listener (e.g. `onClick`).
14350 * @param {object} mountAt Container where to mount the listener
14351 */function legacyListenToEvent(registrationName,mountAt){var listenerMap=getListenerMapForElement(mountAt);var dependencies=registrationNameDependencies[registrationName];for(var i=0;i<dependencies.length;i++){var dependency=dependencies[i];legacyListenToTopLevelEvent(dependency,mountAt,listenerMap);}}function legacyListenToTopLevelEvent(topLevelType,mountAt,listenerMap){if(!listenerMap.has(topLevelType)){switch(topLevelType){case TOP_SCROLL:trapCapturedEvent(TOP_SCROLL,mountAt);break;case TOP_FOCUS:case TOP_BLUR:trapCapturedEvent(TOP_FOCUS,mountAt);trapCapturedEvent(TOP_BLUR,mountAt);// We set the flag for a single dependency later in this function,
14352// but this ensures we mark both as attached rather than just one.
14353listenerMap.set(TOP_BLUR,null);listenerMap.set(TOP_FOCUS,null);break;case TOP_CANCEL:case TOP_CLOSE:if(isEventSupported(getRawEventName(topLevelType))){trapCapturedEvent(topLevelType,mountAt);}break;case TOP_INVALID:case TOP_SUBMIT:case TOP_RESET:// We listen to them on the target DOM elements.
14354// Some of them bubble so we don't want them to fire twice.
14355break;default:// By default, listen on the top level to all non-media events.
14356// Media events don't bubble so adding the listener wouldn't do anything.
14357var isMediaEvent=mediaEventTypes.indexOf(topLevelType)!==-1;if(!isMediaEvent){trapBubbledEvent(topLevelType,mountAt);}break;}listenerMap.set(topLevelType,null);}}function isListeningToAllDependencies(registrationName,mountAt){var listenerMap=getListenerMapForElement(mountAt);var dependencies=registrationNameDependencies[registrationName];for(var i=0;i<dependencies.length;i++){var dependency=dependencies[i];if(!listenerMap.has(dependency)){return false;}}return true;}var attemptUserBlockingHydration;function setAttemptUserBlockingHydration(fn){attemptUserBlockingHydration=fn;}var attemptContinuousHydration;function setAttemptContinuousHydration(fn){attemptContinuousHydration=fn;}var attemptHydrationAtCurrentPriority;function setAttemptHydrationAtCurrentPriority(fn){attemptHydrationAtCurrentPriority=fn;}// TODO: Upgrade this definition once we're on a newer version of Flow that
14358var hasScheduledReplayAttempt=false;// The queue of discrete events to be replayed.
14359var queuedDiscreteEvents=[];// Indicates if any continuous event targets are non-null for early bailout.
14360// if the last target was dehydrated.
14361var queuedFocus=null;var queuedDrag=null;var queuedMouse=null;// For pointer events there can be one latest event per pointerId.
14362var queuedPointers=new Map();var queuedPointerCaptures=new Map();// We could consider replaying selectionchange and touchmoves too.
14363var queuedExplicitHydrationTargets=[];function hasQueuedDiscreteEvents(){return queuedDiscreteEvents.length>0;}var discreteReplayableEvents=[TOP_MOUSE_DOWN,TOP_MOUSE_UP,TOP_TOUCH_CANCEL,TOP_TOUCH_END,TOP_TOUCH_START,TOP_AUX_CLICK,TOP_DOUBLE_CLICK,TOP_POINTER_CANCEL,TOP_POINTER_DOWN,TOP_POINTER_UP,TOP_DRAG_END,TOP_DRAG_START,TOP_DROP,TOP_COMPOSITION_END,TOP_COMPOSITION_START,TOP_KEY_DOWN,TOP_KEY_PRESS,TOP_KEY_UP,TOP_INPUT,TOP_TEXT_INPUT,TOP_CLOSE,TOP_CANCEL,TOP_COPY,TOP_CUT,TOP_PASTE,TOP_CLICK,TOP_CHANGE,TOP_CONTEXT_MENU,TOP_RESET,TOP_SUBMIT];var continuousReplayableEvents=[TOP_FOCUS,TOP_BLUR,TOP_DRAG_ENTER,TOP_DRAG_LEAVE,TOP_MOUSE_OVER,TOP_MOUSE_OUT,TOP_POINTER_OVER,TOP_POINTER_OUT,TOP_GOT_POINTER_CAPTURE,TOP_LOST_POINTER_CAPTURE];function isReplayableDiscreteEvent(eventType){return discreteReplayableEvents.indexOf(eventType)>-1;}function trapReplayableEventForDocument(topLevelType,document,listenerMap){legacyListenToTopLevelEvent(topLevelType,document,listenerMap);}function eagerlyTrapReplayableEvents(container,document){var listenerMapForDoc=getListenerMapForElement(document);// Discrete
14364discreteReplayableEvents.forEach(function(topLevelType){trapReplayableEventForDocument(topLevelType,document,listenerMapForDoc);});// Continuous
14365continuousReplayableEvents.forEach(function(topLevelType){trapReplayableEventForDocument(topLevelType,document,listenerMapForDoc);});}function createQueuedReplayableEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent){return{blockedOn:blockedOn,topLevelType:topLevelType,eventSystemFlags:eventSystemFlags|IS_REPLAYED,nativeEvent:nativeEvent,container:container};}function queueDiscreteEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent){var queuedEvent=createQueuedReplayableEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent);queuedDiscreteEvents.push(queuedEvent);}// Resets the replaying for this type of continuous event to no event.
14366function clearIfContinuousEvent(topLevelType,nativeEvent){switch(topLevelType){case TOP_FOCUS:case TOP_BLUR:queuedFocus=null;break;case TOP_DRAG_ENTER:case TOP_DRAG_LEAVE:queuedDrag=null;break;case TOP_MOUSE_OVER:case TOP_MOUSE_OUT:queuedMouse=null;break;case TOP_POINTER_OVER:case TOP_POINTER_OUT:{var pointerId=nativeEvent.pointerId;queuedPointers.delete(pointerId);break;}case TOP_GOT_POINTER_CAPTURE:case TOP_LOST_POINTER_CAPTURE:{var _pointerId=nativeEvent.pointerId;queuedPointerCaptures.delete(_pointerId);break;}}}function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent,blockedOn,topLevelType,eventSystemFlags,container,nativeEvent){if(existingQueuedEvent===null||existingQueuedEvent.nativeEvent!==nativeEvent){var queuedEvent=createQueuedReplayableEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent);if(blockedOn!==null){var _fiber2=getInstanceFromNode$1(blockedOn);if(_fiber2!==null){// Attempt to increase the priority of this target.
14367attemptContinuousHydration(_fiber2);}}return queuedEvent;}// If we have already queued this exact event, then it's because
14368// the different event systems have different DOM event listeners.
14369// We can accumulate the flags and store a single event to be
14370// replayed.
14371existingQueuedEvent.eventSystemFlags|=eventSystemFlags;return existingQueuedEvent;}function queueIfContinuousEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent){// These set relatedTarget to null because the replayed event will be treated as if we
14372// moved from outside the window (no target) onto the target once it hydrates.
14373// Instead of mutating we could clone the event.
14374switch(topLevelType){case TOP_FOCUS:{var focusEvent=nativeEvent;queuedFocus=accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus,blockedOn,topLevelType,eventSystemFlags,container,focusEvent);return true;}case TOP_DRAG_ENTER:{var dragEvent=nativeEvent;queuedDrag=accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag,blockedOn,topLevelType,eventSystemFlags,container,dragEvent);return true;}case TOP_MOUSE_OVER:{var mouseEvent=nativeEvent;queuedMouse=accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse,blockedOn,topLevelType,eventSystemFlags,container,mouseEvent);return true;}case TOP_POINTER_OVER:{var pointerEvent=nativeEvent;var pointerId=pointerEvent.pointerId;queuedPointers.set(pointerId,accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId)||null,blockedOn,topLevelType,eventSystemFlags,container,pointerEvent));return true;}case TOP_GOT_POINTER_CAPTURE:{var _pointerEvent=nativeEvent;var _pointerId2=_pointerEvent.pointerId;queuedPointerCaptures.set(_pointerId2,accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2)||null,blockedOn,topLevelType,eventSystemFlags,container,_pointerEvent));return true;}}return false;}// Check if this target is unblocked. Returns true if it's unblocked.
14375function attemptExplicitHydrationTarget(queuedTarget){// TODO: This function shares a lot of logic with attemptToDispatchEvent.
14376// Try to unify them. It's a bit tricky since it would require two return
14377// values.
14378var targetInst=getClosestInstanceFromNode(queuedTarget.target);if(targetInst!==null){var nearestMounted=getNearestMountedFiber(targetInst);if(nearestMounted!==null){var tag=nearestMounted.tag;if(tag===SuspenseComponent){var instance=getSuspenseInstanceFromFiber(nearestMounted);if(instance!==null){// We're blocked on hydrating this boundary.
14379// Increase its priority.
14380queuedTarget.blockedOn=instance;Scheduler.unstable_runWithPriority(queuedTarget.priority,function(){attemptHydrationAtCurrentPriority(nearestMounted);});return;}}else if(tag===HostRoot){var root=nearestMounted.stateNode;if(root.hydrate){queuedTarget.blockedOn=getContainerFromFiber(nearestMounted);// We don't currently have a way to increase the priority of
14381// a root other than sync.
14382return;}}}}queuedTarget.blockedOn=null;}function attemptReplayContinuousQueuedEvent(queuedEvent){if(queuedEvent.blockedOn!==null){return false;}var nextBlockedOn=attemptToDispatchEvent(queuedEvent.topLevelType,queuedEvent.eventSystemFlags,queuedEvent.container,queuedEvent.nativeEvent);if(nextBlockedOn!==null){// We're still blocked. Try again later.
14383var _fiber3=getInstanceFromNode$1(nextBlockedOn);if(_fiber3!==null){attemptContinuousHydration(_fiber3);}queuedEvent.blockedOn=nextBlockedOn;return false;}return true;}function attemptReplayContinuousQueuedEventInMap(queuedEvent,key,map){if(attemptReplayContinuousQueuedEvent(queuedEvent)){map.delete(key);}}function replayUnblockedEvents(){hasScheduledReplayAttempt=false;// First replay discrete events.
14384while(queuedDiscreteEvents.length>0){var nextDiscreteEvent=queuedDiscreteEvents[0];if(nextDiscreteEvent.blockedOn!==null){// We're still blocked.
14385// Increase the priority of this boundary to unblock
14386// the next discrete event.
14387var _fiber4=getInstanceFromNode$1(nextDiscreteEvent.blockedOn);if(_fiber4!==null){attemptUserBlockingHydration(_fiber4);}break;}var nextBlockedOn=attemptToDispatchEvent(nextDiscreteEvent.topLevelType,nextDiscreteEvent.eventSystemFlags,nextDiscreteEvent.container,nextDiscreteEvent.nativeEvent);if(nextBlockedOn!==null){// We're still blocked. Try again later.
14388nextDiscreteEvent.blockedOn=nextBlockedOn;}else{// We've successfully replayed the first event. Let's try the next one.
14389queuedDiscreteEvents.shift();}}// Next replay any continuous events.
14390if(queuedFocus!==null&&attemptReplayContinuousQueuedEvent(queuedFocus)){queuedFocus=null;}if(queuedDrag!==null&&attemptReplayContinuousQueuedEvent(queuedDrag)){queuedDrag=null;}if(queuedMouse!==null&&attemptReplayContinuousQueuedEvent(queuedMouse)){queuedMouse=null;}queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);}function scheduleCallbackIfUnblocked(queuedEvent,unblocked){if(queuedEvent.blockedOn===unblocked){queuedEvent.blockedOn=null;if(!hasScheduledReplayAttempt){hasScheduledReplayAttempt=true;// Schedule a callback to attempt replaying as many events as are
14391// now unblocked. This first might not actually be unblocked yet.
14392// We could check it early to avoid scheduling an unnecessary callback.
14393Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority,replayUnblockedEvents);}}}function retryIfBlockedOn(unblocked){// Mark anything that was blocked on this as no longer blocked
14394// and eligible for a replay.
14395if(queuedDiscreteEvents.length>0){scheduleCallbackIfUnblocked(queuedDiscreteEvents[0],unblocked);// This is a exponential search for each boundary that commits. I think it's
14396// worth it because we expect very few discrete events to queue up and once
14397// we are actually fully unblocked it will be fast to replay them.
14398for(var i=1;i<queuedDiscreteEvents.length;i++){var queuedEvent=queuedDiscreteEvents[i];if(queuedEvent.blockedOn===unblocked){queuedEvent.blockedOn=null;}}}if(queuedFocus!==null){scheduleCallbackIfUnblocked(queuedFocus,unblocked);}if(queuedDrag!==null){scheduleCallbackIfUnblocked(queuedDrag,unblocked);}if(queuedMouse!==null){scheduleCallbackIfUnblocked(queuedMouse,unblocked);}var unblock=function(queuedEvent){return scheduleCallbackIfUnblocked(queuedEvent,unblocked);};queuedPointers.forEach(unblock);queuedPointerCaptures.forEach(unblock);for(var _i=0;_i<queuedExplicitHydrationTargets.length;_i++){var queuedTarget=queuedExplicitHydrationTargets[_i];if(queuedTarget.blockedOn===unblocked){queuedTarget.blockedOn=null;}}while(queuedExplicitHydrationTargets.length>0){var nextExplicitTarget=queuedExplicitHydrationTargets[0];if(nextExplicitTarget.blockedOn!==null){// We're still blocked.
14399break;}else{attemptExplicitHydrationTarget(nextExplicitTarget);if(nextExplicitTarget.blockedOn===null){// We're unblocked.
14400queuedExplicitHydrationTargets.shift();}}}}function addEventBubbleListener(element,eventType,listener){element.addEventListener(eventType,listener,false);}function addEventCaptureListener(element,eventType,listener){element.addEventListener(eventType,listener,true);}// do it in two places, which duplicates logic
14401// and increases the bundle size, we do it all
14402// here once. If we remove or refactor the
14403// SimpleEventPlugin, we should also remove or
14404// update the below line.
14405var simpleEventPluginEventTypes={};var topLevelEventsToDispatchConfig=new Map();var eventPriorities=new Map();// We store most of the events in this module in pairs of two strings so we can re-use
14406// the code required to apply the same logic for event prioritization and that of the
14407// SimpleEventPlugin. This complicates things slightly, but the aim is to reduce code
14408// duplication (for which there would be quite a bit). For the events that are not needed
14409// for the SimpleEventPlugin (otherDiscreteEvents) we process them separately as an
14410// array of top level events.
14411// Lastly, we ignore prettier so we can keep the formatting sane.
14412// prettier-ignore
14413var discreteEventPairsForSimpleEventPlugin=[TOP_BLUR,'blur',TOP_CANCEL,'cancel',TOP_CLICK,'click',TOP_CLOSE,'close',TOP_CONTEXT_MENU,'contextMenu',TOP_COPY,'copy',TOP_CUT,'cut',TOP_AUX_CLICK,'auxClick',TOP_DOUBLE_CLICK,'doubleClick',TOP_DRAG_END,'dragEnd',TOP_DRAG_START,'dragStart',TOP_DROP,'drop',TOP_FOCUS,'focus',TOP_INPUT,'input',TOP_INVALID,'invalid',TOP_KEY_DOWN,'keyDown',TOP_KEY_PRESS,'keyPress',TOP_KEY_UP,'keyUp',TOP_MOUSE_DOWN,'mouseDown',TOP_MOUSE_UP,'mouseUp',TOP_PASTE,'paste',TOP_PAUSE,'pause',TOP_PLAY,'play',TOP_POINTER_CANCEL,'pointerCancel',TOP_POINTER_DOWN,'pointerDown',TOP_POINTER_UP,'pointerUp',TOP_RATE_CHANGE,'rateChange',TOP_RESET,'reset',TOP_SEEKED,'seeked',TOP_SUBMIT,'submit',TOP_TOUCH_CANCEL,'touchCancel',TOP_TOUCH_END,'touchEnd',TOP_TOUCH_START,'touchStart',TOP_VOLUME_CHANGE,'volumeChange'];var otherDiscreteEvents=[TOP_CHANGE,TOP_SELECTION_CHANGE,TOP_TEXT_INPUT,TOP_COMPOSITION_START,TOP_COMPOSITION_END,TOP_COMPOSITION_UPDATE];// prettier-ignore
14414var userBlockingPairsForSimpleEventPlugin=[TOP_DRAG,'drag',TOP_DRAG_ENTER,'dragEnter',TOP_DRAG_EXIT,'dragExit',TOP_DRAG_LEAVE,'dragLeave',TOP_DRAG_OVER,'dragOver',TOP_MOUSE_MOVE,'mouseMove',TOP_MOUSE_OUT,'mouseOut',TOP_MOUSE_OVER,'mouseOver',TOP_POINTER_MOVE,'pointerMove',TOP_POINTER_OUT,'pointerOut',TOP_POINTER_OVER,'pointerOver',TOP_SCROLL,'scroll',TOP_TOGGLE,'toggle',TOP_TOUCH_MOVE,'touchMove',TOP_WHEEL,'wheel'];// prettier-ignore
14415var continuousPairsForSimpleEventPlugin=[TOP_ABORT,'abort',TOP_ANIMATION_END,'animationEnd',TOP_ANIMATION_ITERATION,'animationIteration',TOP_ANIMATION_START,'animationStart',TOP_CAN_PLAY,'canPlay',TOP_CAN_PLAY_THROUGH,'canPlayThrough',TOP_DURATION_CHANGE,'durationChange',TOP_EMPTIED,'emptied',TOP_ENCRYPTED,'encrypted',TOP_ENDED,'ended',TOP_ERROR,'error',TOP_GOT_POINTER_CAPTURE,'gotPointerCapture',TOP_LOAD,'load',TOP_LOADED_DATA,'loadedData',TOP_LOADED_METADATA,'loadedMetadata',TOP_LOAD_START,'loadStart',TOP_LOST_POINTER_CAPTURE,'lostPointerCapture',TOP_PLAYING,'playing',TOP_PROGRESS,'progress',TOP_SEEKING,'seeking',TOP_STALLED,'stalled',TOP_SUSPEND,'suspend',TOP_TIME_UPDATE,'timeUpdate',TOP_TRANSITION_END,'transitionEnd',TOP_WAITING,'waiting'];/**
14416 * Turns
14417 * ['abort', ...]
14418 * into
14419 * eventTypes = {
14420 *   'abort': {
14421 *     phasedRegistrationNames: {
14422 *       bubbled: 'onAbort',
14423 *       captured: 'onAbortCapture',
14424 *     },
14425 *     dependencies: [TOP_ABORT],
14426 *   },
14427 *   ...
14428 * };
14429 * topLevelEventsToDispatchConfig = new Map([
14430 *   [TOP_ABORT, { sameConfig }],
14431 * ]);
14432 */function processSimpleEventPluginPairsByPriority(eventTypes,priority){// As the event types are in pairs of two, we need to iterate
14433// through in twos. The events are in pairs of two to save code
14434// and improve init perf of processing this array, as it will
14435// result in far fewer object allocations and property accesses
14436// if we only use three arrays to process all the categories of
14437// instead of tuples.
14438for(var i=0;i<eventTypes.length;i+=2){var topEvent=eventTypes[i];var event=eventTypes[i+1];var capitalizedEvent=event[0].toUpperCase()+event.slice(1);var onEvent='on'+capitalizedEvent;var config={phasedRegistrationNames:{bubbled:onEvent,captured:onEvent+'Capture'},dependencies:[topEvent],eventPriority:priority};eventPriorities.set(topEvent,priority);topLevelEventsToDispatchConfig.set(topEvent,config);simpleEventPluginEventTypes[event]=config;}}function processTopEventPairsByPriority(eventTypes,priority){for(var i=0;i<eventTypes.length;i++){eventPriorities.set(eventTypes[i],priority);}}// SimpleEventPlugin
14439processSimpleEventPluginPairsByPriority(discreteEventPairsForSimpleEventPlugin,DiscreteEvent);processSimpleEventPluginPairsByPriority(userBlockingPairsForSimpleEventPlugin,UserBlockingEvent);processSimpleEventPluginPairsByPriority(continuousPairsForSimpleEventPlugin,ContinuousEvent);// Not used by SimpleEventPlugin
14440processTopEventPairsByPriority(otherDiscreteEvents,DiscreteEvent);function getEventPriorityForPluginSystem(topLevelType){var priority=eventPriorities.get(topLevelType);// Default to a ContinuousEvent. Note: we might
14441// want to warn if we can't detect the priority
14442// for the event.
14443return priority===undefined?ContinuousEvent:priority;}// Intentionally not named imports because Rollup would use dynamic dispatch for
14444var UserBlockingPriority=Scheduler.unstable_UserBlockingPriority,runWithPriority=Scheduler.unstable_runWithPriority;// TODO: can we stop exporting these?
14445var _enabled=true;function setEnabled(enabled){_enabled=!!enabled;}function isEnabled(){return _enabled;}function trapBubbledEvent(topLevelType,element){trapEventForPluginEventSystem(element,topLevelType,false);}function trapCapturedEvent(topLevelType,element){trapEventForPluginEventSystem(element,topLevelType,true);}function trapEventForPluginEventSystem(container,topLevelType,capture){var listener;switch(getEventPriorityForPluginSystem(topLevelType)){case DiscreteEvent:listener=dispatchDiscreteEvent.bind(null,topLevelType,PLUGIN_EVENT_SYSTEM,container);break;case UserBlockingEvent:listener=dispatchUserBlockingUpdate.bind(null,topLevelType,PLUGIN_EVENT_SYSTEM,container);break;case ContinuousEvent:default:listener=dispatchEvent.bind(null,topLevelType,PLUGIN_EVENT_SYSTEM,container);break;}var rawEventName=getRawEventName(topLevelType);if(capture){addEventCaptureListener(container,rawEventName,listener);}else{addEventBubbleListener(container,rawEventName,listener);}}function dispatchDiscreteEvent(topLevelType,eventSystemFlags,container,nativeEvent){flushDiscreteUpdatesIfNeeded(nativeEvent.timeStamp);discreteUpdates(dispatchEvent,topLevelType,eventSystemFlags,container,nativeEvent);}function dispatchUserBlockingUpdate(topLevelType,eventSystemFlags,container,nativeEvent){runWithPriority(UserBlockingPriority,dispatchEvent.bind(null,topLevelType,eventSystemFlags,container,nativeEvent));}function dispatchEvent(topLevelType,eventSystemFlags,container,nativeEvent){if(!_enabled){return;}if(hasQueuedDiscreteEvents()&&isReplayableDiscreteEvent(topLevelType)){// If we already have a queue of discrete events, and this is another discrete
14446// event, then we can't dispatch it regardless of its target, since they
14447// need to dispatch in order.
14448queueDiscreteEvent(null,// Flags that we're not actually blocked on anything as far as we know.
14449topLevelType,eventSystemFlags,container,nativeEvent);return;}var blockedOn=attemptToDispatchEvent(topLevelType,eventSystemFlags,container,nativeEvent);if(blockedOn===null){// We successfully dispatched this event.
14450clearIfContinuousEvent(topLevelType,nativeEvent);return;}if(isReplayableDiscreteEvent(topLevelType)){// This this to be replayed later once the target is available.
14451queueDiscreteEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent);return;}if(queueIfContinuousEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent)){return;}// We need to clear only if we didn't queue because
14452// queueing is accummulative.
14453clearIfContinuousEvent(topLevelType,nativeEvent);// This is not replayable so we'll invoke it but without a target,
14454// in case the event system needs to trace it.
14455{dispatchEventForLegacyPluginEventSystem(topLevelType,eventSystemFlags,nativeEvent,null);}}// Attempt dispatching an event. Returns a SuspenseInstance or Container if it's blocked.
14456function attemptToDispatchEvent(topLevelType,eventSystemFlags,container,nativeEvent){// TODO: Warn if _enabled is false.
14457var nativeEventTarget=getEventTarget(nativeEvent);var targetInst=getClosestInstanceFromNode(nativeEventTarget);if(targetInst!==null){var nearestMounted=getNearestMountedFiber(targetInst);if(nearestMounted===null){// This tree has been unmounted already. Dispatch without a target.
14458targetInst=null;}else{var tag=nearestMounted.tag;if(tag===SuspenseComponent){var instance=getSuspenseInstanceFromFiber(nearestMounted);if(instance!==null){// Queue the event to be replayed later. Abort dispatching since we
14459// don't want this event dispatched twice through the event system.
14460// TODO: If this is the first discrete event in the queue. Schedule an increased
14461// priority for this boundary.
14462return instance;}// This shouldn't happen, something went wrong but to avoid blocking
14463// the whole system, dispatch the event without a target.
14464// TODO: Warn.
14465targetInst=null;}else if(tag===HostRoot){var root=nearestMounted.stateNode;if(root.hydrate){// If this happens during a replay something went wrong and it might block
14466// the whole system.
14467return getContainerFromFiber(nearestMounted);}targetInst=null;}else if(nearestMounted!==targetInst){// If we get an event (ex: img onload) before committing that
14468// component's mount, ignore it for now (that is, treat it as if it was an
14469// event on a non-React tree). We might also consider queueing events and
14470// dispatching them after the mount.
14471targetInst=null;}}}{dispatchEventForLegacyPluginEventSystem(topLevelType,eventSystemFlags,nativeEvent,targetInst);}// We're not blocked on anything.
14472return null;}// List derived from Gecko source code:
14473// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js
14474var shorthandToLonghand={animation:['animationDelay','animationDirection','animationDuration','animationFillMode','animationIterationCount','animationName','animationPlayState','animationTimingFunction'],background:['backgroundAttachment','backgroundClip','backgroundColor','backgroundImage','backgroundOrigin','backgroundPositionX','backgroundPositionY','backgroundRepeat','backgroundSize'],backgroundPosition:['backgroundPositionX','backgroundPositionY'],border:['borderBottomColor','borderBottomStyle','borderBottomWidth','borderImageOutset','borderImageRepeat','borderImageSlice','borderImageSource','borderImageWidth','borderLeftColor','borderLeftStyle','borderLeftWidth','borderRightColor','borderRightStyle','borderRightWidth','borderTopColor','borderTopStyle','borderTopWidth'],borderBlockEnd:['borderBlockEndColor','borderBlockEndStyle','borderBlockEndWidth'],borderBlockStart:['borderBlockStartColor','borderBlockStartStyle','borderBlockStartWidth'],borderBottom:['borderBottomColor','borderBottomStyle','borderBottomWidth'],borderColor:['borderBottomColor','borderLeftColor','borderRightColor','borderTopColor'],borderImage:['borderImageOutset','borderImageRepeat','borderImageSlice','borderImageSource','borderImageWidth'],borderInlineEnd:['borderInlineEndColor','borderInlineEndStyle','borderInlineEndWidth'],borderInlineStart:['borderInlineStartColor','borderInlineStartStyle','borderInlineStartWidth'],borderLeft:['borderLeftColor','borderLeftStyle','borderLeftWidth'],borderRadius:['borderBottomLeftRadius','borderBottomRightRadius','borderTopLeftRadius','borderTopRightRadius'],borderRight:['borderRightColor','borderRightStyle','borderRightWidth'],borderStyle:['borderBottomStyle','borderLeftStyle','borderRightStyle','borderTopStyle'],borderTop:['borderTopColor','borderTopStyle','borderTopWidth'],borderWidth:['borderBottomWidth','borderLeftWidth','borderRightWidth','borderTopWidth'],columnRule:['columnRuleColor','columnRuleStyle','columnRuleWidth'],columns:['columnCount','columnWidth'],flex:['flexBasis','flexGrow','flexShrink'],flexFlow:['flexDirection','flexWrap'],font:['fontFamily','fontFeatureSettings','fontKerning','fontLanguageOverride','fontSize','fontSizeAdjust','fontStretch','fontStyle','fontVariant','fontVariantAlternates','fontVariantCaps','fontVariantEastAsian','fontVariantLigatures','fontVariantNumeric','fontVariantPosition','fontWeight','lineHeight'],fontVariant:['fontVariantAlternates','fontVariantCaps','fontVariantEastAsian','fontVariantLigatures','fontVariantNumeric','fontVariantPosition'],gap:['columnGap','rowGap'],grid:['gridAutoColumns','gridAutoFlow','gridAutoRows','gridTemplateAreas','gridTemplateColumns','gridTemplateRows'],gridArea:['gridColumnEnd','gridColumnStart','gridRowEnd','gridRowStart'],gridColumn:['gridColumnEnd','gridColumnStart'],gridColumnGap:['columnGap'],gridGap:['columnGap','rowGap'],gridRow:['gridRowEnd','gridRowStart'],gridRowGap:['rowGap'],gridTemplate:['gridTemplateAreas','gridTemplateColumns','gridTemplateRows'],listStyle:['listStyleImage','listStylePosition','listStyleType'],margin:['marginBottom','marginLeft','marginRight','marginTop'],marker:['markerEnd','markerMid','markerStart'],mask:['maskClip','maskComposite','maskImage','maskMode','maskOrigin','maskPositionX','maskPositionY','maskRepeat','maskSize'],maskPosition:['maskPositionX','maskPositionY'],outline:['outlineColor','outlineStyle','outlineWidth'],overflow:['overflowX','overflowY'],padding:['paddingBottom','paddingLeft','paddingRight','paddingTop'],placeContent:['alignContent','justifyContent'],placeItems:['alignItems','justifyItems'],placeSelf:['alignSelf','justifySelf'],textDecoration:['textDecorationColor','textDecorationLine','textDecorationStyle'],textEmphasis:['textEmphasisColor','textEmphasisStyle'],transition:['transitionDelay','transitionDuration','transitionProperty','transitionTimingFunction'],wordWrap:['overflowWrap']};/**
14475 * CSS properties which accept numbers but are not in units of "px".
14476 */var isUnitlessNumber={animationIterationCount:true,borderImageOutset:true,borderImageSlice:true,borderImageWidth:true,boxFlex:true,boxFlexGroup:true,boxOrdinalGroup:true,columnCount:true,columns:true,flex:true,flexGrow:true,flexPositive:true,flexShrink:true,flexNegative:true,flexOrder:true,gridArea:true,gridRow:true,gridRowEnd:true,gridRowSpan:true,gridRowStart:true,gridColumn:true,gridColumnEnd:true,gridColumnSpan:true,gridColumnStart:true,fontWeight:true,lineClamp:true,lineHeight:true,opacity:true,order:true,orphans:true,tabSize:true,widows:true,zIndex:true,zoom:true,// SVG-related properties
14477fillOpacity:true,floodOpacity:true,stopOpacity:true,strokeDasharray:true,strokeDashoffset:true,strokeMiterlimit:true,strokeOpacity:true,strokeWidth:true};/**
14478 * @param {string} prefix vendor-specific prefix, eg: Webkit
14479 * @param {string} key style name, eg: transitionDuration
14480 * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
14481 * WebkitTransitionDuration
14482 */function prefixKey(prefix,key){return prefix+key.charAt(0).toUpperCase()+key.substring(1);}/**
14483 * Support style names that may come passed in prefixed by adding permutations
14484 * of vendor prefixes.
14485 */var prefixes=['Webkit','ms','Moz','O'];// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
14486// infinite loop, because it iterates over the newly added props too.
14487Object.keys(isUnitlessNumber).forEach(function(prop){prefixes.forEach(function(prefix){isUnitlessNumber[prefixKey(prefix,prop)]=isUnitlessNumber[prop];});});/**
14488 * Convert a value into the proper css writable value. The style name `name`
14489 * should be logical (no hyphens), as specified
14490 * in `CSSProperty.isUnitlessNumber`.
14491 *
14492 * @param {string} name CSS property name such as `topMargin`.
14493 * @param {*} value CSS property value such as `10px`.
14494 * @return {string} Normalized style value with dimensions applied.
14495 */function dangerousStyleValue(name,value,isCustomProperty){// Note that we've removed escapeTextForBrowser() calls here since the
14496// whole string will be escaped when the attribute is injected into
14497// the markup. If you provide unsafe user data here they can inject
14498// arbitrary CSS which may be problematic (I couldn't repro this):
14499// https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
14500// http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/
14501// This is not an XSS hole but instead a potential CSS injection issue
14502// which has lead to a greater discussion about how we're going to
14503// trust URLs moving forward. See #2115901
14504var isEmpty=value==null||typeof value==='boolean'||value==='';if(isEmpty){return'';}if(!isCustomProperty&&typeof value==='number'&&value!==0&&!(isUnitlessNumber.hasOwnProperty(name)&&isUnitlessNumber[name])){return value+'px';// Presumes implicit 'px' suffix for unitless numbers
14505}return(''+value).trim();}var uppercasePattern=/([A-Z])/g;var msPattern=/^ms-/;/**
14506 * Hyphenates a camelcased CSS property name, for example:
14507 *
14508 *   > hyphenateStyleName('backgroundColor')
14509 *   < "background-color"
14510 *   > hyphenateStyleName('MozTransition')
14511 *   < "-moz-transition"
14512 *   > hyphenateStyleName('msTransition')
14513 *   < "-ms-transition"
14514 *
14515 * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
14516 * is converted to `-ms-`.
14517 */function hyphenateStyleName(name){return name.replace(uppercasePattern,'-$1').toLowerCase().replace(msPattern,'-ms-');}var warnValidStyle=function(){};{// 'msTransform' is correct, but the other prefixes should be capitalized
14518var badVendoredStyleNamePattern=/^(?:webkit|moz|o)[A-Z]/;var msPattern$1=/^-ms-/;var hyphenPattern=/-(.)/g;// style values shouldn't contain a semicolon
14519var badStyleValueWithSemicolonPattern=/;\s*$/;var warnedStyleNames={};var warnedStyleValues={};var warnedForNaNValue=false;var warnedForInfinityValue=false;var camelize=function(string){return string.replace(hyphenPattern,function(_,character){return character.toUpperCase();});};var warnHyphenatedStyleName=function(name){if(warnedStyleNames.hasOwnProperty(name)&&warnedStyleNames[name]){return;}warnedStyleNames[name]=true;error('Unsupported style property %s. Did you mean %s?',name,// As Andi Smith suggests
14520// (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
14521// is converted to lowercase `ms`.
14522camelize(name.replace(msPattern$1,'ms-')));};var warnBadVendoredStyleName=function(name){if(warnedStyleNames.hasOwnProperty(name)&&warnedStyleNames[name]){return;}warnedStyleNames[name]=true;error('Unsupported vendor-prefixed style property %s. Did you mean %s?',name,name.charAt(0).toUpperCase()+name.slice(1));};var warnStyleValueWithSemicolon=function(name,value){if(warnedStyleValues.hasOwnProperty(value)&&warnedStyleValues[value]){return;}warnedStyleValues[value]=true;error("Style property values shouldn't contain a semicolon. "+'Try "%s: %s" instead.',name,value.replace(badStyleValueWithSemicolonPattern,''));};var warnStyleValueIsNaN=function(name,value){if(warnedForNaNValue){return;}warnedForNaNValue=true;error('`NaN` is an invalid value for the `%s` css style property.',name);};var warnStyleValueIsInfinity=function(name,value){if(warnedForInfinityValue){return;}warnedForInfinityValue=true;error('`Infinity` is an invalid value for the `%s` css style property.',name);};warnValidStyle=function(name,value){if(name.indexOf('-')>-1){warnHyphenatedStyleName(name);}else if(badVendoredStyleNamePattern.test(name)){warnBadVendoredStyleName(name);}else if(badStyleValueWithSemicolonPattern.test(value)){warnStyleValueWithSemicolon(name,value);}if(typeof value==='number'){if(isNaN(value)){warnStyleValueIsNaN(name,value);}else if(!isFinite(value)){warnStyleValueIsInfinity(name,value);}}};}var warnValidStyle$1=warnValidStyle;/**
14523 * Operations for dealing with CSS properties.
14524 */ /**
14525 * This creates a string that is expected to be equivalent to the style
14526 * attribute generated by server-side rendering. It by-passes warnings and
14527 * security checks so it's not safe to use this value for anything other than
14528 * comparison. It is only used in DEV for SSR validation.
14529 */function createDangerousStringForStyles(styles){{var serialized='';var delimiter='';for(var styleName in styles){if(!styles.hasOwnProperty(styleName)){continue;}var styleValue=styles[styleName];if(styleValue!=null){var isCustomProperty=styleName.indexOf('--')===0;serialized+=delimiter+(isCustomProperty?styleName:hyphenateStyleName(styleName))+':';serialized+=dangerousStyleValue(styleName,styleValue,isCustomProperty);delimiter=';';}}return serialized||null;}}/**
14530 * Sets the value for multiple styles on a node.  If a value is specified as
14531 * '' (empty string), the corresponding style property will be unset.
14532 *
14533 * @param {DOMElement} node
14534 * @param {object} styles
14535 */function setValueForStyles(node,styles){var style=node.style;for(var styleName in styles){if(!styles.hasOwnProperty(styleName)){continue;}var isCustomProperty=styleName.indexOf('--')===0;{if(!isCustomProperty){warnValidStyle$1(styleName,styles[styleName]);}}var styleValue=dangerousStyleValue(styleName,styles[styleName],isCustomProperty);if(styleName==='float'){styleName='cssFloat';}if(isCustomProperty){style.setProperty(styleName,styleValue);}else{style[styleName]=styleValue;}}}function isValueEmpty(value){return value==null||typeof value==='boolean'||value==='';}/**
14536 * Given {color: 'red', overflow: 'hidden'} returns {
14537 *   color: 'color',
14538 *   overflowX: 'overflow',
14539 *   overflowY: 'overflow',
14540 * }. This can be read as "the overflowY property was set by the overflow
14541 * shorthand". That is, the values are the property that each was derived from.
14542 */function expandShorthandMap(styles){var expanded={};for(var key in styles){var longhands=shorthandToLonghand[key]||[key];for(var i=0;i<longhands.length;i++){expanded[longhands[i]]=key;}}return expanded;}/**
14543 * When mixing shorthand and longhand property names, we warn during updates if
14544 * we expect an incorrect result to occur. In particular, we warn for:
14545 *
14546 * Updating a shorthand property (longhand gets overwritten):
14547 *   {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'}
14548 *   becomes .style.font = 'baz'
14549 * Removing a shorthand property (longhand gets lost too):
14550 *   {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'}
14551 *   becomes .style.font = ''
14552 * Removing a longhand property (should revert to shorthand; doesn't):
14553 *   {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'}
14554 *   becomes .style.fontVariant = ''
14555 */function validateShorthandPropertyCollisionInDev(styleUpdates,nextStyles){{if(!nextStyles){return;}var expandedUpdates=expandShorthandMap(styleUpdates);var expandedStyles=expandShorthandMap(nextStyles);var warnedAbout={};for(var key in expandedUpdates){var originalKey=expandedUpdates[key];var correctOriginalKey=expandedStyles[key];if(correctOriginalKey&&originalKey!==correctOriginalKey){var warningKey=originalKey+','+correctOriginalKey;if(warnedAbout[warningKey]){continue;}warnedAbout[warningKey]=true;error('%s a style property during rerender (%s) when a '+'conflicting property is set (%s) can lead to styling bugs. To '+"avoid this, don't mix shorthand and non-shorthand properties "+'for the same value; instead, replace the shorthand with '+'separate values.',isValueEmpty(styleUpdates[originalKey])?'Removing':'Updating',originalKey,correctOriginalKey);}}}}// For HTML, certain tags should omit their close tag. We keep a whitelist for
14556// those special-case tags.
14557var omittedCloseTags={area:true,base:true,br:true,col:true,embed:true,hr:true,img:true,input:true,keygen:true,link:true,meta:true,param:true,source:true,track:true,wbr:true// NOTE: menuitem's close tag should be omitted, but that causes problems.
14558};// `omittedCloseTags` except that `menuitem` should still have its closing tag.
14559var voidElementTags=_assign({menuitem:true},omittedCloseTags);var HTML='__html';var ReactDebugCurrentFrame$3=null;{ReactDebugCurrentFrame$3=ReactSharedInternals.ReactDebugCurrentFrame;}function assertValidProps(tag,props){if(!props){return;}// Note the use of `==` which checks for null or undefined.
14560if(voidElementTags[tag]){if(!(props.children==null&&props.dangerouslySetInnerHTML==null)){{throw Error(tag+" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`."+ReactDebugCurrentFrame$3.getStackAddendum());}}}if(props.dangerouslySetInnerHTML!=null){if(!(props.children==null)){{throw Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");}}if(!(typeof props.dangerouslySetInnerHTML==='object'&&HTML in props.dangerouslySetInnerHTML)){{throw Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.");}}}{if(!props.suppressContentEditableWarning&&props.contentEditable&&props.children!=null){error('A component is `contentEditable` and contains `children` managed by '+'React. It is now your responsibility to guarantee that none of '+'those nodes are unexpectedly modified or duplicated. This is '+'probably not intentional.');}}if(!(props.style==null||typeof props.style==='object')){{throw Error("The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX."+ReactDebugCurrentFrame$3.getStackAddendum());}}}function isCustomComponent(tagName,props){if(tagName.indexOf('-')===-1){return typeof props.is==='string';}switch(tagName){// These are reserved SVG and MathML elements.
14561// We don't mind this whitelist too much because we expect it to never grow.
14562// The alternative is to track the namespace in a few places which is convoluted.
14563// https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts
14564case'annotation-xml':case'color-profile':case'font-face':case'font-face-src':case'font-face-uri':case'font-face-format':case'font-face-name':case'missing-glyph':return false;default:return true;}}// When adding attributes to the HTML or SVG whitelist, be sure to
14565// also add them to this module to ensure casing and incorrect name
14566// warnings.
14567var possibleStandardNames={// HTML
14568accept:'accept',acceptcharset:'acceptCharset','accept-charset':'acceptCharset',accesskey:'accessKey',action:'action',allowfullscreen:'allowFullScreen',alt:'alt',as:'as',async:'async',autocapitalize:'autoCapitalize',autocomplete:'autoComplete',autocorrect:'autoCorrect',autofocus:'autoFocus',autoplay:'autoPlay',autosave:'autoSave',capture:'capture',cellpadding:'cellPadding',cellspacing:'cellSpacing',challenge:'challenge',charset:'charSet',checked:'checked',children:'children',cite:'cite',class:'className',classid:'classID',classname:'className',cols:'cols',colspan:'colSpan',content:'content',contenteditable:'contentEditable',contextmenu:'contextMenu',controls:'controls',controlslist:'controlsList',coords:'coords',crossorigin:'crossOrigin',dangerouslysetinnerhtml:'dangerouslySetInnerHTML',data:'data',datetime:'dateTime',default:'default',defaultchecked:'defaultChecked',defaultvalue:'defaultValue',defer:'defer',dir:'dir',disabled:'disabled',disablepictureinpicture:'disablePictureInPicture',download:'download',draggable:'draggable',enctype:'encType',for:'htmlFor',form:'form',formmethod:'formMethod',formaction:'formAction',formenctype:'formEncType',formnovalidate:'formNoValidate',formtarget:'formTarget',frameborder:'frameBorder',headers:'headers',height:'height',hidden:'hidden',high:'high',href:'href',hreflang:'hrefLang',htmlfor:'htmlFor',httpequiv:'httpEquiv','http-equiv':'httpEquiv',icon:'icon',id:'id',innerhtml:'innerHTML',inputmode:'inputMode',integrity:'integrity',is:'is',itemid:'itemID',itemprop:'itemProp',itemref:'itemRef',itemscope:'itemScope',itemtype:'itemType',keyparams:'keyParams',keytype:'keyType',kind:'kind',label:'label',lang:'lang',list:'list',loop:'loop',low:'low',manifest:'manifest',marginwidth:'marginWidth',marginheight:'marginHeight',max:'max',maxlength:'maxLength',media:'media',mediagroup:'mediaGroup',method:'method',min:'min',minlength:'minLength',multiple:'multiple',muted:'muted',name:'name',nomodule:'noModule',nonce:'nonce',novalidate:'noValidate',open:'open',optimum:'optimum',pattern:'pattern',placeholder:'placeholder',playsinline:'playsInline',poster:'poster',preload:'preload',profile:'profile',radiogroup:'radioGroup',readonly:'readOnly',referrerpolicy:'referrerPolicy',rel:'rel',required:'required',reversed:'reversed',role:'role',rows:'rows',rowspan:'rowSpan',sandbox:'sandbox',scope:'scope',scoped:'scoped',scrolling:'scrolling',seamless:'seamless',selected:'selected',shape:'shape',size:'size',sizes:'sizes',span:'span',spellcheck:'spellCheck',src:'src',srcdoc:'srcDoc',srclang:'srcLang',srcset:'srcSet',start:'start',step:'step',style:'style',summary:'summary',tabindex:'tabIndex',target:'target',title:'title',type:'type',usemap:'useMap',value:'value',width:'width',wmode:'wmode',wrap:'wrap',// SVG
14569about:'about',accentheight:'accentHeight','accent-height':'accentHeight',accumulate:'accumulate',additive:'additive',alignmentbaseline:'alignmentBaseline','alignment-baseline':'alignmentBaseline',allowreorder:'allowReorder',alphabetic:'alphabetic',amplitude:'amplitude',arabicform:'arabicForm','arabic-form':'arabicForm',ascent:'ascent',attributename:'attributeName',attributetype:'attributeType',autoreverse:'autoReverse',azimuth:'azimuth',basefrequency:'baseFrequency',baselineshift:'baselineShift','baseline-shift':'baselineShift',baseprofile:'baseProfile',bbox:'bbox',begin:'begin',bias:'bias',by:'by',calcmode:'calcMode',capheight:'capHeight','cap-height':'capHeight',clip:'clip',clippath:'clipPath','clip-path':'clipPath',clippathunits:'clipPathUnits',cliprule:'clipRule','clip-rule':'clipRule',color:'color',colorinterpolation:'colorInterpolation','color-interpolation':'colorInterpolation',colorinterpolationfilters:'colorInterpolationFilters','color-interpolation-filters':'colorInterpolationFilters',colorprofile:'colorProfile','color-profile':'colorProfile',colorrendering:'colorRendering','color-rendering':'colorRendering',contentscripttype:'contentScriptType',contentstyletype:'contentStyleType',cursor:'cursor',cx:'cx',cy:'cy',d:'d',datatype:'datatype',decelerate:'decelerate',descent:'descent',diffuseconstant:'diffuseConstant',direction:'direction',display:'display',divisor:'divisor',dominantbaseline:'dominantBaseline','dominant-baseline':'dominantBaseline',dur:'dur',dx:'dx',dy:'dy',edgemode:'edgeMode',elevation:'elevation',enablebackground:'enableBackground','enable-background':'enableBackground',end:'end',exponent:'exponent',externalresourcesrequired:'externalResourcesRequired',fill:'fill',fillopacity:'fillOpacity','fill-opacity':'fillOpacity',fillrule:'fillRule','fill-rule':'fillRule',filter:'filter',filterres:'filterRes',filterunits:'filterUnits',floodopacity:'floodOpacity','flood-opacity':'floodOpacity',floodcolor:'floodColor','flood-color':'floodColor',focusable:'focusable',fontfamily:'fontFamily','font-family':'fontFamily',fontsize:'fontSize','font-size':'fontSize',fontsizeadjust:'fontSizeAdjust','font-size-adjust':'fontSizeAdjust',fontstretch:'fontStretch','font-stretch':'fontStretch',fontstyle:'fontStyle','font-style':'fontStyle',fontvariant:'fontVariant','font-variant':'fontVariant',fontweight:'fontWeight','font-weight':'fontWeight',format:'format',from:'from',fx:'fx',fy:'fy',g1:'g1',g2:'g2',glyphname:'glyphName','glyph-name':'glyphName',glyphorientationhorizontal:'glyphOrientationHorizontal','glyph-orientation-horizontal':'glyphOrientationHorizontal',glyphorientationvertical:'glyphOrientationVertical','glyph-orientation-vertical':'glyphOrientationVertical',glyphref:'glyphRef',gradienttransform:'gradientTransform',gradientunits:'gradientUnits',hanging:'hanging',horizadvx:'horizAdvX','horiz-adv-x':'horizAdvX',horizoriginx:'horizOriginX','horiz-origin-x':'horizOriginX',ideographic:'ideographic',imagerendering:'imageRendering','image-rendering':'imageRendering',in2:'in2',in:'in',inlist:'inlist',intercept:'intercept',k1:'k1',k2:'k2',k3:'k3',k4:'k4',k:'k',kernelmatrix:'kernelMatrix',kernelunitlength:'kernelUnitLength',kerning:'kerning',keypoints:'keyPoints',keysplines:'keySplines',keytimes:'keyTimes',lengthadjust:'lengthAdjust',letterspacing:'letterSpacing','letter-spacing':'letterSpacing',lightingcolor:'lightingColor','lighting-color':'lightingColor',limitingconeangle:'limitingConeAngle',local:'local',markerend:'markerEnd','marker-end':'markerEnd',markerheight:'markerHeight',markermid:'markerMid','marker-mid':'markerMid',markerstart:'markerStart','marker-start':'markerStart',markerunits:'markerUnits',markerwidth:'markerWidth',mask:'mask',maskcontentunits:'maskContentUnits',maskunits:'maskUnits',mathematical:'mathematical',mode:'mode',numoctaves:'numOctaves',offset:'offset',opacity:'opacity',operator:'operator',order:'order',orient:'orient',orientation:'orientation',origin:'origin',overflow:'overflow',overlineposition:'overlinePosition','overline-position':'overlinePosition',overlinethickness:'overlineThickness','overline-thickness':'overlineThickness',paintorder:'paintOrder','paint-order':'paintOrder',panose1:'panose1','panose-1':'panose1',pathlength:'pathLength',patterncontentunits:'patternContentUnits',patterntransform:'patternTransform',patternunits:'patternUnits',pointerevents:'pointerEvents','pointer-events':'pointerEvents',points:'points',pointsatx:'pointsAtX',pointsaty:'pointsAtY',pointsatz:'pointsAtZ',prefix:'prefix',preservealpha:'preserveAlpha',preserveaspectratio:'preserveAspectRatio',primitiveunits:'primitiveUnits',property:'property',r:'r',radius:'radius',refx:'refX',refy:'refY',renderingintent:'renderingIntent','rendering-intent':'renderingIntent',repeatcount:'repeatCount',repeatdur:'repeatDur',requiredextensions:'requiredExtensions',requiredfeatures:'requiredFeatures',resource:'resource',restart:'restart',result:'result',results:'results',rotate:'rotate',rx:'rx',ry:'ry',scale:'scale',security:'security',seed:'seed',shaperendering:'shapeRendering','shape-rendering':'shapeRendering',slope:'slope',spacing:'spacing',specularconstant:'specularConstant',specularexponent:'specularExponent',speed:'speed',spreadmethod:'spreadMethod',startoffset:'startOffset',stddeviation:'stdDeviation',stemh:'stemh',stemv:'stemv',stitchtiles:'stitchTiles',stopcolor:'stopColor','stop-color':'stopColor',stopopacity:'stopOpacity','stop-opacity':'stopOpacity',strikethroughposition:'strikethroughPosition','strikethrough-position':'strikethroughPosition',strikethroughthickness:'strikethroughThickness','strikethrough-thickness':'strikethroughThickness',string:'string',stroke:'stroke',strokedasharray:'strokeDasharray','stroke-dasharray':'strokeDasharray',strokedashoffset:'strokeDashoffset','stroke-dashoffset':'strokeDashoffset',strokelinecap:'strokeLinecap','stroke-linecap':'strokeLinecap',strokelinejoin:'strokeLinejoin','stroke-linejoin':'strokeLinejoin',strokemiterlimit:'strokeMiterlimit','stroke-miterlimit':'strokeMiterlimit',strokewidth:'strokeWidth','stroke-width':'strokeWidth',strokeopacity:'strokeOpacity','stroke-opacity':'strokeOpacity',suppresscontenteditablewarning:'suppressContentEditableWarning',suppresshydrationwarning:'suppressHydrationWarning',surfacescale:'surfaceScale',systemlanguage:'systemLanguage',tablevalues:'tableValues',targetx:'targetX',targety:'targetY',textanchor:'textAnchor','text-anchor':'textAnchor',textdecoration:'textDecoration','text-decoration':'textDecoration',textlength:'textLength',textrendering:'textRendering','text-rendering':'textRendering',to:'to',transform:'transform',typeof:'typeof',u1:'u1',u2:'u2',underlineposition:'underlinePosition','underline-position':'underlinePosition',underlinethickness:'underlineThickness','underline-thickness':'underlineThickness',unicode:'unicode',unicodebidi:'unicodeBidi','unicode-bidi':'unicodeBidi',unicoderange:'unicodeRange','unicode-range':'unicodeRange',unitsperem:'unitsPerEm','units-per-em':'unitsPerEm',unselectable:'unselectable',valphabetic:'vAlphabetic','v-alphabetic':'vAlphabetic',values:'values',vectoreffect:'vectorEffect','vector-effect':'vectorEffect',version:'version',vertadvy:'vertAdvY','vert-adv-y':'vertAdvY',vertoriginx:'vertOriginX','vert-origin-x':'vertOriginX',vertoriginy:'vertOriginY','vert-origin-y':'vertOriginY',vhanging:'vHanging','v-hanging':'vHanging',videographic:'vIdeographic','v-ideographic':'vIdeographic',viewbox:'viewBox',viewtarget:'viewTarget',visibility:'visibility',vmathematical:'vMathematical','v-mathematical':'vMathematical',vocab:'vocab',widths:'widths',wordspacing:'wordSpacing','word-spacing':'wordSpacing',writingmode:'writingMode','writing-mode':'writingMode',x1:'x1',x2:'x2',x:'x',xchannelselector:'xChannelSelector',xheight:'xHeight','x-height':'xHeight',xlinkactuate:'xlinkActuate','xlink:actuate':'xlinkActuate',xlinkarcrole:'xlinkArcrole','xlink:arcrole':'xlinkArcrole',xlinkhref:'xlinkHref','xlink:href':'xlinkHref',xlinkrole:'xlinkRole','xlink:role':'xlinkRole',xlinkshow:'xlinkShow','xlink:show':'xlinkShow',xlinktitle:'xlinkTitle','xlink:title':'xlinkTitle',xlinktype:'xlinkType','xlink:type':'xlinkType',xmlbase:'xmlBase','xml:base':'xmlBase',xmllang:'xmlLang','xml:lang':'xmlLang',xmlns:'xmlns','xml:space':'xmlSpace',xmlnsxlink:'xmlnsXlink','xmlns:xlink':'xmlnsXlink',xmlspace:'xmlSpace',y1:'y1',y2:'y2',y:'y',ychannelselector:'yChannelSelector',z:'z',zoomandpan:'zoomAndPan'};var ariaProperties={'aria-current':0,// state
14570'aria-details':0,'aria-disabled':0,// state
14571'aria-hidden':0,// state
14572'aria-invalid':0,// state
14573'aria-keyshortcuts':0,'aria-label':0,'aria-roledescription':0,// Widget Attributes
14574'aria-autocomplete':0,'aria-checked':0,'aria-expanded':0,'aria-haspopup':0,'aria-level':0,'aria-modal':0,'aria-multiline':0,'aria-multiselectable':0,'aria-orientation':0,'aria-placeholder':0,'aria-pressed':0,'aria-readonly':0,'aria-required':0,'aria-selected':0,'aria-sort':0,'aria-valuemax':0,'aria-valuemin':0,'aria-valuenow':0,'aria-valuetext':0,// Live Region Attributes
14575'aria-atomic':0,'aria-busy':0,'aria-live':0,'aria-relevant':0,// Drag-and-Drop Attributes
14576'aria-dropeffect':0,'aria-grabbed':0,// Relationship Attributes
14577'aria-activedescendant':0,'aria-colcount':0,'aria-colindex':0,'aria-colspan':0,'aria-controls':0,'aria-describedby':0,'aria-errormessage':0,'aria-flowto':0,'aria-labelledby':0,'aria-owns':0,'aria-posinset':0,'aria-rowcount':0,'aria-rowindex':0,'aria-rowspan':0,'aria-setsize':0};var warnedProperties={};var rARIA=new RegExp('^(aria)-['+ATTRIBUTE_NAME_CHAR+']*$');var rARIACamel=new RegExp('^(aria)[A-Z]['+ATTRIBUTE_NAME_CHAR+']*$');var hasOwnProperty$1=Object.prototype.hasOwnProperty;function validateProperty(tagName,name){{if(hasOwnProperty$1.call(warnedProperties,name)&&warnedProperties[name]){return true;}if(rARIACamel.test(name)){var ariaName='aria-'+name.slice(4).toLowerCase();var correctName=ariaProperties.hasOwnProperty(ariaName)?ariaName:null;// If this is an aria-* attribute, but is not listed in the known DOM
14578// DOM properties, then it is an invalid aria-* attribute.
14579if(correctName==null){error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.',name);warnedProperties[name]=true;return true;}// aria-* attributes should be lowercase; suggest the lowercase version.
14580if(name!==correctName){error('Invalid ARIA attribute `%s`. Did you mean `%s`?',name,correctName);warnedProperties[name]=true;return true;}}if(rARIA.test(name)){var lowerCasedName=name.toLowerCase();var standardName=ariaProperties.hasOwnProperty(lowerCasedName)?lowerCasedName:null;// If this is an aria-* attribute, but is not listed in the known DOM
14581// DOM properties, then it is an invalid aria-* attribute.
14582if(standardName==null){warnedProperties[name]=true;return false;}// aria-* attributes should be lowercase; suggest the lowercase version.
14583if(name!==standardName){error('Unknown ARIA attribute `%s`. Did you mean `%s`?',name,standardName);warnedProperties[name]=true;return true;}}}return true;}function warnInvalidARIAProps(type,props){{var invalidProps=[];for(var key in props){var isValid=validateProperty(type,key);if(!isValid){invalidProps.push(key);}}var unknownPropString=invalidProps.map(function(prop){return'`'+prop+'`';}).join(', ');if(invalidProps.length===1){error('Invalid aria prop %s on <%s> tag. '+'For details, see https://fb.me/invalid-aria-prop',unknownPropString,type);}else if(invalidProps.length>1){error('Invalid aria props %s on <%s> tag. '+'For details, see https://fb.me/invalid-aria-prop',unknownPropString,type);}}}function validateProperties(type,props){if(isCustomComponent(type,props)){return;}warnInvalidARIAProps(type,props);}var didWarnValueNull=false;function validateProperties$1(type,props){{if(type!=='input'&&type!=='textarea'&&type!=='select'){return;}if(props!=null&&props.value===null&&!didWarnValueNull){didWarnValueNull=true;if(type==='select'&&props.multiple){error('`value` prop on `%s` should not be null. '+'Consider using an empty array when `multiple` is set to `true` '+'to clear the component or `undefined` for uncontrolled components.',type);}else{error('`value` prop on `%s` should not be null. '+'Consider using an empty string to clear the component or `undefined` '+'for uncontrolled components.',type);}}}}var validateProperty$1=function(){};{var warnedProperties$1={};var _hasOwnProperty=Object.prototype.hasOwnProperty;var EVENT_NAME_REGEX=/^on./;var INVALID_EVENT_NAME_REGEX=/^on[^A-Z]/;var rARIA$1=new RegExp('^(aria)-['+ATTRIBUTE_NAME_CHAR+']*$');var rARIACamel$1=new RegExp('^(aria)[A-Z]['+ATTRIBUTE_NAME_CHAR+']*$');validateProperty$1=function(tagName,name,value,canUseEventSystem){if(_hasOwnProperty.call(warnedProperties$1,name)&&warnedProperties$1[name]){return true;}var lowerCasedName=name.toLowerCase();if(lowerCasedName==='onfocusin'||lowerCasedName==='onfocusout'){error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. '+'All React events are normalized to bubble, so onFocusIn and onFocusOut '+'are not needed/supported by React.');warnedProperties$1[name]=true;return true;}// We can't rely on the event system being injected on the server.
14584if(canUseEventSystem){if(registrationNameModules.hasOwnProperty(name)){return true;}var registrationName=possibleRegistrationNames.hasOwnProperty(lowerCasedName)?possibleRegistrationNames[lowerCasedName]:null;if(registrationName!=null){error('Invalid event handler property `%s`. Did you mean `%s`?',name,registrationName);warnedProperties$1[name]=true;return true;}if(EVENT_NAME_REGEX.test(name)){error('Unknown event handler property `%s`. It will be ignored.',name);warnedProperties$1[name]=true;return true;}}else if(EVENT_NAME_REGEX.test(name)){// If no event plugins have been injected, we are in a server environment.
14585// So we can't tell if the event name is correct for sure, but we can filter
14586// out known bad ones like `onclick`. We can't suggest a specific replacement though.
14587if(INVALID_EVENT_NAME_REGEX.test(name)){error('Invalid event handler property `%s`. '+'React events use the camelCase naming convention, for example `onClick`.',name);}warnedProperties$1[name]=true;return true;}// Let the ARIA attribute hook validate ARIA attributes
14588if(rARIA$1.test(name)||rARIACamel$1.test(name)){return true;}if(lowerCasedName==='innerhtml'){error('Directly setting property `innerHTML` is not permitted. '+'For more information, lookup documentation on `dangerouslySetInnerHTML`.');warnedProperties$1[name]=true;return true;}if(lowerCasedName==='aria'){error('The `aria` attribute is reserved for future use in React. '+'Pass individual `aria-` attributes instead.');warnedProperties$1[name]=true;return true;}if(lowerCasedName==='is'&&value!==null&&value!==undefined&&typeof value!=='string'){error('Received a `%s` for a string attribute `is`. If this is expected, cast '+'the value to a string.',typeof value);warnedProperties$1[name]=true;return true;}if(typeof value==='number'&&isNaN(value)){error('Received NaN for the `%s` attribute. If this is expected, cast '+'the value to a string.',name);warnedProperties$1[name]=true;return true;}var propertyInfo=getPropertyInfo(name);var isReserved=propertyInfo!==null&&propertyInfo.type===RESERVED;// Known attributes should match the casing specified in the property config.
14589if(possibleStandardNames.hasOwnProperty(lowerCasedName)){var standardName=possibleStandardNames[lowerCasedName];if(standardName!==name){error('Invalid DOM property `%s`. Did you mean `%s`?',name,standardName);warnedProperties$1[name]=true;return true;}}else if(!isReserved&&name!==lowerCasedName){// Unknown attributes should have lowercase casing since that's how they
14590// will be cased anyway with server rendering.
14591error('React does not recognize the `%s` prop on a DOM element. If you '+'intentionally want it to appear in the DOM as a custom '+'attribute, spell it as lowercase `%s` instead. '+'If you accidentally passed it from a parent component, remove '+'it from the DOM element.',name,lowerCasedName);warnedProperties$1[name]=true;return true;}if(typeof value==='boolean'&&shouldRemoveAttributeWithWarning(name,value,propertyInfo,false)){if(value){error('Received `%s` for a non-boolean attribute `%s`.\n\n'+'If you want to write it to the DOM, pass a string instead: '+'%s="%s" or %s={value.toString()}.',value,name,name,value,name);}else{error('Received `%s` for a non-boolean attribute `%s`.\n\n'+'If you want to write it to the DOM, pass a string instead: '+'%s="%s" or %s={value.toString()}.\n\n'+'If you used to conditionally omit it with %s={condition && value}, '+'pass %s={condition ? value : undefined} instead.',value,name,name,value,name,name,name);}warnedProperties$1[name]=true;return true;}// Now that we've validated casing, do not validate
14592// data types for reserved props
14593if(isReserved){return true;}// Warn when a known attribute is a bad type
14594if(shouldRemoveAttributeWithWarning(name,value,propertyInfo,false)){warnedProperties$1[name]=true;return false;}// Warn when passing the strings 'false' or 'true' into a boolean prop
14595if((value==='false'||value==='true')&&propertyInfo!==null&&propertyInfo.type===BOOLEAN){error('Received the string `%s` for the boolean attribute `%s`. '+'%s '+'Did you mean %s={%s}?',value,name,value==='false'?'The browser will interpret it as a truthy value.':'Although this works, it will not work as expected if you pass the string "false".',name,value);warnedProperties$1[name]=true;return true;}return true;};}var warnUnknownProperties=function(type,props,canUseEventSystem){{var unknownProps=[];for(var key in props){var isValid=validateProperty$1(type,key,props[key],canUseEventSystem);if(!isValid){unknownProps.push(key);}}var unknownPropString=unknownProps.map(function(prop){return'`'+prop+'`';}).join(', ');if(unknownProps.length===1){error('Invalid value for prop %s on <%s> tag. Either remove it from the element, '+'or pass a string or number value to keep it in the DOM. '+'For details, see https://fb.me/react-attribute-behavior',unknownPropString,type);}else if(unknownProps.length>1){error('Invalid values for props %s on <%s> tag. Either remove them from the element, '+'or pass a string or number value to keep them in the DOM. '+'For details, see https://fb.me/react-attribute-behavior',unknownPropString,type);}}};function validateProperties$2(type,props,canUseEventSystem){if(isCustomComponent(type,props)){return;}warnUnknownProperties(type,props,canUseEventSystem);}var didWarnInvalidHydration=false;var DANGEROUSLY_SET_INNER_HTML='dangerouslySetInnerHTML';var SUPPRESS_CONTENT_EDITABLE_WARNING='suppressContentEditableWarning';var SUPPRESS_HYDRATION_WARNING='suppressHydrationWarning';var AUTOFOCUS='autoFocus';var CHILDREN='children';var STYLE='style';var HTML$1='__html';var HTML_NAMESPACE$1=Namespaces.html;var warnedUnknownTags;var suppressHydrationWarning;var validatePropertiesInDevelopment;var warnForTextDifference;var warnForPropDifference;var warnForExtraAttributes;var warnForInvalidEventListener;var canDiffStyleForHydrationWarning;var normalizeMarkupForTextOrAttribute;var normalizeHTML;{warnedUnknownTags={// Chrome is the only major browser not shipping <time>. But as of July
14596// 2017 it intends to ship it due to widespread usage. We intentionally
14597// *don't* warn for <time> even if it's unrecognized by Chrome because
14598// it soon will be, and many apps have been using it anyway.
14599time:true,// There are working polyfills for <dialog>. Let people use it.
14600dialog:true,// Electron ships a custom <webview> tag to display external web content in
14601// an isolated frame and process.
14602// This tag is not present in non Electron environments such as JSDom which
14603// is often used for testing purposes.
14604// @see https://electronjs.org/docs/api/webview-tag
14605webview:true};validatePropertiesInDevelopment=function(type,props){validateProperties(type,props);validateProperties$1(type,props);validateProperties$2(type,props,/* canUseEventSystem */true);};// IE 11 parses & normalizes the style attribute as opposed to other
14606// browsers. It adds spaces and sorts the properties in some
14607// non-alphabetical order. Handling that would require sorting CSS
14608// properties in the client & server versions or applying
14609// `expectedStyle` to a temporary DOM node to read its `style` attribute
14610// normalized. Since it only affects IE, we're skipping style warnings
14611// in that browser completely in favor of doing all that work.
14612// See https://github.com/facebook/react/issues/11807
14613canDiffStyleForHydrationWarning=canUseDOM&&!document.documentMode;// HTML parsing normalizes CR and CRLF to LF.
14614// It also can turn \u0000 into \uFFFD inside attributes.
14615// https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream
14616// If we have a mismatch, it might be caused by that.
14617// We will still patch up in this case but not fire the warning.
14618var NORMALIZE_NEWLINES_REGEX=/\r\n?/g;var NORMALIZE_NULL_AND_REPLACEMENT_REGEX=/\u0000|\uFFFD/g;normalizeMarkupForTextOrAttribute=function(markup){var markupString=typeof markup==='string'?markup:''+markup;return markupString.replace(NORMALIZE_NEWLINES_REGEX,'\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX,'');};warnForTextDifference=function(serverText,clientText){if(didWarnInvalidHydration){return;}var normalizedClientText=normalizeMarkupForTextOrAttribute(clientText);var normalizedServerText=normalizeMarkupForTextOrAttribute(serverText);if(normalizedServerText===normalizedClientText){return;}didWarnInvalidHydration=true;error('Text content did not match. Server: "%s" Client: "%s"',normalizedServerText,normalizedClientText);};warnForPropDifference=function(propName,serverValue,clientValue){if(didWarnInvalidHydration){return;}var normalizedClientValue=normalizeMarkupForTextOrAttribute(clientValue);var normalizedServerValue=normalizeMarkupForTextOrAttribute(serverValue);if(normalizedServerValue===normalizedClientValue){return;}didWarnInvalidHydration=true;error('Prop `%s` did not match. Server: %s Client: %s',propName,JSON.stringify(normalizedServerValue),JSON.stringify(normalizedClientValue));};warnForExtraAttributes=function(attributeNames){if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;var names=[];attributeNames.forEach(function(name){names.push(name);});error('Extra attributes from the server: %s',names);};warnForInvalidEventListener=function(registrationName,listener){if(listener===false){error('Expected `%s` listener to be a function, instead got `false`.\n\n'+'If you used to conditionally omit it with %s={condition && value}, '+'pass %s={condition ? value : undefined} instead.',registrationName,registrationName,registrationName);}else{error('Expected `%s` listener to be a function, instead got a value of `%s` type.',registrationName,typeof listener);}};// Parse the HTML and read it back to normalize the HTML string so that it
14619// can be used for comparison.
14620normalizeHTML=function(parent,html){// We could have created a separate document here to avoid
14621// re-initializing custom elements if they exist. But this breaks
14622// how <noscript> is being handled. So we use the same document.
14623// See the discussion in https://github.com/facebook/react/pull/11157.
14624var testElement=parent.namespaceURI===HTML_NAMESPACE$1?parent.ownerDocument.createElement(parent.tagName):parent.ownerDocument.createElementNS(parent.namespaceURI,parent.tagName);testElement.innerHTML=html;return testElement.innerHTML;};}function ensureListeningTo(rootContainerElement,registrationName){var isDocumentOrFragment=rootContainerElement.nodeType===DOCUMENT_NODE||rootContainerElement.nodeType===DOCUMENT_FRAGMENT_NODE;var doc=isDocumentOrFragment?rootContainerElement:rootContainerElement.ownerDocument;legacyListenToEvent(registrationName,doc);}function getOwnerDocumentFromRootContainer(rootContainerElement){return rootContainerElement.nodeType===DOCUMENT_NODE?rootContainerElement:rootContainerElement.ownerDocument;}function noop(){}function trapClickOnNonInteractiveElement(node){// Mobile Safari does not fire properly bubble click events on
14625// non-interactive elements, which means delegated click listeners do not
14626// fire. The workaround for this bug involves attaching an empty click
14627// listener on the target node.
14628// http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
14629// Just set it using the onclick property so that we don't have to manage any
14630// bookkeeping for it. Not sure if we need to clear it when the listener is
14631// removed.
14632// TODO: Only do this for the relevant Safaris maybe?
14633node.onclick=noop;}function setInitialDOMProperties(tag,domElement,rootContainerElement,nextProps,isCustomComponentTag){for(var propKey in nextProps){if(!nextProps.hasOwnProperty(propKey)){continue;}var nextProp=nextProps[propKey];if(propKey===STYLE){{if(nextProp){// Freeze the next style object so that we can assume it won't be
14634// mutated. We have already warned for this in the past.
14635Object.freeze(nextProp);}}// Relies on `updateStylesByID` not mutating `styleUpdates`.
14636setValueForStyles(domElement,nextProp);}else if(propKey===DANGEROUSLY_SET_INNER_HTML){var nextHtml=nextProp?nextProp[HTML$1]:undefined;if(nextHtml!=null){setInnerHTML(domElement,nextHtml);}}else if(propKey===CHILDREN){if(typeof nextProp==='string'){// Avoid setting initial textContent when the text is empty. In IE11 setting
14637// textContent on a <textarea> will cause the placeholder to not
14638// show within the <textarea> until it has been focused and blurred again.
14639// https://github.com/facebook/react/issues/6731#issuecomment-254874553
14640var canSetTextContent=tag!=='textarea'||nextProp!=='';if(canSetTextContent){setTextContent(domElement,nextProp);}}else if(typeof nextProp==='number'){setTextContent(domElement,''+nextProp);}}else if(propKey===SUPPRESS_CONTENT_EDITABLE_WARNING||propKey===SUPPRESS_HYDRATION_WARNING);else if(propKey===AUTOFOCUS);else if(registrationNameModules.hasOwnProperty(propKey)){if(nextProp!=null){if(typeof nextProp!=='function'){warnForInvalidEventListener(propKey,nextProp);}ensureListeningTo(rootContainerElement,propKey);}}else if(nextProp!=null){setValueForProperty(domElement,propKey,nextProp,isCustomComponentTag);}}}function updateDOMProperties(domElement,updatePayload,wasCustomComponentTag,isCustomComponentTag){// TODO: Handle wasCustomComponentTag
14641for(var i=0;i<updatePayload.length;i+=2){var propKey=updatePayload[i];var propValue=updatePayload[i+1];if(propKey===STYLE){setValueForStyles(domElement,propValue);}else if(propKey===DANGEROUSLY_SET_INNER_HTML){setInnerHTML(domElement,propValue);}else if(propKey===CHILDREN){setTextContent(domElement,propValue);}else{setValueForProperty(domElement,propKey,propValue,isCustomComponentTag);}}}function createElement(type,props,rootContainerElement,parentNamespace){var isCustomComponentTag;// We create tags in the namespace of their parent container, except HTML
14642// tags get no namespace.
14643var ownerDocument=getOwnerDocumentFromRootContainer(rootContainerElement);var domElement;var namespaceURI=parentNamespace;if(namespaceURI===HTML_NAMESPACE$1){namespaceURI=getIntrinsicNamespace(type);}if(namespaceURI===HTML_NAMESPACE$1){{isCustomComponentTag=isCustomComponent(type,props);// Should this check be gated by parent namespace? Not sure we want to
14644// allow <SVG> or <mATH>.
14645if(!isCustomComponentTag&&type!==type.toLowerCase()){error('<%s /> is using incorrect casing. '+'Use PascalCase for React components, '+'or lowercase for HTML elements.',type);}}if(type==='script'){// Create the script via .innerHTML so its "parser-inserted" flag is
14646// set to true and it does not execute
14647var div=ownerDocument.createElement('div');div.innerHTML='<script><'+'/script>';// eslint-disable-line
14648// This is guaranteed to yield a script element.
14649var firstChild=div.firstChild;domElement=div.removeChild(firstChild);}else if(typeof props.is==='string'){// $FlowIssue `createElement` should be updated for Web Components
14650domElement=ownerDocument.createElement(type,{is:props.is});}else{// Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.
14651// See discussion in https://github.com/facebook/react/pull/6896
14652// and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
14653domElement=ownerDocument.createElement(type);// Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`
14654// attributes on `select`s needs to be added before `option`s are inserted.
14655// This prevents:
14656// - a bug where the `select` does not scroll to the correct option because singular
14657//  `select` elements automatically pick the first item #13222
14658// - a bug where the `select` set the first item as selected despite the `size` attribute #14239
14659// See https://github.com/facebook/react/issues/13222
14660// and https://github.com/facebook/react/issues/14239
14661if(type==='select'){var node=domElement;if(props.multiple){node.multiple=true;}else if(props.size){// Setting a size greater than 1 causes a select to behave like `multiple=true`, where
14662// it is possible that no option is selected.
14663//
14664// This is only necessary when a select in "single selection mode".
14665node.size=props.size;}}}}else{domElement=ownerDocument.createElementNS(namespaceURI,type);}{if(namespaceURI===HTML_NAMESPACE$1){if(!isCustomComponentTag&&Object.prototype.toString.call(domElement)==='[object HTMLUnknownElement]'&&!Object.prototype.hasOwnProperty.call(warnedUnknownTags,type)){warnedUnknownTags[type]=true;error('The tag <%s> is unrecognized in this browser. '+'If you meant to render a React component, start its name with '+'an uppercase letter.',type);}}}return domElement;}function createTextNode(text,rootContainerElement){return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);}function setInitialProperties(domElement,tag,rawProps,rootContainerElement){var isCustomComponentTag=isCustomComponent(tag,rawProps);{validatePropertiesInDevelopment(tag,rawProps);}// TODO: Make sure that we check isMounted before firing any of these events.
14666var props;switch(tag){case'iframe':case'object':case'embed':trapBubbledEvent(TOP_LOAD,domElement);props=rawProps;break;case'video':case'audio':// Create listener for each media event
14667for(var i=0;i<mediaEventTypes.length;i++){trapBubbledEvent(mediaEventTypes[i],domElement);}props=rawProps;break;case'source':trapBubbledEvent(TOP_ERROR,domElement);props=rawProps;break;case'img':case'image':case'link':trapBubbledEvent(TOP_ERROR,domElement);trapBubbledEvent(TOP_LOAD,domElement);props=rawProps;break;case'form':trapBubbledEvent(TOP_RESET,domElement);trapBubbledEvent(TOP_SUBMIT,domElement);props=rawProps;break;case'details':trapBubbledEvent(TOP_TOGGLE,domElement);props=rawProps;break;case'input':initWrapperState(domElement,rawProps);props=getHostProps(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening
14668// to onChange. Even if there is no listener.
14669ensureListeningTo(rootContainerElement,'onChange');break;case'option':validateProps(domElement,rawProps);props=getHostProps$1(domElement,rawProps);break;case'select':initWrapperState$1(domElement,rawProps);props=getHostProps$2(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening
14670// to onChange. Even if there is no listener.
14671ensureListeningTo(rootContainerElement,'onChange');break;case'textarea':initWrapperState$2(domElement,rawProps);props=getHostProps$3(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening
14672// to onChange. Even if there is no listener.
14673ensureListeningTo(rootContainerElement,'onChange');break;default:props=rawProps;}assertValidProps(tag,props);setInitialDOMProperties(tag,domElement,rootContainerElement,props,isCustomComponentTag);switch(tag){case'input':// TODO: Make sure we check if this is still unmounted or do any clean
14674// up necessary since we never stop tracking anymore.
14675track(domElement);postMountWrapper(domElement,rawProps,false);break;case'textarea':// TODO: Make sure we check if this is still unmounted or do any clean
14676// up necessary since we never stop tracking anymore.
14677track(domElement);postMountWrapper$3(domElement);break;case'option':postMountWrapper$1(domElement,rawProps);break;case'select':postMountWrapper$2(domElement,rawProps);break;default:if(typeof props.onClick==='function'){// TODO: This cast may not be sound for SVG, MathML or custom elements.
14678trapClickOnNonInteractiveElement(domElement);}break;}}// Calculate the diff between the two objects.
14679function diffProperties(domElement,tag,lastRawProps,nextRawProps,rootContainerElement){{validatePropertiesInDevelopment(tag,nextRawProps);}var updatePayload=null;var lastProps;var nextProps;switch(tag){case'input':lastProps=getHostProps(domElement,lastRawProps);nextProps=getHostProps(domElement,nextRawProps);updatePayload=[];break;case'option':lastProps=getHostProps$1(domElement,lastRawProps);nextProps=getHostProps$1(domElement,nextRawProps);updatePayload=[];break;case'select':lastProps=getHostProps$2(domElement,lastRawProps);nextProps=getHostProps$2(domElement,nextRawProps);updatePayload=[];break;case'textarea':lastProps=getHostProps$3(domElement,lastRawProps);nextProps=getHostProps$3(domElement,nextRawProps);updatePayload=[];break;default:lastProps=lastRawProps;nextProps=nextRawProps;if(typeof lastProps.onClick!=='function'&&typeof nextProps.onClick==='function'){// TODO: This cast may not be sound for SVG, MathML or custom elements.
14680trapClickOnNonInteractiveElement(domElement);}break;}assertValidProps(tag,nextProps);var propKey;var styleName;var styleUpdates=null;for(propKey in lastProps){if(nextProps.hasOwnProperty(propKey)||!lastProps.hasOwnProperty(propKey)||lastProps[propKey]==null){continue;}if(propKey===STYLE){var lastStyle=lastProps[propKey];for(styleName in lastStyle){if(lastStyle.hasOwnProperty(styleName)){if(!styleUpdates){styleUpdates={};}styleUpdates[styleName]='';}}}else if(propKey===DANGEROUSLY_SET_INNER_HTML||propKey===CHILDREN);else if(propKey===SUPPRESS_CONTENT_EDITABLE_WARNING||propKey===SUPPRESS_HYDRATION_WARNING);else if(propKey===AUTOFOCUS);else if(registrationNameModules.hasOwnProperty(propKey)){// This is a special case. If any listener updates we need to ensure
14681// that the "current" fiber pointer gets updated so we need a commit
14682// to update this element.
14683if(!updatePayload){updatePayload=[];}}else{// For all other deleted properties we add it to the queue. We use
14684// the whitelist in the commit phase instead.
14685(updatePayload=updatePayload||[]).push(propKey,null);}}for(propKey in nextProps){var nextProp=nextProps[propKey];var lastProp=lastProps!=null?lastProps[propKey]:undefined;if(!nextProps.hasOwnProperty(propKey)||nextProp===lastProp||nextProp==null&&lastProp==null){continue;}if(propKey===STYLE){{if(nextProp){// Freeze the next style object so that we can assume it won't be
14686// mutated. We have already warned for this in the past.
14687Object.freeze(nextProp);}}if(lastProp){// Unset styles on `lastProp` but not on `nextProp`.
14688for(styleName in lastProp){if(lastProp.hasOwnProperty(styleName)&&(!nextProp||!nextProp.hasOwnProperty(styleName))){if(!styleUpdates){styleUpdates={};}styleUpdates[styleName]='';}}// Update styles that changed since `lastProp`.
14689for(styleName in nextProp){if(nextProp.hasOwnProperty(styleName)&&lastProp[styleName]!==nextProp[styleName]){if(!styleUpdates){styleUpdates={};}styleUpdates[styleName]=nextProp[styleName];}}}else{// Relies on `updateStylesByID` not mutating `styleUpdates`.
14690if(!styleUpdates){if(!updatePayload){updatePayload=[];}updatePayload.push(propKey,styleUpdates);}styleUpdates=nextProp;}}else if(propKey===DANGEROUSLY_SET_INNER_HTML){var nextHtml=nextProp?nextProp[HTML$1]:undefined;var lastHtml=lastProp?lastProp[HTML$1]:undefined;if(nextHtml!=null){if(lastHtml!==nextHtml){(updatePayload=updatePayload||[]).push(propKey,nextHtml);}}}else if(propKey===CHILDREN){if(lastProp!==nextProp&&(typeof nextProp==='string'||typeof nextProp==='number')){(updatePayload=updatePayload||[]).push(propKey,''+nextProp);}}else if(propKey===SUPPRESS_CONTENT_EDITABLE_WARNING||propKey===SUPPRESS_HYDRATION_WARNING);else if(registrationNameModules.hasOwnProperty(propKey)){if(nextProp!=null){// We eagerly listen to this even though we haven't committed yet.
14691if(typeof nextProp!=='function'){warnForInvalidEventListener(propKey,nextProp);}ensureListeningTo(rootContainerElement,propKey);}if(!updatePayload&&lastProp!==nextProp){// This is a special case. If any listener updates we need to ensure
14692// that the "current" props pointer gets updated so we need a commit
14693// to update this element.
14694updatePayload=[];}}else{// For any other property we always add it to the queue and then we
14695// filter it out using the whitelist during the commit.
14696(updatePayload=updatePayload||[]).push(propKey,nextProp);}}if(styleUpdates){{validateShorthandPropertyCollisionInDev(styleUpdates,nextProps[STYLE]);}(updatePayload=updatePayload||[]).push(STYLE,styleUpdates);}return updatePayload;}// Apply the diff.
14697function updateProperties(domElement,updatePayload,tag,lastRawProps,nextRawProps){// Update checked *before* name.
14698// In the middle of an update, it is possible to have multiple checked.
14699// When a checked radio tries to change name, browser makes another radio's checked false.
14700if(tag==='input'&&nextRawProps.type==='radio'&&nextRawProps.name!=null){updateChecked(domElement,nextRawProps);}var wasCustomComponentTag=isCustomComponent(tag,lastRawProps);var isCustomComponentTag=isCustomComponent(tag,nextRawProps);// Apply the diff.
14701updateDOMProperties(domElement,updatePayload,wasCustomComponentTag,isCustomComponentTag);// TODO: Ensure that an update gets scheduled if any of the special props
14702// changed.
14703switch(tag){case'input':// Update the wrapper around inputs *after* updating props. This has to
14704// happen after `updateDOMProperties`. Otherwise HTML5 input validations
14705// raise warnings and prevent the new value from being assigned.
14706updateWrapper(domElement,nextRawProps);break;case'textarea':updateWrapper$1(domElement,nextRawProps);break;case'select':// <select> value update needs to occur after <option> children
14707// reconciliation
14708postUpdateWrapper(domElement,nextRawProps);break;}}function getPossibleStandardName(propName){{var lowerCasedName=propName.toLowerCase();if(!possibleStandardNames.hasOwnProperty(lowerCasedName)){return null;}return possibleStandardNames[lowerCasedName]||null;}}function diffHydratedProperties(domElement,tag,rawProps,parentNamespace,rootContainerElement){var isCustomComponentTag;var extraAttributeNames;{suppressHydrationWarning=rawProps[SUPPRESS_HYDRATION_WARNING]===true;isCustomComponentTag=isCustomComponent(tag,rawProps);validatePropertiesInDevelopment(tag,rawProps);}// TODO: Make sure that we check isMounted before firing any of these events.
14709switch(tag){case'iframe':case'object':case'embed':trapBubbledEvent(TOP_LOAD,domElement);break;case'video':case'audio':// Create listener for each media event
14710for(var i=0;i<mediaEventTypes.length;i++){trapBubbledEvent(mediaEventTypes[i],domElement);}break;case'source':trapBubbledEvent(TOP_ERROR,domElement);break;case'img':case'image':case'link':trapBubbledEvent(TOP_ERROR,domElement);trapBubbledEvent(TOP_LOAD,domElement);break;case'form':trapBubbledEvent(TOP_RESET,domElement);trapBubbledEvent(TOP_SUBMIT,domElement);break;case'details':trapBubbledEvent(TOP_TOGGLE,domElement);break;case'input':initWrapperState(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening
14711// to onChange. Even if there is no listener.
14712ensureListeningTo(rootContainerElement,'onChange');break;case'option':validateProps(domElement,rawProps);break;case'select':initWrapperState$1(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening
14713// to onChange. Even if there is no listener.
14714ensureListeningTo(rootContainerElement,'onChange');break;case'textarea':initWrapperState$2(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening
14715// to onChange. Even if there is no listener.
14716ensureListeningTo(rootContainerElement,'onChange');break;}assertValidProps(tag,rawProps);{extraAttributeNames=new Set();var attributes=domElement.attributes;for(var _i=0;_i<attributes.length;_i++){var name=attributes[_i].name.toLowerCase();switch(name){// Built-in SSR attribute is whitelisted
14717case'data-reactroot':break;// Controlled attributes are not validated
14718// TODO: Only ignore them on controlled tags.
14719case'value':break;case'checked':break;case'selected':break;default:// Intentionally use the original name.
14720// See discussion in https://github.com/facebook/react/pull/10676.
14721extraAttributeNames.add(attributes[_i].name);}}}var updatePayload=null;for(var propKey in rawProps){if(!rawProps.hasOwnProperty(propKey)){continue;}var nextProp=rawProps[propKey];if(propKey===CHILDREN){// For text content children we compare against textContent. This
14722// might match additional HTML that is hidden when we read it using
14723// textContent. E.g. "foo" will match "f<span>oo</span>" but that still
14724// satisfies our requirement. Our requirement is not to produce perfect
14725// HTML and attributes. Ideally we should preserve structure but it's
14726// ok not to if the visible content is still enough to indicate what
14727// even listeners these nodes might be wired up to.
14728// TODO: Warn if there is more than a single textNode as a child.
14729// TODO: Should we use domElement.firstChild.nodeValue to compare?
14730if(typeof nextProp==='string'){if(domElement.textContent!==nextProp){if(!suppressHydrationWarning){warnForTextDifference(domElement.textContent,nextProp);}updatePayload=[CHILDREN,nextProp];}}else if(typeof nextProp==='number'){if(domElement.textContent!==''+nextProp){if(!suppressHydrationWarning){warnForTextDifference(domElement.textContent,nextProp);}updatePayload=[CHILDREN,''+nextProp];}}}else if(registrationNameModules.hasOwnProperty(propKey)){if(nextProp!=null){if(typeof nextProp!=='function'){warnForInvalidEventListener(propKey,nextProp);}ensureListeningTo(rootContainerElement,propKey);}}else if(// Convince Flow we've calculated it (it's DEV-only in this method.)
14731typeof isCustomComponentTag==='boolean'){// Validate that the properties correspond to their expected values.
14732var serverValue=void 0;var propertyInfo=getPropertyInfo(propKey);if(suppressHydrationWarning);else if(propKey===SUPPRESS_CONTENT_EDITABLE_WARNING||propKey===SUPPRESS_HYDRATION_WARNING||// Controlled attributes are not validated
14733// TODO: Only ignore them on controlled tags.
14734propKey==='value'||propKey==='checked'||propKey==='selected');else if(propKey===DANGEROUSLY_SET_INNER_HTML){var serverHTML=domElement.innerHTML;var nextHtml=nextProp?nextProp[HTML$1]:undefined;var expectedHTML=normalizeHTML(domElement,nextHtml!=null?nextHtml:'');if(expectedHTML!==serverHTML){warnForPropDifference(propKey,serverHTML,expectedHTML);}}else if(propKey===STYLE){// $FlowFixMe - Should be inferred as not undefined.
14735extraAttributeNames.delete(propKey);if(canDiffStyleForHydrationWarning){var expectedStyle=createDangerousStringForStyles(nextProp);serverValue=domElement.getAttribute('style');if(expectedStyle!==serverValue){warnForPropDifference(propKey,serverValue,expectedStyle);}}}else if(isCustomComponentTag){// $FlowFixMe - Should be inferred as not undefined.
14736extraAttributeNames.delete(propKey.toLowerCase());serverValue=getValueForAttribute(domElement,propKey,nextProp);if(nextProp!==serverValue){warnForPropDifference(propKey,serverValue,nextProp);}}else if(!shouldIgnoreAttribute(propKey,propertyInfo,isCustomComponentTag)&&!shouldRemoveAttribute(propKey,nextProp,propertyInfo,isCustomComponentTag)){var isMismatchDueToBadCasing=false;if(propertyInfo!==null){// $FlowFixMe - Should be inferred as not undefined.
14737extraAttributeNames.delete(propertyInfo.attributeName);serverValue=getValueForProperty(domElement,propKey,nextProp,propertyInfo);}else{var ownNamespace=parentNamespace;if(ownNamespace===HTML_NAMESPACE$1){ownNamespace=getIntrinsicNamespace(tag);}if(ownNamespace===HTML_NAMESPACE$1){// $FlowFixMe - Should be inferred as not undefined.
14738extraAttributeNames.delete(propKey.toLowerCase());}else{var standardName=getPossibleStandardName(propKey);if(standardName!==null&&standardName!==propKey){// If an SVG prop is supplied with bad casing, it will
14739// be successfully parsed from HTML, but will produce a mismatch
14740// (and would be incorrectly rendered on the client).
14741// However, we already warn about bad casing elsewhere.
14742// So we'll skip the misleading extra mismatch warning in this case.
14743isMismatchDueToBadCasing=true;// $FlowFixMe - Should be inferred as not undefined.
14744extraAttributeNames.delete(standardName);}// $FlowFixMe - Should be inferred as not undefined.
14745extraAttributeNames.delete(propKey);}serverValue=getValueForAttribute(domElement,propKey,nextProp);}if(nextProp!==serverValue&&!isMismatchDueToBadCasing){warnForPropDifference(propKey,serverValue,nextProp);}}}}{// $FlowFixMe - Should be inferred as not undefined.
14746if(extraAttributeNames.size>0&&!suppressHydrationWarning){// $FlowFixMe - Should be inferred as not undefined.
14747warnForExtraAttributes(extraAttributeNames);}}switch(tag){case'input':// TODO: Make sure we check if this is still unmounted or do any clean
14748// up necessary since we never stop tracking anymore.
14749track(domElement);postMountWrapper(domElement,rawProps,true);break;case'textarea':// TODO: Make sure we check if this is still unmounted or do any clean
14750// up necessary since we never stop tracking anymore.
14751track(domElement);postMountWrapper$3(domElement);break;case'select':case'option':// For input and textarea we current always set the value property at
14752// post mount to force it to diverge from attributes. However, for
14753// option and select we don't quite do the same thing and select
14754// is not resilient to the DOM state changing so we don't do that here.
14755// TODO: Consider not doing this for input and textarea.
14756break;default:if(typeof rawProps.onClick==='function'){// TODO: This cast may not be sound for SVG, MathML or custom elements.
14757trapClickOnNonInteractiveElement(domElement);}break;}return updatePayload;}function diffHydratedText(textNode,text){var isDifferent=textNode.nodeValue!==text;return isDifferent;}function warnForUnmatchedText(textNode,text){{warnForTextDifference(textNode.nodeValue,text);}}function warnForDeletedHydratableElement(parentNode,child){{if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;error('Did not expect server HTML to contain a <%s> in <%s>.',child.nodeName.toLowerCase(),parentNode.nodeName.toLowerCase());}}function warnForDeletedHydratableText(parentNode,child){{if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;error('Did not expect server HTML to contain the text node "%s" in <%s>.',child.nodeValue,parentNode.nodeName.toLowerCase());}}function warnForInsertedHydratedElement(parentNode,tag,props){{if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;error('Expected server HTML to contain a matching <%s> in <%s>.',tag,parentNode.nodeName.toLowerCase());}}function warnForInsertedHydratedText(parentNode,text){{if(text===''){// We expect to insert empty text nodes since they're not represented in
14758// the HTML.
14759// TODO: Remove this special case if we can just avoid inserting empty
14760// text nodes.
14761return;}if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;error('Expected server HTML to contain a matching text node for "%s" in <%s>.',text,parentNode.nodeName.toLowerCase());}}function restoreControlledState$3(domElement,tag,props){switch(tag){case'input':restoreControlledState(domElement,props);return;case'textarea':restoreControlledState$2(domElement,props);return;case'select':restoreControlledState$1(domElement,props);return;}}function getActiveElement(doc){doc=doc||(typeof document!=='undefined'?document:undefined);if(typeof doc==='undefined'){return null;}try{return doc.activeElement||doc.body;}catch(e){return doc.body;}}/**
14762 * Given any node return the first leaf node without children.
14763 *
14764 * @param {DOMElement|DOMTextNode} node
14765 * @return {DOMElement|DOMTextNode}
14766 */function getLeafNode(node){while(node&&node.firstChild){node=node.firstChild;}return node;}/**
14767 * Get the next sibling within a container. This will walk up the
14768 * DOM if a node's siblings have been exhausted.
14769 *
14770 * @param {DOMElement|DOMTextNode} node
14771 * @return {?DOMElement|DOMTextNode}
14772 */function getSiblingNode(node){while(node){if(node.nextSibling){return node.nextSibling;}node=node.parentNode;}}/**
14773 * Get object describing the nodes which contain characters at offset.
14774 *
14775 * @param {DOMElement|DOMTextNode} root
14776 * @param {number} offset
14777 * @return {?object}
14778 */function getNodeForCharacterOffset(root,offset){var node=getLeafNode(root);var nodeStart=0;var nodeEnd=0;while(node){if(node.nodeType===TEXT_NODE){nodeEnd=nodeStart+node.textContent.length;if(nodeStart<=offset&&nodeEnd>=offset){return{node:node,offset:offset-nodeStart};}nodeStart=nodeEnd;}node=getLeafNode(getSiblingNode(node));}}/**
14779 * @param {DOMElement} outerNode
14780 * @return {?object}
14781 */function getOffsets(outerNode){var ownerDocument=outerNode.ownerDocument;var win=ownerDocument&&ownerDocument.defaultView||window;var selection=win.getSelection&&win.getSelection();if(!selection||selection.rangeCount===0){return null;}var anchorNode=selection.anchorNode,anchorOffset=selection.anchorOffset,focusNode=selection.focusNode,focusOffset=selection.focusOffset;// In Firefox, anchorNode and focusNode can be "anonymous divs", e.g. the
14782// up/down buttons on an <input type="number">. Anonymous divs do not seem to
14783// expose properties, triggering a "Permission denied error" if any of its
14784// properties are accessed. The only seemingly possible way to avoid erroring
14785// is to access a property that typically works for non-anonymous divs and
14786// catch any error that may otherwise arise. See
14787// https://bugzilla.mozilla.org/show_bug.cgi?id=208427
14788try{/* eslint-disable no-unused-expressions */anchorNode.nodeType;focusNode.nodeType;/* eslint-enable no-unused-expressions */}catch(e){return null;}return getModernOffsetsFromPoints(outerNode,anchorNode,anchorOffset,focusNode,focusOffset);}/**
14789 * Returns {start, end} where `start` is the character/codepoint index of
14790 * (anchorNode, anchorOffset) within the textContent of `outerNode`, and
14791 * `end` is the index of (focusNode, focusOffset).
14792 *
14793 * Returns null if you pass in garbage input but we should probably just crash.
14794 *
14795 * Exported only for testing.
14796 */function getModernOffsetsFromPoints(outerNode,anchorNode,anchorOffset,focusNode,focusOffset){var length=0;var start=-1;var end=-1;var indexWithinAnchor=0;var indexWithinFocus=0;var node=outerNode;var parentNode=null;outer:while(true){var next=null;while(true){if(node===anchorNode&&(anchorOffset===0||node.nodeType===TEXT_NODE)){start=length+anchorOffset;}if(node===focusNode&&(focusOffset===0||node.nodeType===TEXT_NODE)){end=length+focusOffset;}if(node.nodeType===TEXT_NODE){length+=node.nodeValue.length;}if((next=node.firstChild)===null){break;}// Moving from `node` to its first child `next`.
14797parentNode=node;node=next;}while(true){if(node===outerNode){// If `outerNode` has children, this is always the second time visiting
14798// it. If it has no children, this is still the first loop, and the only
14799// valid selection is anchorNode and focusNode both equal to this node
14800// and both offsets 0, in which case we will have handled above.
14801break outer;}if(parentNode===anchorNode&&++indexWithinAnchor===anchorOffset){start=length;}if(parentNode===focusNode&&++indexWithinFocus===focusOffset){end=length;}if((next=node.nextSibling)!==null){break;}node=parentNode;parentNode=node.parentNode;}// Moving from `node` to its next sibling `next`.
14802node=next;}if(start===-1||end===-1){// This should never happen. (Would happen if the anchor/focus nodes aren't
14803// actually inside the passed-in node.)
14804return null;}return{start:start,end:end};}/**
14805 * In modern non-IE browsers, we can support both forward and backward
14806 * selections.
14807 *
14808 * Note: IE10+ supports the Selection object, but it does not support
14809 * the `extend` method, which means that even in modern IE, it's not possible
14810 * to programmatically create a backward selection. Thus, for all IE
14811 * versions, we use the old IE API to create our selections.
14812 *
14813 * @param {DOMElement|DOMTextNode} node
14814 * @param {object} offsets
14815 */function setOffsets(node,offsets){var doc=node.ownerDocument||document;var win=doc&&doc.defaultView||window;// Edge fails with "Object expected" in some scenarios.
14816// (For instance: TinyMCE editor used in a list component that supports pasting to add more,
14817// fails when pasting 100+ items)
14818if(!win.getSelection){return;}var selection=win.getSelection();var length=node.textContent.length;var start=Math.min(offsets.start,length);var end=offsets.end===undefined?start:Math.min(offsets.end,length);// IE 11 uses modern selection, but doesn't support the extend method.
14819// Flip backward selections, so we can set with a single range.
14820if(!selection.extend&&start>end){var temp=end;end=start;start=temp;}var startMarker=getNodeForCharacterOffset(node,start);var endMarker=getNodeForCharacterOffset(node,end);if(startMarker&&endMarker){if(selection.rangeCount===1&&selection.anchorNode===startMarker.node&&selection.anchorOffset===startMarker.offset&&selection.focusNode===endMarker.node&&selection.focusOffset===endMarker.offset){return;}var range=doc.createRange();range.setStart(startMarker.node,startMarker.offset);selection.removeAllRanges();if(start>end){selection.addRange(range);selection.extend(endMarker.node,endMarker.offset);}else{range.setEnd(endMarker.node,endMarker.offset);selection.addRange(range);}}}function isTextNode(node){return node&&node.nodeType===TEXT_NODE;}function containsNode(outerNode,innerNode){if(!outerNode||!innerNode){return false;}else if(outerNode===innerNode){return true;}else if(isTextNode(outerNode)){return false;}else if(isTextNode(innerNode)){return containsNode(outerNode,innerNode.parentNode);}else if('contains'in outerNode){return outerNode.contains(innerNode);}else if(outerNode.compareDocumentPosition){return!!(outerNode.compareDocumentPosition(innerNode)&16);}else{return false;}}function isInDocument(node){return node&&node.ownerDocument&&containsNode(node.ownerDocument.documentElement,node);}function isSameOriginFrame(iframe){try{// Accessing the contentDocument of a HTMLIframeElement can cause the browser
14821// to throw, e.g. if it has a cross-origin src attribute.
14822// Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g:
14823// iframe.contentDocument.defaultView;
14824// A safety way is to access one of the cross origin properties: Window or Location
14825// Which might result in "SecurityError" DOM Exception and it is compatible to Safari.
14826// https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl
14827return typeof iframe.contentWindow.location.href==='string';}catch(err){return false;}}function getActiveElementDeep(){var win=window;var element=getActiveElement();while(element instanceof win.HTMLIFrameElement){if(isSameOriginFrame(element)){win=element.contentWindow;}else{return element;}element=getActiveElement(win.document);}return element;}/**
14828 * @ReactInputSelection: React input selection module. Based on Selection.js,
14829 * but modified to be suitable for react and has a couple of bug fixes (doesn't
14830 * assume buttons have range selections allowed).
14831 * Input selection module for React.
14832 */ /**
14833 * @hasSelectionCapabilities: we get the element types that support selection
14834 * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart`
14835 * and `selectionEnd` rows.
14836 */function hasSelectionCapabilities(elem){var nodeName=elem&&elem.nodeName&&elem.nodeName.toLowerCase();return nodeName&&(nodeName==='input'&&(elem.type==='text'||elem.type==='search'||elem.type==='tel'||elem.type==='url'||elem.type==='password')||nodeName==='textarea'||elem.contentEditable==='true');}function getSelectionInformation(){var focusedElem=getActiveElementDeep();return{// Used by Flare
14837activeElementDetached:null,focusedElem:focusedElem,selectionRange:hasSelectionCapabilities(focusedElem)?getSelection(focusedElem):null};}/**
14838 * @restoreSelection: If any selection information was potentially lost,
14839 * restore it. This is useful when performing operations that could remove dom
14840 * nodes and place them back in, resulting in focus being lost.
14841 */function restoreSelection(priorSelectionInformation){var curFocusedElem=getActiveElementDeep();var priorFocusedElem=priorSelectionInformation.focusedElem;var priorSelectionRange=priorSelectionInformation.selectionRange;if(curFocusedElem!==priorFocusedElem&&isInDocument(priorFocusedElem)){if(priorSelectionRange!==null&&hasSelectionCapabilities(priorFocusedElem)){setSelection(priorFocusedElem,priorSelectionRange);}// Focusing a node can change the scroll position, which is undesirable
14842var ancestors=[];var ancestor=priorFocusedElem;while(ancestor=ancestor.parentNode){if(ancestor.nodeType===ELEMENT_NODE){ancestors.push({element:ancestor,left:ancestor.scrollLeft,top:ancestor.scrollTop});}}if(typeof priorFocusedElem.focus==='function'){priorFocusedElem.focus();}for(var i=0;i<ancestors.length;i++){var info=ancestors[i];info.element.scrollLeft=info.left;info.element.scrollTop=info.top;}}}/**
14843 * @getSelection: Gets the selection bounds of a focused textarea, input or
14844 * contentEditable node.
14845 * -@input: Look up selection bounds of this input
14846 * -@return {start: selectionStart, end: selectionEnd}
14847 */function getSelection(input){var selection;if('selectionStart'in input){// Modern browser with input or textarea.
14848selection={start:input.selectionStart,end:input.selectionEnd};}else{// Content editable or old IE textarea.
14849selection=getOffsets(input);}return selection||{start:0,end:0};}/**
14850 * @setSelection: Sets the selection bounds of a textarea or input and focuses
14851 * the input.
14852 * -@input     Set selection bounds of this input or textarea
14853 * -@offsets   Object of same form that is returned from get*
14854 */function setSelection(input,offsets){var start=offsets.start,end=offsets.end;if(end===undefined){end=start;}if('selectionStart'in input){input.selectionStart=start;input.selectionEnd=Math.min(end,input.value.length);}else{setOffsets(input,offsets);}}var validateDOMNesting=function(){};var updatedAncestorInfo=function(){};{// This validation code was written based on the HTML5 parsing spec:
14855// https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
14856//
14857// Note: this does not catch all invalid nesting, nor does it try to (as it's
14858// not clear what practical benefit doing so provides); instead, we warn only
14859// for cases where the parser will give a parse tree differing from what React
14860// intended. For example, <b><div></div></b> is invalid but we don't warn
14861// because it still parses correctly; we do warn for other cases like nested
14862// <p> tags where the beginning of the second element implicitly closes the
14863// first, causing a confusing mess.
14864// https://html.spec.whatwg.org/multipage/syntax.html#special
14865var specialTags=['address','applet','area','article','aside','base','basefont','bgsound','blockquote','body','br','button','caption','center','col','colgroup','dd','details','dir','div','dl','dt','embed','fieldset','figcaption','figure','footer','form','frame','frameset','h1','h2','h3','h4','h5','h6','head','header','hgroup','hr','html','iframe','img','input','isindex','li','link','listing','main','marquee','menu','menuitem','meta','nav','noembed','noframes','noscript','object','ol','p','param','plaintext','pre','script','section','select','source','style','summary','table','tbody','td','template','textarea','tfoot','th','thead','title','tr','track','ul','wbr','xmp'];// https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
14866var inScopeTags=['applet','caption','html','table','td','th','marquee','object','template',// https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point
14867// TODO: Distinguish by namespace here -- for <title>, including it here
14868// errs on the side of fewer warnings
14869'foreignObject','desc','title'];// https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope
14870var buttonScopeTags=inScopeTags.concat(['button']);// https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags
14871var impliedEndTags=['dd','dt','li','option','optgroup','p','rp','rt'];var emptyAncestorInfo={current:null,formTag:null,aTagInScope:null,buttonTagInScope:null,nobrTagInScope:null,pTagInButtonScope:null,listItemTagAutoclosing:null,dlItemTagAutoclosing:null};updatedAncestorInfo=function(oldInfo,tag){var ancestorInfo=_assign({},oldInfo||emptyAncestorInfo);var info={tag:tag};if(inScopeTags.indexOf(tag)!==-1){ancestorInfo.aTagInScope=null;ancestorInfo.buttonTagInScope=null;ancestorInfo.nobrTagInScope=null;}if(buttonScopeTags.indexOf(tag)!==-1){ancestorInfo.pTagInButtonScope=null;}// See rules for 'li', 'dd', 'dt' start tags in
14872// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
14873if(specialTags.indexOf(tag)!==-1&&tag!=='address'&&tag!=='div'&&tag!=='p'){ancestorInfo.listItemTagAutoclosing=null;ancestorInfo.dlItemTagAutoclosing=null;}ancestorInfo.current=info;if(tag==='form'){ancestorInfo.formTag=info;}if(tag==='a'){ancestorInfo.aTagInScope=info;}if(tag==='button'){ancestorInfo.buttonTagInScope=info;}if(tag==='nobr'){ancestorInfo.nobrTagInScope=info;}if(tag==='p'){ancestorInfo.pTagInButtonScope=info;}if(tag==='li'){ancestorInfo.listItemTagAutoclosing=info;}if(tag==='dd'||tag==='dt'){ancestorInfo.dlItemTagAutoclosing=info;}return ancestorInfo;};/**
14874   * Returns whether
14875   */var isTagValidWithParent=function(tag,parentTag){// First, let's check if we're in an unusual parsing mode...
14876switch(parentTag){// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect
14877case'select':return tag==='option'||tag==='optgroup'||tag==='#text';case'optgroup':return tag==='option'||tag==='#text';// Strictly speaking, seeing an <option> doesn't mean we're in a <select>
14878// but
14879case'option':return tag==='#text';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd
14880// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption
14881// No special behavior since these rules fall back to "in body" mode for
14882// all except special table nodes which cause bad parsing behavior anyway.
14883// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr
14884case'tr':return tag==='th'||tag==='td'||tag==='style'||tag==='script'||tag==='template';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody
14885case'tbody':case'thead':case'tfoot':return tag==='tr'||tag==='style'||tag==='script'||tag==='template';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup
14886case'colgroup':return tag==='col'||tag==='template';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable
14887case'table':return tag==='caption'||tag==='colgroup'||tag==='tbody'||tag==='tfoot'||tag==='thead'||tag==='style'||tag==='script'||tag==='template';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead
14888case'head':return tag==='base'||tag==='basefont'||tag==='bgsound'||tag==='link'||tag==='meta'||tag==='title'||tag==='noscript'||tag==='noframes'||tag==='style'||tag==='script'||tag==='template';// https://html.spec.whatwg.org/multipage/semantics.html#the-html-element
14889case'html':return tag==='head'||tag==='body'||tag==='frameset';case'frameset':return tag==='frame';case'#document':return tag==='html';}// Probably in the "in body" parsing mode, so we outlaw only tag combos
14890// where the parsing rules cause implicit opens or closes to be added.
14891// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
14892switch(tag){case'h1':case'h2':case'h3':case'h4':case'h5':case'h6':return parentTag!=='h1'&&parentTag!=='h2'&&parentTag!=='h3'&&parentTag!=='h4'&&parentTag!=='h5'&&parentTag!=='h6';case'rp':case'rt':return impliedEndTags.indexOf(parentTag)===-1;case'body':case'caption':case'col':case'colgroup':case'frameset':case'frame':case'head':case'html':case'tbody':case'td':case'tfoot':case'th':case'thead':case'tr':// These tags are only valid with a few parents that have special child
14893// parsing rules -- if we're down here, then none of those matched and
14894// so we allow it only if we don't know what the parent is, as all other
14895// cases are invalid.
14896return parentTag==null;}return true;};/**
14897   * Returns whether
14898   */var findInvalidAncestorForTag=function(tag,ancestorInfo){switch(tag){case'address':case'article':case'aside':case'blockquote':case'center':case'details':case'dialog':case'dir':case'div':case'dl':case'fieldset':case'figcaption':case'figure':case'footer':case'header':case'hgroup':case'main':case'menu':case'nav':case'ol':case'p':case'section':case'summary':case'ul':case'pre':case'listing':case'table':case'hr':case'xmp':case'h1':case'h2':case'h3':case'h4':case'h5':case'h6':return ancestorInfo.pTagInButtonScope;case'form':return ancestorInfo.formTag||ancestorInfo.pTagInButtonScope;case'li':return ancestorInfo.listItemTagAutoclosing;case'dd':case'dt':return ancestorInfo.dlItemTagAutoclosing;case'button':return ancestorInfo.buttonTagInScope;case'a':// Spec says something about storing a list of markers, but it sounds
14899// equivalent to this check.
14900return ancestorInfo.aTagInScope;case'nobr':return ancestorInfo.nobrTagInScope;}return null;};var didWarn$1={};validateDOMNesting=function(childTag,childText,ancestorInfo){ancestorInfo=ancestorInfo||emptyAncestorInfo;var parentInfo=ancestorInfo.current;var parentTag=parentInfo&&parentInfo.tag;if(childText!=null){if(childTag!=null){error('validateDOMNesting: when childText is passed, childTag should be null');}childTag='#text';}var invalidParent=isTagValidWithParent(childTag,parentTag)?null:parentInfo;var invalidAncestor=invalidParent?null:findInvalidAncestorForTag(childTag,ancestorInfo);var invalidParentOrAncestor=invalidParent||invalidAncestor;if(!invalidParentOrAncestor){return;}var ancestorTag=invalidParentOrAncestor.tag;var addendum=getCurrentFiberStackInDev();var warnKey=!!invalidParent+'|'+childTag+'|'+ancestorTag+'|'+addendum;if(didWarn$1[warnKey]){return;}didWarn$1[warnKey]=true;var tagDisplayName=childTag;var whitespaceInfo='';if(childTag==='#text'){if(/\S/.test(childText)){tagDisplayName='Text nodes';}else{tagDisplayName='Whitespace text nodes';whitespaceInfo=" Make sure you don't have any extra whitespace between tags on "+'each line of your source code.';}}else{tagDisplayName='<'+childTag+'>';}if(invalidParent){var info='';if(ancestorTag==='table'&&childTag==='tr'){info+=' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by '+'the browser.';}error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s',tagDisplayName,ancestorTag,whitespaceInfo,info);}else{error('validateDOMNesting(...): %s cannot appear as a descendant of '+'<%s>.',tagDisplayName,ancestorTag);}};}var SUPPRESS_HYDRATION_WARNING$1;{SUPPRESS_HYDRATION_WARNING$1='suppressHydrationWarning';}var SUSPENSE_START_DATA='$';var SUSPENSE_END_DATA='/$';var SUSPENSE_PENDING_START_DATA='$?';var SUSPENSE_FALLBACK_START_DATA='$!';var STYLE$1='style';var eventsEnabled=null;var selectionInformation=null;function shouldAutoFocusHostComponent(type,props){switch(type){case'button':case'input':case'select':case'textarea':return!!props.autoFocus;}return false;}function getRootHostContext(rootContainerInstance){var type;var namespace;var nodeType=rootContainerInstance.nodeType;switch(nodeType){case DOCUMENT_NODE:case DOCUMENT_FRAGMENT_NODE:{type=nodeType===DOCUMENT_NODE?'#document':'#fragment';var root=rootContainerInstance.documentElement;namespace=root?root.namespaceURI:getChildNamespace(null,'');break;}default:{var container=nodeType===COMMENT_NODE?rootContainerInstance.parentNode:rootContainerInstance;var ownNamespace=container.namespaceURI||null;type=container.tagName;namespace=getChildNamespace(ownNamespace,type);break;}}{var validatedTag=type.toLowerCase();var ancestorInfo=updatedAncestorInfo(null,validatedTag);return{namespace:namespace,ancestorInfo:ancestorInfo};}}function getChildHostContext(parentHostContext,type,rootContainerInstance){{var parentHostContextDev=parentHostContext;var namespace=getChildNamespace(parentHostContextDev.namespace,type);var ancestorInfo=updatedAncestorInfo(parentHostContextDev.ancestorInfo,type);return{namespace:namespace,ancestorInfo:ancestorInfo};}}function getPublicInstance(instance){return instance;}function prepareForCommit(containerInfo){eventsEnabled=isEnabled();selectionInformation=getSelectionInformation();setEnabled(false);}function resetAfterCommit(containerInfo){restoreSelection(selectionInformation);setEnabled(eventsEnabled);eventsEnabled=null;selectionInformation=null;}function createInstance(type,props,rootContainerInstance,hostContext,internalInstanceHandle){var parentNamespace;{// TODO: take namespace into account when validating.
14901var hostContextDev=hostContext;validateDOMNesting(type,null,hostContextDev.ancestorInfo);if(typeof props.children==='string'||typeof props.children==='number'){var string=''+props.children;var ownAncestorInfo=updatedAncestorInfo(hostContextDev.ancestorInfo,type);validateDOMNesting(null,string,ownAncestorInfo);}parentNamespace=hostContextDev.namespace;}var domElement=createElement(type,props,rootContainerInstance,parentNamespace);precacheFiberNode(internalInstanceHandle,domElement);updateFiberProps(domElement,props);return domElement;}function appendInitialChild(parentInstance,child){parentInstance.appendChild(child);}function finalizeInitialChildren(domElement,type,props,rootContainerInstance,hostContext){setInitialProperties(domElement,type,props,rootContainerInstance);return shouldAutoFocusHostComponent(type,props);}function prepareUpdate(domElement,type,oldProps,newProps,rootContainerInstance,hostContext){{var hostContextDev=hostContext;if(typeof newProps.children!==typeof oldProps.children&&(typeof newProps.children==='string'||typeof newProps.children==='number')){var string=''+newProps.children;var ownAncestorInfo=updatedAncestorInfo(hostContextDev.ancestorInfo,type);validateDOMNesting(null,string,ownAncestorInfo);}}return diffProperties(domElement,type,oldProps,newProps,rootContainerInstance);}function shouldSetTextContent(type,props){return type==='textarea'||type==='option'||type==='noscript'||typeof props.children==='string'||typeof props.children==='number'||typeof props.dangerouslySetInnerHTML==='object'&&props.dangerouslySetInnerHTML!==null&&props.dangerouslySetInnerHTML.__html!=null;}function shouldDeprioritizeSubtree(type,props){return!!props.hidden;}function createTextInstance(text,rootContainerInstance,hostContext,internalInstanceHandle){{var hostContextDev=hostContext;validateDOMNesting(null,text,hostContextDev.ancestorInfo);}var textNode=createTextNode(text,rootContainerInstance);precacheFiberNode(internalInstanceHandle,textNode);return textNode;}// if a component just imports ReactDOM (e.g. for findDOMNode).
14902// Some environments might not have setTimeout or clearTimeout.
14903var scheduleTimeout=typeof setTimeout==='function'?setTimeout:undefined;var cancelTimeout=typeof clearTimeout==='function'?clearTimeout:undefined;var noTimeout=-1;// -------------------
14904function commitMount(domElement,type,newProps,internalInstanceHandle){// Despite the naming that might imply otherwise, this method only
14905// fires if there is an `Update` effect scheduled during mounting.
14906// This happens if `finalizeInitialChildren` returns `true` (which it
14907// does to implement the `autoFocus` attribute on the client). But
14908// there are also other cases when this might happen (such as patching
14909// up text content during hydration mismatch). So we'll check this again.
14910if(shouldAutoFocusHostComponent(type,newProps)){domElement.focus();}}function commitUpdate(domElement,updatePayload,type,oldProps,newProps,internalInstanceHandle){// Update the props handle so that we know which props are the ones with
14911// with current event handlers.
14912updateFiberProps(domElement,newProps);// Apply the diff to the DOM node.
14913updateProperties(domElement,updatePayload,type,oldProps,newProps);}function resetTextContent(domElement){setTextContent(domElement,'');}function commitTextUpdate(textInstance,oldText,newText){textInstance.nodeValue=newText;}function appendChild(parentInstance,child){parentInstance.appendChild(child);}function appendChildToContainer(container,child){var parentNode;if(container.nodeType===COMMENT_NODE){parentNode=container.parentNode;parentNode.insertBefore(child,container);}else{parentNode=container;parentNode.appendChild(child);}// This container might be used for a portal.
14914// If something inside a portal is clicked, that click should bubble
14915// through the React tree. However, on Mobile Safari the click would
14916// never bubble through the *DOM* tree unless an ancestor with onclick
14917// event exists. So we wouldn't see it and dispatch it.
14918// This is why we ensure that non React root containers have inline onclick
14919// defined.
14920// https://github.com/facebook/react/issues/11918
14921var reactRootContainer=container._reactRootContainer;if((reactRootContainer===null||reactRootContainer===undefined)&&parentNode.onclick===null){// TODO: This cast may not be sound for SVG, MathML or custom elements.
14922trapClickOnNonInteractiveElement(parentNode);}}function insertBefore(parentInstance,child,beforeChild){parentInstance.insertBefore(child,beforeChild);}function insertInContainerBefore(container,child,beforeChild){if(container.nodeType===COMMENT_NODE){container.parentNode.insertBefore(child,beforeChild);}else{container.insertBefore(child,beforeChild);}}function removeChild(parentInstance,child){parentInstance.removeChild(child);}function removeChildFromContainer(container,child){if(container.nodeType===COMMENT_NODE){container.parentNode.removeChild(child);}else{container.removeChild(child);}}function hideInstance(instance){// pass host context to this method?
14923instance=instance;var style=instance.style;if(typeof style.setProperty==='function'){style.setProperty('display','none','important');}else{style.display='none';}}function hideTextInstance(textInstance){textInstance.nodeValue='';}function unhideInstance(instance,props){instance=instance;var styleProp=props[STYLE$1];var display=styleProp!==undefined&&styleProp!==null&&styleProp.hasOwnProperty('display')?styleProp.display:null;instance.style.display=dangerousStyleValue('display',display);}function unhideTextInstance(textInstance,text){textInstance.nodeValue=text;}// -------------------
14924function canHydrateInstance(instance,type,props){if(instance.nodeType!==ELEMENT_NODE||type.toLowerCase()!==instance.nodeName.toLowerCase()){return null;}// This has now been refined to an element node.
14925return instance;}function canHydrateTextInstance(instance,text){if(text===''||instance.nodeType!==TEXT_NODE){// Empty strings are not parsed by HTML so there won't be a correct match here.
14926return null;}// This has now been refined to a text node.
14927return instance;}function isSuspenseInstancePending(instance){return instance.data===SUSPENSE_PENDING_START_DATA;}function isSuspenseInstanceFallback(instance){return instance.data===SUSPENSE_FALLBACK_START_DATA;}function getNextHydratable(node){// Skip non-hydratable nodes.
14928for(;node!=null;node=node.nextSibling){var nodeType=node.nodeType;if(nodeType===ELEMENT_NODE||nodeType===TEXT_NODE){break;}}return node;}function getNextHydratableSibling(instance){return getNextHydratable(instance.nextSibling);}function getFirstHydratableChild(parentInstance){return getNextHydratable(parentInstance.firstChild);}function hydrateInstance(instance,type,props,rootContainerInstance,hostContext,internalInstanceHandle){precacheFiberNode(internalInstanceHandle,instance);// TODO: Possibly defer this until the commit phase where all the events
14929// get attached.
14930updateFiberProps(instance,props);var parentNamespace;{var hostContextDev=hostContext;parentNamespace=hostContextDev.namespace;}return diffHydratedProperties(instance,type,props,parentNamespace,rootContainerInstance);}function hydrateTextInstance(textInstance,text,internalInstanceHandle){precacheFiberNode(internalInstanceHandle,textInstance);return diffHydratedText(textInstance,text);}function getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance){var node=suspenseInstance.nextSibling;// Skip past all nodes within this suspense boundary.
14931// There might be nested nodes so we need to keep track of how
14932// deep we are and only break out when we're back on top.
14933var depth=0;while(node){if(node.nodeType===COMMENT_NODE){var data=node.data;if(data===SUSPENSE_END_DATA){if(depth===0){return getNextHydratableSibling(node);}else{depth--;}}else if(data===SUSPENSE_START_DATA||data===SUSPENSE_FALLBACK_START_DATA||data===SUSPENSE_PENDING_START_DATA){depth++;}}node=node.nextSibling;}// TODO: Warn, we didn't find the end comment boundary.
14934return null;}// Returns the SuspenseInstance if this node is a direct child of a
14935// SuspenseInstance. I.e. if its previous sibling is a Comment with
14936// SUSPENSE_x_START_DATA. Otherwise, null.
14937function getParentSuspenseInstance(targetInstance){var node=targetInstance.previousSibling;// Skip past all nodes within this suspense boundary.
14938// There might be nested nodes so we need to keep track of how
14939// deep we are and only break out when we're back on top.
14940var depth=0;while(node){if(node.nodeType===COMMENT_NODE){var data=node.data;if(data===SUSPENSE_START_DATA||data===SUSPENSE_FALLBACK_START_DATA||data===SUSPENSE_PENDING_START_DATA){if(depth===0){return node;}else{depth--;}}else if(data===SUSPENSE_END_DATA){depth++;}}node=node.previousSibling;}return null;}function commitHydratedContainer(container){// Retry if any event replaying was blocked on this.
14941retryIfBlockedOn(container);}function commitHydratedSuspenseInstance(suspenseInstance){// Retry if any event replaying was blocked on this.
14942retryIfBlockedOn(suspenseInstance);}function didNotMatchHydratedContainerTextInstance(parentContainer,textInstance,text){{warnForUnmatchedText(textInstance,text);}}function didNotMatchHydratedTextInstance(parentType,parentProps,parentInstance,textInstance,text){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true){warnForUnmatchedText(textInstance,text);}}function didNotHydrateContainerInstance(parentContainer,instance){{if(instance.nodeType===ELEMENT_NODE){warnForDeletedHydratableElement(parentContainer,instance);}else if(instance.nodeType===COMMENT_NODE);else{warnForDeletedHydratableText(parentContainer,instance);}}}function didNotHydrateInstance(parentType,parentProps,parentInstance,instance){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true){if(instance.nodeType===ELEMENT_NODE){warnForDeletedHydratableElement(parentInstance,instance);}else if(instance.nodeType===COMMENT_NODE);else{warnForDeletedHydratableText(parentInstance,instance);}}}function didNotFindHydratableContainerInstance(parentContainer,type,props){{warnForInsertedHydratedElement(parentContainer,type);}}function didNotFindHydratableContainerTextInstance(parentContainer,text){{warnForInsertedHydratedText(parentContainer,text);}}function didNotFindHydratableInstance(parentType,parentProps,parentInstance,type,props){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true){warnForInsertedHydratedElement(parentInstance,type);}}function didNotFindHydratableTextInstance(parentType,parentProps,parentInstance,text){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true){warnForInsertedHydratedText(parentInstance,text);}}function didNotFindHydratableSuspenseInstance(parentType,parentProps,parentInstance){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true);}var randomKey=Math.random().toString(36).slice(2);var internalInstanceKey='__reactInternalInstance$'+randomKey;var internalEventHandlersKey='__reactEventHandlers$'+randomKey;var internalContainerInstanceKey='__reactContainere$'+randomKey;function precacheFiberNode(hostInst,node){node[internalInstanceKey]=hostInst;}function markContainerAsRoot(hostRoot,node){node[internalContainerInstanceKey]=hostRoot;}function unmarkContainerAsRoot(node){node[internalContainerInstanceKey]=null;}function isContainerMarkedAsRoot(node){return!!node[internalContainerInstanceKey];}// Given a DOM node, return the closest HostComponent or HostText fiber ancestor.
14943// If the target node is part of a hydrated or not yet rendered subtree, then
14944// this may also return a SuspenseComponent or HostRoot to indicate that.
14945// Conceptually the HostRoot fiber is a child of the Container node. So if you
14946// pass the Container node as the targetNode, you will not actually get the
14947// HostRoot back. To get to the HostRoot, you need to pass a child of it.
14948// The same thing applies to Suspense boundaries.
14949function getClosestInstanceFromNode(targetNode){var targetInst=targetNode[internalInstanceKey];if(targetInst){// Don't return HostRoot or SuspenseComponent here.
14950return targetInst;}// If the direct event target isn't a React owned DOM node, we need to look
14951// to see if one of its parents is a React owned DOM node.
14952var parentNode=targetNode.parentNode;while(parentNode){// We'll check if this is a container root that could include
14953// React nodes in the future. We need to check this first because
14954// if we're a child of a dehydrated container, we need to first
14955// find that inner container before moving on to finding the parent
14956// instance. Note that we don't check this field on  the targetNode
14957// itself because the fibers are conceptually between the container
14958// node and the first child. It isn't surrounding the container node.
14959// If it's not a container, we check if it's an instance.
14960targetInst=parentNode[internalContainerInstanceKey]||parentNode[internalInstanceKey];if(targetInst){// Since this wasn't the direct target of the event, we might have
14961// stepped past dehydrated DOM nodes to get here. However they could
14962// also have been non-React nodes. We need to answer which one.
14963// If we the instance doesn't have any children, then there can't be
14964// a nested suspense boundary within it. So we can use this as a fast
14965// bailout. Most of the time, when people add non-React children to
14966// the tree, it is using a ref to a child-less DOM node.
14967// Normally we'd only need to check one of the fibers because if it
14968// has ever gone from having children to deleting them or vice versa
14969// it would have deleted the dehydrated boundary nested inside already.
14970// However, since the HostRoot starts out with an alternate it might
14971// have one on the alternate so we need to check in case this was a
14972// root.
14973var alternate=targetInst.alternate;if(targetInst.child!==null||alternate!==null&&alternate.child!==null){// Next we need to figure out if the node that skipped past is
14974// nested within a dehydrated boundary and if so, which one.
14975var suspenseInstance=getParentSuspenseInstance(targetNode);while(suspenseInstance!==null){// We found a suspense instance. That means that we haven't
14976// hydrated it yet. Even though we leave the comments in the
14977// DOM after hydrating, and there are boundaries in the DOM
14978// that could already be hydrated, we wouldn't have found them
14979// through this pass since if the target is hydrated it would
14980// have had an internalInstanceKey on it.
14981// Let's get the fiber associated with the SuspenseComponent
14982// as the deepest instance.
14983var targetSuspenseInst=suspenseInstance[internalInstanceKey];if(targetSuspenseInst){return targetSuspenseInst;}// If we don't find a Fiber on the comment, it might be because
14984// we haven't gotten to hydrate it yet. There might still be a
14985// parent boundary that hasn't above this one so we need to find
14986// the outer most that is known.
14987suspenseInstance=getParentSuspenseInstance(suspenseInstance);// If we don't find one, then that should mean that the parent
14988// host component also hasn't hydrated yet. We can return it
14989// below since it will bail out on the isMounted check later.
14990}}return targetInst;}targetNode=parentNode;parentNode=targetNode.parentNode;}return null;}/**
14991 * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent
14992 * instance, or null if the node was not rendered by this React.
14993 */function getInstanceFromNode$1(node){var inst=node[internalInstanceKey]||node[internalContainerInstanceKey];if(inst){if(inst.tag===HostComponent||inst.tag===HostText||inst.tag===SuspenseComponent||inst.tag===HostRoot){return inst;}else{return null;}}return null;}/**
14994 * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding
14995 * DOM node.
14996 */function getNodeFromInstance$1(inst){if(inst.tag===HostComponent||inst.tag===HostText){// In Fiber this, is just the state node right now. We assume it will be
14997// a host component or host text.
14998return inst.stateNode;}// Without this first invariant, passing a non-DOM-component triggers the next
14999// invariant for a missing parent, which is super confusing.
15000{{throw Error("getNodeFromInstance: Invalid argument.");}}}function getFiberCurrentPropsFromNode$1(node){return node[internalEventHandlersKey]||null;}function updateFiberProps(node,props){node[internalEventHandlersKey]=props;}function getParent(inst){do{inst=inst.return;// TODO: If this is a HostRoot we might want to bail out.
15001// That is depending on if we want nested subtrees (layers) to bubble
15002// events to their parent. We could also go through parentNode on the
15003// host node but that wouldn't work for React Native and doesn't let us
15004// do the portal feature.
15005}while(inst&&inst.tag!==HostComponent);if(inst){return inst;}return null;}/**
15006 * Return the lowest common ancestor of A and B, or null if they are in
15007 * different trees.
15008 */function getLowestCommonAncestor(instA,instB){var depthA=0;for(var tempA=instA;tempA;tempA=getParent(tempA)){depthA++;}var depthB=0;for(var tempB=instB;tempB;tempB=getParent(tempB)){depthB++;}// If A is deeper, crawl up.
15009while(depthA-depthB>0){instA=getParent(instA);depthA--;}// If B is deeper, crawl up.
15010while(depthB-depthA>0){instB=getParent(instB);depthB--;}// Walk in lockstep until we find a match.
15011var depth=depthA;while(depth--){if(instA===instB||instA===instB.alternate){return instA;}instA=getParent(instA);instB=getParent(instB);}return null;}/**
15012 * Simulates the traversal of a two-phase, capture/bubble event dispatch.
15013 */function traverseTwoPhase(inst,fn,arg){var path=[];while(inst){path.push(inst);inst=getParent(inst);}var i;for(i=path.length;i-->0;){fn(path[i],'captured',arg);}for(i=0;i<path.length;i++){fn(path[i],'bubbled',arg);}}/**
15014 * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that
15015 * should would receive a `mouseEnter` or `mouseLeave` event.
15016 *
15017 * Does not invoke the callback on the nearest common ancestor because nothing
15018 * "entered" or "left" that element.
15019 */function traverseEnterLeave(from,to,fn,argFrom,argTo){var common=from&&to?getLowestCommonAncestor(from,to):null;var pathFrom=[];while(true){if(!from){break;}if(from===common){break;}var alternate=from.alternate;if(alternate!==null&&alternate===common){break;}pathFrom.push(from);from=getParent(from);}var pathTo=[];while(true){if(!to){break;}if(to===common){break;}var _alternate=to.alternate;if(_alternate!==null&&_alternate===common){break;}pathTo.push(to);to=getParent(to);}for(var i=0;i<pathFrom.length;i++){fn(pathFrom[i],'bubbled',argFrom);}for(var _i=pathTo.length;_i-->0;){fn(pathTo[_i],'captured',argTo);}}function isInteractive(tag){return tag==='button'||tag==='input'||tag==='select'||tag==='textarea';}function shouldPreventMouseEvent(name,type,props){switch(name){case'onClick':case'onClickCapture':case'onDoubleClick':case'onDoubleClickCapture':case'onMouseDown':case'onMouseDownCapture':case'onMouseMove':case'onMouseMoveCapture':case'onMouseUp':case'onMouseUpCapture':case'onMouseEnter':return!!(props.disabled&&isInteractive(type));default:return false;}}/**
15020 * @param {object} inst The instance, which is the source of events.
15021 * @param {string} registrationName Name of listener (e.g. `onClick`).
15022 * @return {?function} The stored callback.
15023 */function getListener(inst,registrationName){var listener;// TODO: shouldPreventMouseEvent is DOM-specific and definitely should not
15024// live here; needs to be moved to a better place soon
15025var stateNode=inst.stateNode;if(!stateNode){// Work in progress (ex: onload events in incremental mode).
15026return null;}var props=getFiberCurrentPropsFromNode(stateNode);if(!props){// Work in progress.
15027return null;}listener=props[registrationName];if(shouldPreventMouseEvent(registrationName,inst.type,props)){return null;}if(!(!listener||typeof listener==='function')){{throw Error("Expected `"+registrationName+"` listener to be a function, instead got a value of `"+typeof listener+"` type.");}}return listener;}/**
15028 * Some event types have a notion of different registration names for different
15029 * "phases" of propagation. This finds listeners by a given phase.
15030 */function listenerAtPhase(inst,event,propagationPhase){var registrationName=event.dispatchConfig.phasedRegistrationNames[propagationPhase];return getListener(inst,registrationName);}/**
15031 * A small set of propagation patterns, each of which will accept a small amount
15032 * of information, and generate a set of "dispatch ready event objects" - which
15033 * are sets of events that have already been annotated with a set of dispatched
15034 * listener functions/ids. The API is designed this way to discourage these
15035 * propagation strategies from actually executing the dispatches, since we
15036 * always want to collect the entire set of dispatches before executing even a
15037 * single one.
15038 */ /**
15039 * Tags a `SyntheticEvent` with dispatched listeners. Creating this function
15040 * here, allows us to not have to bind or create functions for each event.
15041 * Mutating the event's members allows us to not have to create a wrapping
15042 * "dispatch" object that pairs the event with the listener.
15043 */function accumulateDirectionalDispatches(inst,phase,event){{if(!inst){error('Dispatching inst must not be null');}}var listener=listenerAtPhase(inst,event,phase);if(listener){event._dispatchListeners=accumulateInto(event._dispatchListeners,listener);event._dispatchInstances=accumulateInto(event._dispatchInstances,inst);}}/**
15044 * Collect dispatches (must be entirely collected before dispatching - see unit
15045 * tests). Lazily allocate the array to conserve memory.  We must loop through
15046 * each event and perform the traversal for each one. We cannot perform a
15047 * single traversal for the entire collection of events because each event may
15048 * have a different target.
15049 */function accumulateTwoPhaseDispatchesSingle(event){if(event&&event.dispatchConfig.phasedRegistrationNames){traverseTwoPhase(event._targetInst,accumulateDirectionalDispatches,event);}}/**
15050 * Accumulates without regard to direction, does not look for phased
15051 * registration names. Same as `accumulateDirectDispatchesSingle` but without
15052 * requiring that the `dispatchMarker` be the same as the dispatched ID.
15053 */function accumulateDispatches(inst,ignoredDirection,event){if(inst&&event&&event.dispatchConfig.registrationName){var registrationName=event.dispatchConfig.registrationName;var listener=getListener(inst,registrationName);if(listener){event._dispatchListeners=accumulateInto(event._dispatchListeners,listener);event._dispatchInstances=accumulateInto(event._dispatchInstances,inst);}}}/**
15054 * Accumulates dispatches on an `SyntheticEvent`, but only for the
15055 * `dispatchMarker`.
15056 * @param {SyntheticEvent} event
15057 */function accumulateDirectDispatchesSingle(event){if(event&&event.dispatchConfig.registrationName){accumulateDispatches(event._targetInst,null,event);}}function accumulateTwoPhaseDispatches(events){forEachAccumulated(events,accumulateTwoPhaseDispatchesSingle);}function accumulateEnterLeaveDispatches(leave,enter,from,to){traverseEnterLeave(from,to,accumulateDispatches,leave,enter);}function accumulateDirectDispatches(events){forEachAccumulated(events,accumulateDirectDispatchesSingle);}/**
15058 * These variables store information about text content of a target node,
15059 * allowing comparison of content before and after a given event.
15060 *
15061 * Identify the node where selection currently begins, then observe
15062 * both its text content and its current position in the DOM. Since the
15063 * browser may natively replace the target node during composition, we can
15064 * use its position to find its replacement.
15065 *
15066 *
15067 */var root=null;var startText=null;var fallbackText=null;function initialize(nativeEventTarget){root=nativeEventTarget;startText=getText();return true;}function reset(){root=null;startText=null;fallbackText=null;}function getData(){if(fallbackText){return fallbackText;}var start;var startValue=startText;var startLength=startValue.length;var end;var endValue=getText();var endLength=endValue.length;for(start=0;start<startLength;start++){if(startValue[start]!==endValue[start]){break;}}var minEnd=startLength-start;for(end=1;end<=minEnd;end++){if(startValue[startLength-end]!==endValue[endLength-end]){break;}}var sliceTail=end>1?1-end:undefined;fallbackText=endValue.slice(start,sliceTail);return fallbackText;}function getText(){if('value'in root){return root.value;}return root.textContent;}var EVENT_POOL_SIZE=10;/**
15068 * @interface Event
15069 * @see http://www.w3.org/TR/DOM-Level-3-Events/
15070 */var EventInterface={type:null,target:null,// currentTarget is set when dispatching; no use in copying it here
15071currentTarget:function(){return null;},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(event){return event.timeStamp||Date.now();},defaultPrevented:null,isTrusted:null};function functionThatReturnsTrue(){return true;}function functionThatReturnsFalse(){return false;}/**
15072 * Synthetic events are dispatched by event plugins, typically in response to a
15073 * top-level event delegation handler.
15074 *
15075 * These systems should generally use pooling to reduce the frequency of garbage
15076 * collection. The system should check `isPersistent` to determine whether the
15077 * event should be released into the pool after being dispatched. Users that
15078 * need a persisted event should invoke `persist`.
15079 *
15080 * Synthetic events (and subclasses) implement the DOM Level 3 Events API by
15081 * normalizing browser quirks. Subclasses do not necessarily have to implement a
15082 * DOM interface; custom application-specific events can also subclass this.
15083 *
15084 * @param {object} dispatchConfig Configuration used to dispatch this event.
15085 * @param {*} targetInst Marker identifying the event target.
15086 * @param {object} nativeEvent Native browser event.
15087 * @param {DOMEventTarget} nativeEventTarget Target node.
15088 */function SyntheticEvent(dispatchConfig,targetInst,nativeEvent,nativeEventTarget){{// these have a getter/setter for warnings
15089delete this.nativeEvent;delete this.preventDefault;delete this.stopPropagation;delete this.isDefaultPrevented;delete this.isPropagationStopped;}this.dispatchConfig=dispatchConfig;this._targetInst=targetInst;this.nativeEvent=nativeEvent;var Interface=this.constructor.Interface;for(var propName in Interface){if(!Interface.hasOwnProperty(propName)){continue;}{delete this[propName];// this has a getter/setter for warnings
15090}var normalize=Interface[propName];if(normalize){this[propName]=normalize(nativeEvent);}else{if(propName==='target'){this.target=nativeEventTarget;}else{this[propName]=nativeEvent[propName];}}}var defaultPrevented=nativeEvent.defaultPrevented!=null?nativeEvent.defaultPrevented:nativeEvent.returnValue===false;if(defaultPrevented){this.isDefaultPrevented=functionThatReturnsTrue;}else{this.isDefaultPrevented=functionThatReturnsFalse;}this.isPropagationStopped=functionThatReturnsFalse;return this;}_assign(SyntheticEvent.prototype,{preventDefault:function(){this.defaultPrevented=true;var event=this.nativeEvent;if(!event){return;}if(event.preventDefault){event.preventDefault();}else if(typeof event.returnValue!=='unknown'){event.returnValue=false;}this.isDefaultPrevented=functionThatReturnsTrue;},stopPropagation:function(){var event=this.nativeEvent;if(!event){return;}if(event.stopPropagation){event.stopPropagation();}else if(typeof event.cancelBubble!=='unknown'){// The ChangeEventPlugin registers a "propertychange" event for
15091// IE. This event does not support bubbling or cancelling, and
15092// any references to cancelBubble throw "Member not found".  A
15093// typeof check of "unknown" circumvents this issue (and is also
15094// IE specific).
15095event.cancelBubble=true;}this.isPropagationStopped=functionThatReturnsTrue;},/**
15096   * We release all dispatched `SyntheticEvent`s after each event loop, adding
15097   * them back into the pool. This allows a way to hold onto a reference that
15098   * won't be added back into the pool.
15099   */persist:function(){this.isPersistent=functionThatReturnsTrue;},/**
15100   * Checks if this event should be released back into the pool.
15101   *
15102   * @return {boolean} True if this should not be released, false otherwise.
15103   */isPersistent:functionThatReturnsFalse,/**
15104   * `PooledClass` looks for `destructor` on each instance it releases.
15105   */destructor:function(){var Interface=this.constructor.Interface;for(var propName in Interface){{Object.defineProperty(this,propName,getPooledWarningPropertyDefinition(propName,Interface[propName]));}}this.dispatchConfig=null;this._targetInst=null;this.nativeEvent=null;this.isDefaultPrevented=functionThatReturnsFalse;this.isPropagationStopped=functionThatReturnsFalse;this._dispatchListeners=null;this._dispatchInstances=null;{Object.defineProperty(this,'nativeEvent',getPooledWarningPropertyDefinition('nativeEvent',null));Object.defineProperty(this,'isDefaultPrevented',getPooledWarningPropertyDefinition('isDefaultPrevented',functionThatReturnsFalse));Object.defineProperty(this,'isPropagationStopped',getPooledWarningPropertyDefinition('isPropagationStopped',functionThatReturnsFalse));Object.defineProperty(this,'preventDefault',getPooledWarningPropertyDefinition('preventDefault',function(){}));Object.defineProperty(this,'stopPropagation',getPooledWarningPropertyDefinition('stopPropagation',function(){}));}}});SyntheticEvent.Interface=EventInterface;/**
15106 * Helper to reduce boilerplate when creating subclasses.
15107 */SyntheticEvent.extend=function(Interface){var Super=this;var E=function(){};E.prototype=Super.prototype;var prototype=new E();function Class(){return Super.apply(this,arguments);}_assign(prototype,Class.prototype);Class.prototype=prototype;Class.prototype.constructor=Class;Class.Interface=_assign({},Super.Interface,Interface);Class.extend=Super.extend;addEventPoolingTo(Class);return Class;};addEventPoolingTo(SyntheticEvent);/**
15108 * Helper to nullify syntheticEvent instance properties when destructing
15109 *
15110 * @param {String} propName
15111 * @param {?object} getVal
15112 * @return {object} defineProperty object
15113 */function getPooledWarningPropertyDefinition(propName,getVal){var isFunction=typeof getVal==='function';return{configurable:true,set:set,get:get};function set(val){var action=isFunction?'setting the method':'setting the property';warn(action,'This is effectively a no-op');return val;}function get(){var action=isFunction?'accessing the method':'accessing the property';var result=isFunction?'This is a no-op function':'This is set to null';warn(action,result);return getVal;}function warn(action,result){{error("This synthetic event is reused for performance reasons. If you're seeing this, "+"you're %s `%s` on a released/nullified synthetic event. %s. "+'If you must keep the original synthetic event around, use event.persist(). '+'See https://fb.me/react-event-pooling for more information.',action,propName,result);}}}function getPooledEvent(dispatchConfig,targetInst,nativeEvent,nativeInst){var EventConstructor=this;if(EventConstructor.eventPool.length){var instance=EventConstructor.eventPool.pop();EventConstructor.call(instance,dispatchConfig,targetInst,nativeEvent,nativeInst);return instance;}return new EventConstructor(dispatchConfig,targetInst,nativeEvent,nativeInst);}function releasePooledEvent(event){var EventConstructor=this;if(!(event instanceof EventConstructor)){{throw Error("Trying to release an event instance into a pool of a different type.");}}event.destructor();if(EventConstructor.eventPool.length<EVENT_POOL_SIZE){EventConstructor.eventPool.push(event);}}function addEventPoolingTo(EventConstructor){EventConstructor.eventPool=[];EventConstructor.getPooled=getPooledEvent;EventConstructor.release=releasePooledEvent;}/**
15114 * @interface Event
15115 * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents
15116 */var SyntheticCompositionEvent=SyntheticEvent.extend({data:null});/**
15117 * @interface Event
15118 * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105
15119 *      /#events-inputevents
15120 */var SyntheticInputEvent=SyntheticEvent.extend({data:null});var END_KEYCODES=[9,13,27,32];// Tab, Return, Esc, Space
15121var START_KEYCODE=229;var canUseCompositionEvent=canUseDOM&&'CompositionEvent'in window;var documentMode=null;if(canUseDOM&&'documentMode'in document){documentMode=document.documentMode;}// Webkit offers a very useful `textInput` event that can be used to
15122// directly represent `beforeInput`. The IE `textinput` event is not as
15123// useful, so we don't use it.
15124var canUseTextInputEvent=canUseDOM&&'TextEvent'in window&&!documentMode;// In IE9+, we have access to composition events, but the data supplied
15125// by the native compositionend event may be incorrect. Japanese ideographic
15126// spaces, for instance (\u3000) are not recorded correctly.
15127var useFallbackCompositionData=canUseDOM&&(!canUseCompositionEvent||documentMode&&documentMode>8&&documentMode<=11);var SPACEBAR_CODE=32;var SPACEBAR_CHAR=String.fromCharCode(SPACEBAR_CODE);// Events and their corresponding property names.
15128var eventTypes={beforeInput:{phasedRegistrationNames:{bubbled:'onBeforeInput',captured:'onBeforeInputCapture'},dependencies:[TOP_COMPOSITION_END,TOP_KEY_PRESS,TOP_TEXT_INPUT,TOP_PASTE]},compositionEnd:{phasedRegistrationNames:{bubbled:'onCompositionEnd',captured:'onCompositionEndCapture'},dependencies:[TOP_BLUR,TOP_COMPOSITION_END,TOP_KEY_DOWN,TOP_KEY_PRESS,TOP_KEY_UP,TOP_MOUSE_DOWN]},compositionStart:{phasedRegistrationNames:{bubbled:'onCompositionStart',captured:'onCompositionStartCapture'},dependencies:[TOP_BLUR,TOP_COMPOSITION_START,TOP_KEY_DOWN,TOP_KEY_PRESS,TOP_KEY_UP,TOP_MOUSE_DOWN]},compositionUpdate:{phasedRegistrationNames:{bubbled:'onCompositionUpdate',captured:'onCompositionUpdateCapture'},dependencies:[TOP_BLUR,TOP_COMPOSITION_UPDATE,TOP_KEY_DOWN,TOP_KEY_PRESS,TOP_KEY_UP,TOP_MOUSE_DOWN]}};// Track whether we've ever handled a keypress on the space key.
15129var hasSpaceKeypress=false;/**
15130 * Return whether a native keypress event is assumed to be a command.
15131 * This is required because Firefox fires `keypress` events for key commands
15132 * (cut, copy, select-all, etc.) even though no character is inserted.
15133 */function isKeypressCommand(nativeEvent){return(nativeEvent.ctrlKey||nativeEvent.altKey||nativeEvent.metaKey)&&// ctrlKey && altKey is equivalent to AltGr, and is not a command.
15134!(nativeEvent.ctrlKey&&nativeEvent.altKey);}/**
15135 * Translate native top level events into event types.
15136 *
15137 * @param {string} topLevelType
15138 * @return {object}
15139 */function getCompositionEventType(topLevelType){switch(topLevelType){case TOP_COMPOSITION_START:return eventTypes.compositionStart;case TOP_COMPOSITION_END:return eventTypes.compositionEnd;case TOP_COMPOSITION_UPDATE:return eventTypes.compositionUpdate;}}/**
15140 * Does our fallback best-guess model think this event signifies that
15141 * composition has begun?
15142 *
15143 * @param {string} topLevelType
15144 * @param {object} nativeEvent
15145 * @return {boolean}
15146 */function isFallbackCompositionStart(topLevelType,nativeEvent){return topLevelType===TOP_KEY_DOWN&&nativeEvent.keyCode===START_KEYCODE;}/**
15147 * Does our fallback mode think that this event is the end of composition?
15148 *
15149 * @param {string} topLevelType
15150 * @param {object} nativeEvent
15151 * @return {boolean}
15152 */function isFallbackCompositionEnd(topLevelType,nativeEvent){switch(topLevelType){case TOP_KEY_UP:// Command keys insert or clear IME input.
15153return END_KEYCODES.indexOf(nativeEvent.keyCode)!==-1;case TOP_KEY_DOWN:// Expect IME keyCode on each keydown. If we get any other
15154// code we must have exited earlier.
15155return nativeEvent.keyCode!==START_KEYCODE;case TOP_KEY_PRESS:case TOP_MOUSE_DOWN:case TOP_BLUR:// Events are not possible without cancelling IME.
15156return true;default:return false;}}/**
15157 * Google Input Tools provides composition data via a CustomEvent,
15158 * with the `data` property populated in the `detail` object. If this
15159 * is available on the event object, use it. If not, this is a plain
15160 * composition event and we have nothing special to extract.
15161 *
15162 * @param {object} nativeEvent
15163 * @return {?string}
15164 */function getDataFromCustomEvent(nativeEvent){var detail=nativeEvent.detail;if(typeof detail==='object'&&'data'in detail){return detail.data;}return null;}/**
15165 * Check if a composition event was triggered by Korean IME.
15166 * Our fallback mode does not work well with IE's Korean IME,
15167 * so just use native composition events when Korean IME is used.
15168 * Although CompositionEvent.locale property is deprecated,
15169 * it is available in IE, where our fallback mode is enabled.
15170 *
15171 * @param {object} nativeEvent
15172 * @return {boolean}
15173 */function isUsingKoreanIME(nativeEvent){return nativeEvent.locale==='ko';}// Track the current IME composition status, if any.
15174var isComposing=false;/**
15175 * @return {?object} A SyntheticCompositionEvent.
15176 */function extractCompositionEvent(topLevelType,targetInst,nativeEvent,nativeEventTarget){var eventType;var fallbackData;if(canUseCompositionEvent){eventType=getCompositionEventType(topLevelType);}else if(!isComposing){if(isFallbackCompositionStart(topLevelType,nativeEvent)){eventType=eventTypes.compositionStart;}}else if(isFallbackCompositionEnd(topLevelType,nativeEvent)){eventType=eventTypes.compositionEnd;}if(!eventType){return null;}if(useFallbackCompositionData&&!isUsingKoreanIME(nativeEvent)){// The current composition is stored statically and must not be
15177// overwritten while composition continues.
15178if(!isComposing&&eventType===eventTypes.compositionStart){isComposing=initialize(nativeEventTarget);}else if(eventType===eventTypes.compositionEnd){if(isComposing){fallbackData=getData();}}}var event=SyntheticCompositionEvent.getPooled(eventType,targetInst,nativeEvent,nativeEventTarget);if(fallbackData){// Inject data generated from fallback path into the synthetic event.
15179// This matches the property of native CompositionEventInterface.
15180event.data=fallbackData;}else{var customData=getDataFromCustomEvent(nativeEvent);if(customData!==null){event.data=customData;}}accumulateTwoPhaseDispatches(event);return event;}/**
15181 * @param {TopLevelType} topLevelType Number from `TopLevelType`.
15182 * @param {object} nativeEvent Native browser event.
15183 * @return {?string} The string corresponding to this `beforeInput` event.
15184 */function getNativeBeforeInputChars(topLevelType,nativeEvent){switch(topLevelType){case TOP_COMPOSITION_END:return getDataFromCustomEvent(nativeEvent);case TOP_KEY_PRESS:/**
15185       * If native `textInput` events are available, our goal is to make
15186       * use of them. However, there is a special case: the spacebar key.
15187       * In Webkit, preventing default on a spacebar `textInput` event
15188       * cancels character insertion, but it *also* causes the browser
15189       * to fall back to its default spacebar behavior of scrolling the
15190       * page.
15191       *
15192       * Tracking at:
15193       * https://code.google.com/p/chromium/issues/detail?id=355103
15194       *
15195       * To avoid this issue, use the keypress event as if no `textInput`
15196       * event is available.
15197       */var which=nativeEvent.which;if(which!==SPACEBAR_CODE){return null;}hasSpaceKeypress=true;return SPACEBAR_CHAR;case TOP_TEXT_INPUT:// Record the characters to be added to the DOM.
15198var chars=nativeEvent.data;// If it's a spacebar character, assume that we have already handled
15199// it at the keypress level and bail immediately. Android Chrome
15200// doesn't give us keycodes, so we need to ignore it.
15201if(chars===SPACEBAR_CHAR&&hasSpaceKeypress){return null;}return chars;default:// For other native event types, do nothing.
15202return null;}}/**
15203 * For browsers that do not provide the `textInput` event, extract the
15204 * appropriate string to use for SyntheticInputEvent.
15205 *
15206 * @param {number} topLevelType Number from `TopLevelEventTypes`.
15207 * @param {object} nativeEvent Native browser event.
15208 * @return {?string} The fallback string for this `beforeInput` event.
15209 */function getFallbackBeforeInputChars(topLevelType,nativeEvent){// If we are currently composing (IME) and using a fallback to do so,
15210// try to extract the composed characters from the fallback object.
15211// If composition event is available, we extract a string only at
15212// compositionevent, otherwise extract it at fallback events.
15213if(isComposing){if(topLevelType===TOP_COMPOSITION_END||!canUseCompositionEvent&&isFallbackCompositionEnd(topLevelType,nativeEvent)){var chars=getData();reset();isComposing=false;return chars;}return null;}switch(topLevelType){case TOP_PASTE:// If a paste event occurs after a keypress, throw out the input
15214// chars. Paste events should not lead to BeforeInput events.
15215return null;case TOP_KEY_PRESS:/**
15216       * As of v27, Firefox may fire keypress events even when no character
15217       * will be inserted. A few possibilities:
15218       *
15219       * - `which` is `0`. Arrow keys, Esc key, etc.
15220       *
15221       * - `which` is the pressed key code, but no char is available.
15222       *   Ex: 'AltGr + d` in Polish. There is no modified character for
15223       *   this key combination and no character is inserted into the
15224       *   document, but FF fires the keypress for char code `100` anyway.
15225       *   No `input` event will occur.
15226       *
15227       * - `which` is the pressed key code, but a command combination is
15228       *   being used. Ex: `Cmd+C`. No character is inserted, and no
15229       *   `input` event will occur.
15230       */if(!isKeypressCommand(nativeEvent)){// IE fires the `keypress` event when a user types an emoji via
15231// Touch keyboard of Windows.  In such a case, the `char` property
15232// holds an emoji character like `\uD83D\uDE0A`.  Because its length
15233// is 2, the property `which` does not represent an emoji correctly.
15234// In such a case, we directly return the `char` property instead of
15235// using `which`.
15236if(nativeEvent.char&&nativeEvent.char.length>1){return nativeEvent.char;}else if(nativeEvent.which){return String.fromCharCode(nativeEvent.which);}}return null;case TOP_COMPOSITION_END:return useFallbackCompositionData&&!isUsingKoreanIME(nativeEvent)?null:nativeEvent.data;default:return null;}}/**
15237 * Extract a SyntheticInputEvent for `beforeInput`, based on either native
15238 * `textInput` or fallback behavior.
15239 *
15240 * @return {?object} A SyntheticInputEvent.
15241 */function extractBeforeInputEvent(topLevelType,targetInst,nativeEvent,nativeEventTarget){var chars;if(canUseTextInputEvent){chars=getNativeBeforeInputChars(topLevelType,nativeEvent);}else{chars=getFallbackBeforeInputChars(topLevelType,nativeEvent);}// If no characters are being inserted, no BeforeInput event should
15242// be fired.
15243if(!chars){return null;}var event=SyntheticInputEvent.getPooled(eventTypes.beforeInput,targetInst,nativeEvent,nativeEventTarget);event.data=chars;accumulateTwoPhaseDispatches(event);return event;}/**
15244 * Create an `onBeforeInput` event to match
15245 * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
15246 *
15247 * This event plugin is based on the native `textInput` event
15248 * available in Chrome, Safari, Opera, and IE. This event fires after
15249 * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
15250 *
15251 * `beforeInput` is spec'd but not implemented in any browsers, and
15252 * the `input` event does not provide any useful information about what has
15253 * actually been added, contrary to the spec. Thus, `textInput` is the best
15254 * available event to identify the characters that have actually been inserted
15255 * into the target node.
15256 *
15257 * This plugin is also responsible for emitting `composition` events, thus
15258 * allowing us to share composition fallback code for both `beforeInput` and
15259 * `composition` event types.
15260 */var BeforeInputEventPlugin={eventTypes:eventTypes,extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var composition=extractCompositionEvent(topLevelType,targetInst,nativeEvent,nativeEventTarget);var beforeInput=extractBeforeInputEvent(topLevelType,targetInst,nativeEvent,nativeEventTarget);if(composition===null){return beforeInput;}if(beforeInput===null){return composition;}return[composition,beforeInput];}};/**
15261 * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
15262 */var supportedInputTypes={color:true,date:true,datetime:true,'datetime-local':true,email:true,month:true,number:true,password:true,range:true,search:true,tel:true,text:true,time:true,url:true,week:true};function isTextInputElement(elem){var nodeName=elem&&elem.nodeName&&elem.nodeName.toLowerCase();if(nodeName==='input'){return!!supportedInputTypes[elem.type];}if(nodeName==='textarea'){return true;}return false;}var eventTypes$1={change:{phasedRegistrationNames:{bubbled:'onChange',captured:'onChangeCapture'},dependencies:[TOP_BLUR,TOP_CHANGE,TOP_CLICK,TOP_FOCUS,TOP_INPUT,TOP_KEY_DOWN,TOP_KEY_UP,TOP_SELECTION_CHANGE]}};function createAndAccumulateChangeEvent(inst,nativeEvent,target){var event=SyntheticEvent.getPooled(eventTypes$1.change,inst,nativeEvent,target);event.type='change';// Flag this event loop as needing state restore.
15263enqueueStateRestore(target);accumulateTwoPhaseDispatches(event);return event;}/**
15264 * For IE shims
15265 */var activeElement=null;var activeElementInst=null;/**
15266 * SECTION: handle `change` event
15267 */function shouldUseChangeEvent(elem){var nodeName=elem.nodeName&&elem.nodeName.toLowerCase();return nodeName==='select'||nodeName==='input'&&elem.type==='file';}function manualDispatchChangeEvent(nativeEvent){var event=createAndAccumulateChangeEvent(activeElementInst,nativeEvent,getEventTarget(nativeEvent));// If change and propertychange bubbled, we'd just bind to it like all the
15268// other events and have it go through ReactBrowserEventEmitter. Since it
15269// doesn't, we manually listen for the events and so we have to enqueue and
15270// process the abstract event manually.
15271//
15272// Batching is necessary here in order to ensure that all event handlers run
15273// before the next rerender (including event handlers attached to ancestor
15274// elements instead of directly on the input). Without this, controlled
15275// components don't work properly in conjunction with event bubbling because
15276// the component is rerendered and the value reverted before all the event
15277// handlers can run. See https://github.com/facebook/react/issues/708.
15278batchedUpdates(runEventInBatch,event);}function runEventInBatch(event){runEventsInBatch(event);}function getInstIfValueChanged(targetInst){var targetNode=getNodeFromInstance$1(targetInst);if(updateValueIfChanged(targetNode)){return targetInst;}}function getTargetInstForChangeEvent(topLevelType,targetInst){if(topLevelType===TOP_CHANGE){return targetInst;}}/**
15279 * SECTION: handle `input` event
15280 */var isInputEventSupported=false;if(canUseDOM){// IE9 claims to support the input event but fails to trigger it when
15281// deleting text, so we ignore its input events.
15282isInputEventSupported=isEventSupported('input')&&(!document.documentMode||document.documentMode>9);}/**
15283 * (For IE <=9) Starts tracking propertychange events on the passed-in element
15284 * and override the value property so that we can distinguish user events from
15285 * value changes in JS.
15286 */function startWatchingForValueChange(target,targetInst){activeElement=target;activeElementInst=targetInst;activeElement.attachEvent('onpropertychange',handlePropertyChange);}/**
15287 * (For IE <=9) Removes the event listeners from the currently-tracked element,
15288 * if any exists.
15289 */function stopWatchingForValueChange(){if(!activeElement){return;}activeElement.detachEvent('onpropertychange',handlePropertyChange);activeElement=null;activeElementInst=null;}/**
15290 * (For IE <=9) Handles a propertychange event, sending a `change` event if
15291 * the value of the active element has changed.
15292 */function handlePropertyChange(nativeEvent){if(nativeEvent.propertyName!=='value'){return;}if(getInstIfValueChanged(activeElementInst)){manualDispatchChangeEvent(nativeEvent);}}function handleEventsForInputEventPolyfill(topLevelType,target,targetInst){if(topLevelType===TOP_FOCUS){// In IE9, propertychange fires for most input events but is buggy and
15293// doesn't fire when text is deleted, but conveniently, selectionchange
15294// appears to fire in all of the remaining cases so we catch those and
15295// forward the event if the value has changed
15296// In either case, we don't want to call the event handler if the value
15297// is changed from JS so we redefine a setter for `.value` that updates
15298// our activeElementValue variable, allowing us to ignore those changes
15299//
15300// stopWatching() should be a noop here but we call it just in case we
15301// missed a blur event somehow.
15302stopWatchingForValueChange();startWatchingForValueChange(target,targetInst);}else if(topLevelType===TOP_BLUR){stopWatchingForValueChange();}}// For IE8 and IE9.
15303function getTargetInstForInputEventPolyfill(topLevelType,targetInst){if(topLevelType===TOP_SELECTION_CHANGE||topLevelType===TOP_KEY_UP||topLevelType===TOP_KEY_DOWN){// On the selectionchange event, the target is just document which isn't
15304// helpful for us so just check activeElement instead.
15305//
15306// 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
15307// propertychange on the first input event after setting `value` from a
15308// script and fires only keydown, keypress, keyup. Catching keyup usually
15309// gets it and catching keydown lets us fire an event for the first
15310// keystroke if user does a key repeat (it'll be a little delayed: right
15311// before the second keystroke). Other input methods (e.g., paste) seem to
15312// fire selectionchange normally.
15313return getInstIfValueChanged(activeElementInst);}}/**
15314 * SECTION: handle `click` event
15315 */function shouldUseClickEvent(elem){// Use the `click` event to detect changes to checkbox and radio inputs.
15316// This approach works across all browsers, whereas `change` does not fire
15317// until `blur` in IE8.
15318var nodeName=elem.nodeName;return nodeName&&nodeName.toLowerCase()==='input'&&(elem.type==='checkbox'||elem.type==='radio');}function getTargetInstForClickEvent(topLevelType,targetInst){if(topLevelType===TOP_CLICK){return getInstIfValueChanged(targetInst);}}function getTargetInstForInputOrChangeEvent(topLevelType,targetInst){if(topLevelType===TOP_INPUT||topLevelType===TOP_CHANGE){return getInstIfValueChanged(targetInst);}}function handleControlledInputBlur(node){var state=node._wrapperState;if(!state||!state.controlled||node.type!=='number'){return;}{// If controlled, assign the value attribute to the current value on blur
15319setDefaultValue(node,'number',node.value);}}/**
15320 * This plugin creates an `onChange` event that normalizes change events
15321 * across form elements. This event fires at a time when it's possible to
15322 * change the element's value without seeing a flicker.
15323 *
15324 * Supported elements are:
15325 * - input (see `isTextInputElement`)
15326 * - textarea
15327 * - select
15328 */var ChangeEventPlugin={eventTypes:eventTypes$1,_isInputEventSupported:isInputEventSupported,extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var targetNode=targetInst?getNodeFromInstance$1(targetInst):window;var getTargetInstFunc,handleEventFunc;if(shouldUseChangeEvent(targetNode)){getTargetInstFunc=getTargetInstForChangeEvent;}else if(isTextInputElement(targetNode)){if(isInputEventSupported){getTargetInstFunc=getTargetInstForInputOrChangeEvent;}else{getTargetInstFunc=getTargetInstForInputEventPolyfill;handleEventFunc=handleEventsForInputEventPolyfill;}}else if(shouldUseClickEvent(targetNode)){getTargetInstFunc=getTargetInstForClickEvent;}if(getTargetInstFunc){var inst=getTargetInstFunc(topLevelType,targetInst);if(inst){var event=createAndAccumulateChangeEvent(inst,nativeEvent,nativeEventTarget);return event;}}if(handleEventFunc){handleEventFunc(topLevelType,targetNode,targetInst);}// When blurring, set the value attribute for number inputs
15329if(topLevelType===TOP_BLUR){handleControlledInputBlur(targetNode);}}};var SyntheticUIEvent=SyntheticEvent.extend({view:null,detail:null});/**
15330 * Translation from modifier key to the associated property in the event.
15331 * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers
15332 */var modifierKeyToProp={Alt:'altKey',Control:'ctrlKey',Meta:'metaKey',Shift:'shiftKey'};// Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support
15333// getModifierState. If getModifierState is not supported, we map it to a set of
15334// modifier keys exposed by the event. In this case, Lock-keys are not supported.
15335function modifierStateGetter(keyArg){var syntheticEvent=this;var nativeEvent=syntheticEvent.nativeEvent;if(nativeEvent.getModifierState){return nativeEvent.getModifierState(keyArg);}var keyProp=modifierKeyToProp[keyArg];return keyProp?!!nativeEvent[keyProp]:false;}function getEventModifierState(nativeEvent){return modifierStateGetter;}var previousScreenX=0;var previousScreenY=0;// Use flags to signal movementX/Y has already been set
15336var isMovementXSet=false;var isMovementYSet=false;/**
15337 * @interface MouseEvent
15338 * @see http://www.w3.org/TR/DOM-Level-3-Events/
15339 */var SyntheticMouseEvent=SyntheticUIEvent.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:getEventModifierState,button:null,buttons:null,relatedTarget:function(event){return event.relatedTarget||(event.fromElement===event.srcElement?event.toElement:event.fromElement);},movementX:function(event){if('movementX'in event){return event.movementX;}var screenX=previousScreenX;previousScreenX=event.screenX;if(!isMovementXSet){isMovementXSet=true;return 0;}return event.type==='mousemove'?event.screenX-screenX:0;},movementY:function(event){if('movementY'in event){return event.movementY;}var screenY=previousScreenY;previousScreenY=event.screenY;if(!isMovementYSet){isMovementYSet=true;return 0;}return event.type==='mousemove'?event.screenY-screenY:0;}});/**
15340 * @interface PointerEvent
15341 * @see http://www.w3.org/TR/pointerevents/
15342 */var SyntheticPointerEvent=SyntheticMouseEvent.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null});var eventTypes$2={mouseEnter:{registrationName:'onMouseEnter',dependencies:[TOP_MOUSE_OUT,TOP_MOUSE_OVER]},mouseLeave:{registrationName:'onMouseLeave',dependencies:[TOP_MOUSE_OUT,TOP_MOUSE_OVER]},pointerEnter:{registrationName:'onPointerEnter',dependencies:[TOP_POINTER_OUT,TOP_POINTER_OVER]},pointerLeave:{registrationName:'onPointerLeave',dependencies:[TOP_POINTER_OUT,TOP_POINTER_OVER]}};var EnterLeaveEventPlugin={eventTypes:eventTypes$2,/**
15343   * For almost every interaction we care about, there will be both a top-level
15344   * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that
15345   * we do not extract duplicate events. However, moving the mouse into the
15346   * browser from outside will not fire a `mouseout` event. In this case, we use
15347   * the `mouseover` top-level event.
15348   */extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var isOverEvent=topLevelType===TOP_MOUSE_OVER||topLevelType===TOP_POINTER_OVER;var isOutEvent=topLevelType===TOP_MOUSE_OUT||topLevelType===TOP_POINTER_OUT;if(isOverEvent&&(eventSystemFlags&IS_REPLAYED)===0&&(nativeEvent.relatedTarget||nativeEvent.fromElement)){// If this is an over event with a target, then we've already dispatched
15349// the event in the out event of the other target. If this is replayed,
15350// then it's because we couldn't dispatch against this target previously
15351// so we have to do it now instead.
15352return null;}if(!isOutEvent&&!isOverEvent){// Must not be a mouse or pointer in or out - ignoring.
15353return null;}var win;if(nativeEventTarget.window===nativeEventTarget){// `nativeEventTarget` is probably a window object.
15354win=nativeEventTarget;}else{// TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
15355var doc=nativeEventTarget.ownerDocument;if(doc){win=doc.defaultView||doc.parentWindow;}else{win=window;}}var from;var to;if(isOutEvent){from=targetInst;var related=nativeEvent.relatedTarget||nativeEvent.toElement;to=related?getClosestInstanceFromNode(related):null;if(to!==null){var nearestMounted=getNearestMountedFiber(to);if(to!==nearestMounted||to.tag!==HostComponent&&to.tag!==HostText){to=null;}}}else{// Moving to a node from outside the window.
15356from=null;to=targetInst;}if(from===to){// Nothing pertains to our managed components.
15357return null;}var eventInterface,leaveEventType,enterEventType,eventTypePrefix;if(topLevelType===TOP_MOUSE_OUT||topLevelType===TOP_MOUSE_OVER){eventInterface=SyntheticMouseEvent;leaveEventType=eventTypes$2.mouseLeave;enterEventType=eventTypes$2.mouseEnter;eventTypePrefix='mouse';}else if(topLevelType===TOP_POINTER_OUT||topLevelType===TOP_POINTER_OVER){eventInterface=SyntheticPointerEvent;leaveEventType=eventTypes$2.pointerLeave;enterEventType=eventTypes$2.pointerEnter;eventTypePrefix='pointer';}var fromNode=from==null?win:getNodeFromInstance$1(from);var toNode=to==null?win:getNodeFromInstance$1(to);var leave=eventInterface.getPooled(leaveEventType,from,nativeEvent,nativeEventTarget);leave.type=eventTypePrefix+'leave';leave.target=fromNode;leave.relatedTarget=toNode;var enter=eventInterface.getPooled(enterEventType,to,nativeEvent,nativeEventTarget);enter.type=eventTypePrefix+'enter';enter.target=toNode;enter.relatedTarget=fromNode;accumulateEnterLeaveDispatches(leave,enter,from,to);// If we are not processing the first ancestor, then we
15358// should not process the same nativeEvent again, as we
15359// will have already processed it in the first ancestor.
15360if((eventSystemFlags&IS_FIRST_ANCESTOR)===0){return[leave];}return[leave,enter];}};/**
15361 * inlined Object.is polyfill to avoid requiring consumers ship their own
15362 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
15363 */function is(x,y){return x===y&&(x!==0||1/x===1/y)||x!==x&&y!==y// eslint-disable-line no-self-compare
15364;}var objectIs=typeof Object.is==='function'?Object.is:is;var hasOwnProperty$2=Object.prototype.hasOwnProperty;/**
15365 * Performs equality by iterating through keys on an object and returning false
15366 * when any key has values which are not strictly equal between the arguments.
15367 * Returns true when the values of all keys are strictly equal.
15368 */function shallowEqual(objA,objB){if(objectIs(objA,objB)){return true;}if(typeof objA!=='object'||objA===null||typeof objB!=='object'||objB===null){return false;}var keysA=Object.keys(objA);var keysB=Object.keys(objB);if(keysA.length!==keysB.length){return false;}// Test for A's keys different from B.
15369for(var i=0;i<keysA.length;i++){if(!hasOwnProperty$2.call(objB,keysA[i])||!objectIs(objA[keysA[i]],objB[keysA[i]])){return false;}}return true;}var skipSelectionChangeEvent=canUseDOM&&'documentMode'in document&&document.documentMode<=11;var eventTypes$3={select:{phasedRegistrationNames:{bubbled:'onSelect',captured:'onSelectCapture'},dependencies:[TOP_BLUR,TOP_CONTEXT_MENU,TOP_DRAG_END,TOP_FOCUS,TOP_KEY_DOWN,TOP_KEY_UP,TOP_MOUSE_DOWN,TOP_MOUSE_UP,TOP_SELECTION_CHANGE]}};var activeElement$1=null;var activeElementInst$1=null;var lastSelection=null;var mouseDown=false;/**
15370 * Get an object which is a unique representation of the current selection.
15371 *
15372 * The return value will not be consistent across nodes or browsers, but
15373 * two identical selections on the same node will return identical objects.
15374 *
15375 * @param {DOMElement} node
15376 * @return {object}
15377 */function getSelection$1(node){if('selectionStart'in node&&hasSelectionCapabilities(node)){return{start:node.selectionStart,end:node.selectionEnd};}else{var win=node.ownerDocument&&node.ownerDocument.defaultView||window;var selection=win.getSelection();return{anchorNode:selection.anchorNode,anchorOffset:selection.anchorOffset,focusNode:selection.focusNode,focusOffset:selection.focusOffset};}}/**
15378 * Get document associated with the event target.
15379 *
15380 * @param {object} nativeEventTarget
15381 * @return {Document}
15382 */function getEventTargetDocument(eventTarget){return eventTarget.window===eventTarget?eventTarget.document:eventTarget.nodeType===DOCUMENT_NODE?eventTarget:eventTarget.ownerDocument;}/**
15383 * Poll selection to see whether it's changed.
15384 *
15385 * @param {object} nativeEvent
15386 * @param {object} nativeEventTarget
15387 * @return {?SyntheticEvent}
15388 */function constructSelectEvent(nativeEvent,nativeEventTarget){// Ensure we have the right element, and that the user is not dragging a
15389// selection (this matches native `select` event behavior). In HTML5, select
15390// fires only on input and textarea thus if there's no focused element we
15391// won't dispatch.
15392var doc=getEventTargetDocument(nativeEventTarget);if(mouseDown||activeElement$1==null||activeElement$1!==getActiveElement(doc)){return null;}// Only fire when selection has actually changed.
15393var currentSelection=getSelection$1(activeElement$1);if(!lastSelection||!shallowEqual(lastSelection,currentSelection)){lastSelection=currentSelection;var syntheticEvent=SyntheticEvent.getPooled(eventTypes$3.select,activeElementInst$1,nativeEvent,nativeEventTarget);syntheticEvent.type='select';syntheticEvent.target=activeElement$1;accumulateTwoPhaseDispatches(syntheticEvent);return syntheticEvent;}return null;}/**
15394 * This plugin creates an `onSelect` event that normalizes select events
15395 * across form elements.
15396 *
15397 * Supported elements are:
15398 * - input (see `isTextInputElement`)
15399 * - textarea
15400 * - contentEditable
15401 *
15402 * This differs from native browser implementations in the following ways:
15403 * - Fires on contentEditable fields as well as inputs.
15404 * - Fires for collapsed selection.
15405 * - Fires after user input.
15406 */var SelectEventPlugin={eventTypes:eventTypes$3,extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags,container){var containerOrDoc=container||getEventTargetDocument(nativeEventTarget);// Track whether all listeners exists for this plugin. If none exist, we do
15407// not extract events. See #3639.
15408if(!containerOrDoc||!isListeningToAllDependencies('onSelect',containerOrDoc)){return null;}var targetNode=targetInst?getNodeFromInstance$1(targetInst):window;switch(topLevelType){// Track the input node that has focus.
15409case TOP_FOCUS:if(isTextInputElement(targetNode)||targetNode.contentEditable==='true'){activeElement$1=targetNode;activeElementInst$1=targetInst;lastSelection=null;}break;case TOP_BLUR:activeElement$1=null;activeElementInst$1=null;lastSelection=null;break;// Don't fire the event while the user is dragging. This matches the
15410// semantics of the native select event.
15411case TOP_MOUSE_DOWN:mouseDown=true;break;case TOP_CONTEXT_MENU:case TOP_MOUSE_UP:case TOP_DRAG_END:mouseDown=false;return constructSelectEvent(nativeEvent,nativeEventTarget);// Chrome and IE fire non-standard event when selection is changed (and
15412// sometimes when it hasn't). IE's event fires out of order with respect
15413// to key and input events on deletion, so we discard it.
15414//
15415// Firefox doesn't support selectionchange, so check selection status
15416// after each key entry. The selection changes after keydown and before
15417// keyup, but we check on keydown as well in the case of holding down a
15418// key, when multiple keydown events are fired but only one keyup is.
15419// This is also our approach for IE handling, for the reason above.
15420case TOP_SELECTION_CHANGE:if(skipSelectionChangeEvent){break;}// falls through
15421case TOP_KEY_DOWN:case TOP_KEY_UP:return constructSelectEvent(nativeEvent,nativeEventTarget);}return null;}};/**
15422 * @interface Event
15423 * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface
15424 * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent
15425 */var SyntheticAnimationEvent=SyntheticEvent.extend({animationName:null,elapsedTime:null,pseudoElement:null});/**
15426 * @interface Event
15427 * @see http://www.w3.org/TR/clipboard-apis/
15428 */var SyntheticClipboardEvent=SyntheticEvent.extend({clipboardData:function(event){return'clipboardData'in event?event.clipboardData:window.clipboardData;}});/**
15429 * @interface FocusEvent
15430 * @see http://www.w3.org/TR/DOM-Level-3-Events/
15431 */var SyntheticFocusEvent=SyntheticUIEvent.extend({relatedTarget:null});/**
15432 * `charCode` represents the actual "character code" and is safe to use with
15433 * `String.fromCharCode`. As such, only keys that correspond to printable
15434 * characters produce a valid `charCode`, the only exception to this is Enter.
15435 * The Tab-key is considered non-printable and does not have a `charCode`,
15436 * presumably because it does not produce a tab-character in browsers.
15437 *
15438 * @param {object} nativeEvent Native browser event.
15439 * @return {number} Normalized `charCode` property.
15440 */function getEventCharCode(nativeEvent){var charCode;var keyCode=nativeEvent.keyCode;if('charCode'in nativeEvent){charCode=nativeEvent.charCode;// FF does not set `charCode` for the Enter-key, check against `keyCode`.
15441if(charCode===0&&keyCode===13){charCode=13;}}else{// IE8 does not implement `charCode`, but `keyCode` has the correct value.
15442charCode=keyCode;}// IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)
15443// report Enter as charCode 10 when ctrl is pressed.
15444if(charCode===10){charCode=13;}// Some non-printable keys are reported in `charCode`/`keyCode`, discard them.
15445// Must not discard the (non-)printable Enter-key.
15446if(charCode>=32||charCode===13){return charCode;}return 0;}/**
15447 * Normalization of deprecated HTML5 `key` values
15448 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
15449 */var normalizeKey={Esc:'Escape',Spacebar:' ',Left:'ArrowLeft',Up:'ArrowUp',Right:'ArrowRight',Down:'ArrowDown',Del:'Delete',Win:'OS',Menu:'ContextMenu',Apps:'ContextMenu',Scroll:'ScrollLock',MozPrintableKey:'Unidentified'};/**
15450 * Translation from legacy `keyCode` to HTML5 `key`
15451 * Only special keys supported, all others depend on keyboard layout or browser
15452 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
15453 */var translateToKey={'8':'Backspace','9':'Tab','12':'Clear','13':'Enter','16':'Shift','17':'Control','18':'Alt','19':'Pause','20':'CapsLock','27':'Escape','32':' ','33':'PageUp','34':'PageDown','35':'End','36':'Home','37':'ArrowLeft','38':'ArrowUp','39':'ArrowRight','40':'ArrowDown','45':'Insert','46':'Delete','112':'F1','113':'F2','114':'F3','115':'F4','116':'F5','117':'F6','118':'F7','119':'F8','120':'F9','121':'F10','122':'F11','123':'F12','144':'NumLock','145':'ScrollLock','224':'Meta'};/**
15454 * @param {object} nativeEvent Native browser event.
15455 * @return {string} Normalized `key` property.
15456 */function getEventKey(nativeEvent){if(nativeEvent.key){// Normalize inconsistent values reported by browsers due to
15457// implementations of a working draft specification.
15458// FireFox implements `key` but returns `MozPrintableKey` for all
15459// printable characters (normalized to `Unidentified`), ignore it.
15460var key=normalizeKey[nativeEvent.key]||nativeEvent.key;if(key!=='Unidentified'){return key;}}// Browser does not implement `key`, polyfill as much of it as we can.
15461if(nativeEvent.type==='keypress'){var charCode=getEventCharCode(nativeEvent);// The enter-key is technically both printable and non-printable and can
15462// thus be captured by `keypress`, no other non-printable key should.
15463return charCode===13?'Enter':String.fromCharCode(charCode);}if(nativeEvent.type==='keydown'||nativeEvent.type==='keyup'){// While user keyboard layout determines the actual meaning of each
15464// `keyCode` value, almost all function keys have a universal value.
15465return translateToKey[nativeEvent.keyCode]||'Unidentified';}return'';}/**
15466 * @interface KeyboardEvent
15467 * @see http://www.w3.org/TR/DOM-Level-3-Events/
15468 */var SyntheticKeyboardEvent=SyntheticUIEvent.extend({key:getEventKey,location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:getEventModifierState,// Legacy Interface
15469charCode:function(event){// `charCode` is the result of a KeyPress event and represents the value of
15470// the actual printable character.
15471// KeyPress is deprecated, but its replacement is not yet final and not
15472// implemented in any major browser. Only KeyPress has charCode.
15473if(event.type==='keypress'){return getEventCharCode(event);}return 0;},keyCode:function(event){// `keyCode` is the result of a KeyDown/Up event and represents the value of
15474// physical keyboard key.
15475// The actual meaning of the value depends on the users' keyboard layout
15476// which cannot be detected. Assuming that it is a US keyboard layout
15477// provides a surprisingly accurate mapping for US and European users.
15478// Due to this, it is left to the user to implement at this time.
15479if(event.type==='keydown'||event.type==='keyup'){return event.keyCode;}return 0;},which:function(event){// `which` is an alias for either `keyCode` or `charCode` depending on the
15480// type of the event.
15481if(event.type==='keypress'){return getEventCharCode(event);}if(event.type==='keydown'||event.type==='keyup'){return event.keyCode;}return 0;}});/**
15482 * @interface DragEvent
15483 * @see http://www.w3.org/TR/DOM-Level-3-Events/
15484 */var SyntheticDragEvent=SyntheticMouseEvent.extend({dataTransfer:null});/**
15485 * @interface TouchEvent
15486 * @see http://www.w3.org/TR/touch-events/
15487 */var SyntheticTouchEvent=SyntheticUIEvent.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:getEventModifierState});/**
15488 * @interface Event
15489 * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-
15490 * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent
15491 */var SyntheticTransitionEvent=SyntheticEvent.extend({propertyName:null,elapsedTime:null,pseudoElement:null});/**
15492 * @interface WheelEvent
15493 * @see http://www.w3.org/TR/DOM-Level-3-Events/
15494 */var SyntheticWheelEvent=SyntheticMouseEvent.extend({deltaX:function(event){return'deltaX'in event?event.deltaX:// Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
15495'wheelDeltaX'in event?-event.wheelDeltaX:0;},deltaY:function(event){return'deltaY'in event?event.deltaY:// Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
15496'wheelDeltaY'in event?-event.wheelDeltaY:// Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
15497'wheelDelta'in event?-event.wheelDelta:0;},deltaZ:null,// Browsers without "deltaMode" is reporting in raw wheel delta where one
15498// notch on the scroll is always +/- 120, roughly equivalent to pixels.
15499// A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
15500// ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
15501deltaMode:null});var knownHTMLTopLevelTypes=[TOP_ABORT,TOP_CANCEL,TOP_CAN_PLAY,TOP_CAN_PLAY_THROUGH,TOP_CLOSE,TOP_DURATION_CHANGE,TOP_EMPTIED,TOP_ENCRYPTED,TOP_ENDED,TOP_ERROR,TOP_INPUT,TOP_INVALID,TOP_LOAD,TOP_LOADED_DATA,TOP_LOADED_METADATA,TOP_LOAD_START,TOP_PAUSE,TOP_PLAY,TOP_PLAYING,TOP_PROGRESS,TOP_RATE_CHANGE,TOP_RESET,TOP_SEEKED,TOP_SEEKING,TOP_STALLED,TOP_SUBMIT,TOP_SUSPEND,TOP_TIME_UPDATE,TOP_TOGGLE,TOP_VOLUME_CHANGE,TOP_WAITING];var SimpleEventPlugin={// simpleEventPluginEventTypes gets populated from
15502// the DOMEventProperties module.
15503eventTypes:simpleEventPluginEventTypes,extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var dispatchConfig=topLevelEventsToDispatchConfig.get(topLevelType);if(!dispatchConfig){return null;}var EventConstructor;switch(topLevelType){case TOP_KEY_PRESS:// Firefox creates a keypress event for function keys too. This removes
15504// the unwanted keypress events. Enter is however both printable and
15505// non-printable. One would expect Tab to be as well (but it isn't).
15506if(getEventCharCode(nativeEvent)===0){return null;}/* falls through */case TOP_KEY_DOWN:case TOP_KEY_UP:EventConstructor=SyntheticKeyboardEvent;break;case TOP_BLUR:case TOP_FOCUS:EventConstructor=SyntheticFocusEvent;break;case TOP_CLICK:// Firefox creates a click event on right mouse clicks. This removes the
15507// unwanted click events.
15508if(nativeEvent.button===2){return null;}/* falls through */case TOP_AUX_CLICK:case TOP_DOUBLE_CLICK:case TOP_MOUSE_DOWN:case TOP_MOUSE_MOVE:case TOP_MOUSE_UP:// TODO: Disabled elements should not respond to mouse events
15509/* falls through */case TOP_MOUSE_OUT:case TOP_MOUSE_OVER:case TOP_CONTEXT_MENU:EventConstructor=SyntheticMouseEvent;break;case TOP_DRAG:case TOP_DRAG_END:case TOP_DRAG_ENTER:case TOP_DRAG_EXIT:case TOP_DRAG_LEAVE:case TOP_DRAG_OVER:case TOP_DRAG_START:case TOP_DROP:EventConstructor=SyntheticDragEvent;break;case TOP_TOUCH_CANCEL:case TOP_TOUCH_END:case TOP_TOUCH_MOVE:case TOP_TOUCH_START:EventConstructor=SyntheticTouchEvent;break;case TOP_ANIMATION_END:case TOP_ANIMATION_ITERATION:case TOP_ANIMATION_START:EventConstructor=SyntheticAnimationEvent;break;case TOP_TRANSITION_END:EventConstructor=SyntheticTransitionEvent;break;case TOP_SCROLL:EventConstructor=SyntheticUIEvent;break;case TOP_WHEEL:EventConstructor=SyntheticWheelEvent;break;case TOP_COPY:case TOP_CUT:case TOP_PASTE:EventConstructor=SyntheticClipboardEvent;break;case TOP_GOT_POINTER_CAPTURE:case TOP_LOST_POINTER_CAPTURE:case TOP_POINTER_CANCEL:case TOP_POINTER_DOWN:case TOP_POINTER_MOVE:case TOP_POINTER_OUT:case TOP_POINTER_OVER:case TOP_POINTER_UP:EventConstructor=SyntheticPointerEvent;break;default:{if(knownHTMLTopLevelTypes.indexOf(topLevelType)===-1){error('SimpleEventPlugin: Unhandled event type, `%s`. This warning '+'is likely caused by a bug in React. Please file an issue.',topLevelType);}}// HTML Events
15510// @see http://www.w3.org/TR/html5/index.html#events-0
15511EventConstructor=SyntheticEvent;break;}var event=EventConstructor.getPooled(dispatchConfig,targetInst,nativeEvent,nativeEventTarget);accumulateTwoPhaseDispatches(event);return event;}};/**
15512 * Specifies a deterministic ordering of `EventPlugin`s. A convenient way to
15513 * reason about plugins, without having to package every one of them. This
15514 * is better than having plugins be ordered in the same order that they
15515 * are injected because that ordering would be influenced by the packaging order.
15516 * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that
15517 * preventing default on events is convenient in `SimpleEventPlugin` handlers.
15518 */var DOMEventPluginOrder=['ResponderEventPlugin','SimpleEventPlugin','EnterLeaveEventPlugin','ChangeEventPlugin','SelectEventPlugin','BeforeInputEventPlugin'];/**
15519 * Inject modules for resolving DOM hierarchy and plugin ordering.
15520 */injectEventPluginOrder(DOMEventPluginOrder);setComponentTree(getFiberCurrentPropsFromNode$1,getInstanceFromNode$1,getNodeFromInstance$1);/**
15521 * Some important event plugins included by default (without having to require
15522 * them).
15523 */injectEventPluginsByName({SimpleEventPlugin:SimpleEventPlugin,EnterLeaveEventPlugin:EnterLeaveEventPlugin,ChangeEventPlugin:ChangeEventPlugin,SelectEventPlugin:SelectEventPlugin,BeforeInputEventPlugin:BeforeInputEventPlugin});// Prefix measurements so that it's possible to filter them.
15524// Longer prefixes are hard to read in DevTools.
15525var reactEmoji="\u269B";var warningEmoji="\u26D4";var supportsUserTiming=typeof performance!=='undefined'&&typeof performance.mark==='function'&&typeof performance.clearMarks==='function'&&typeof performance.measure==='function'&&typeof performance.clearMeasures==='function';// Keep track of current fiber so that we know the path to unwind on pause.
15526// TODO: this looks the same as nextUnitOfWork in scheduler. Can we unify them?
15527var currentFiber=null;// If we're in the middle of user code, which fiber and method is it?
15528// Reusing `currentFiber` would be confusing for this because user code fiber
15529// can change during commit phase too, but we don't need to unwind it (since
15530// lifecycles in the commit phase don't resemble a tree).
15531var currentPhase=null;var currentPhaseFiber=null;// Did lifecycle hook schedule an update? This is often a performance problem,
15532// so we will keep track of it, and include it in the report.
15533// Track commits caused by cascading updates.
15534var isCommitting=false;var hasScheduledUpdateInCurrentCommit=false;var hasScheduledUpdateInCurrentPhase=false;var commitCountInCurrentWorkLoop=0;var effectCountInCurrentCommit=0;// to avoid stretch the commit phase with measurement overhead.
15535var labelsInCurrentCommit=new Set();var formatMarkName=function(markName){return reactEmoji+" "+markName;};var formatLabel=function(label,warning){var prefix=warning?warningEmoji+" ":reactEmoji+" ";var suffix=warning?" Warning: "+warning:'';return""+prefix+label+suffix;};var beginMark=function(markName){performance.mark(formatMarkName(markName));};var clearMark=function(markName){performance.clearMarks(formatMarkName(markName));};var endMark=function(label,markName,warning){var formattedMarkName=formatMarkName(markName);var formattedLabel=formatLabel(label,warning);try{performance.measure(formattedLabel,formattedMarkName);}catch(err){}// If previous mark was missing for some reason, this will throw.
15536// This could only happen if React crashed in an unexpected place earlier.
15537// Don't pile on with more errors.
15538// Clear marks immediately to avoid growing buffer.
15539performance.clearMarks(formattedMarkName);performance.clearMeasures(formattedLabel);};var getFiberMarkName=function(label,debugID){return label+" (#"+debugID+")";};var getFiberLabel=function(componentName,isMounted,phase){if(phase===null){// These are composite component total time measurements.
15540return componentName+" ["+(isMounted?'update':'mount')+"]";}else{// Composite component methods.
15541return componentName+"."+phase;}};var beginFiberMark=function(fiber,phase){var componentName=getComponentName(fiber.type)||'Unknown';var debugID=fiber._debugID;var isMounted=fiber.alternate!==null;var label=getFiberLabel(componentName,isMounted,phase);if(isCommitting&&labelsInCurrentCommit.has(label)){// During the commit phase, we don't show duplicate labels because
15542// there is a fixed overhead for every measurement, and we don't
15543// want to stretch the commit phase beyond necessary.
15544return false;}labelsInCurrentCommit.add(label);var markName=getFiberMarkName(label,debugID);beginMark(markName);return true;};var clearFiberMark=function(fiber,phase){var componentName=getComponentName(fiber.type)||'Unknown';var debugID=fiber._debugID;var isMounted=fiber.alternate!==null;var label=getFiberLabel(componentName,isMounted,phase);var markName=getFiberMarkName(label,debugID);clearMark(markName);};var endFiberMark=function(fiber,phase,warning){var componentName=getComponentName(fiber.type)||'Unknown';var debugID=fiber._debugID;var isMounted=fiber.alternate!==null;var label=getFiberLabel(componentName,isMounted,phase);var markName=getFiberMarkName(label,debugID);endMark(label,markName,warning);};var shouldIgnoreFiber=function(fiber){// Host components should be skipped in the timeline.
15545// We could check typeof fiber.type, but does this work with RN?
15546switch(fiber.tag){case HostRoot:case HostComponent:case HostText:case HostPortal:case Fragment:case ContextProvider:case ContextConsumer:case Mode:return true;default:return false;}};var clearPendingPhaseMeasurement=function(){if(currentPhase!==null&&currentPhaseFiber!==null){clearFiberMark(currentPhaseFiber,currentPhase);}currentPhaseFiber=null;currentPhase=null;hasScheduledUpdateInCurrentPhase=false;};var pauseTimers=function(){// Stops all currently active measurements so that they can be resumed
15547// if we continue in a later deferred loop from the same unit of work.
15548var fiber=currentFiber;while(fiber){if(fiber._debugIsCurrentlyTiming){endFiberMark(fiber,null,null);}fiber=fiber.return;}};var resumeTimersRecursively=function(fiber){if(fiber.return!==null){resumeTimersRecursively(fiber.return);}if(fiber._debugIsCurrentlyTiming){beginFiberMark(fiber,null);}};var resumeTimers=function(){// Resumes all measurements that were active during the last deferred loop.
15549if(currentFiber!==null){resumeTimersRecursively(currentFiber);}};function recordEffect(){{effectCountInCurrentCommit++;}}function recordScheduleUpdate(){{if(isCommitting){hasScheduledUpdateInCurrentCommit=true;}if(currentPhase!==null&&currentPhase!=='componentWillMount'&&currentPhase!=='componentWillReceiveProps'){hasScheduledUpdateInCurrentPhase=true;}}}function startWorkTimer(fiber){{if(!supportsUserTiming||shouldIgnoreFiber(fiber)){return;}// If we pause, this is the fiber to unwind from.
15550currentFiber=fiber;if(!beginFiberMark(fiber,null)){return;}fiber._debugIsCurrentlyTiming=true;}}function cancelWorkTimer(fiber){{if(!supportsUserTiming||shouldIgnoreFiber(fiber)){return;}// Remember we shouldn't complete measurement for this fiber.
15551// Otherwise flamechart will be deep even for small updates.
15552fiber._debugIsCurrentlyTiming=false;clearFiberMark(fiber,null);}}function stopWorkTimer(fiber){{if(!supportsUserTiming||shouldIgnoreFiber(fiber)){return;}// If we pause, its parent is the fiber to unwind from.
15553currentFiber=fiber.return;if(!fiber._debugIsCurrentlyTiming){return;}fiber._debugIsCurrentlyTiming=false;endFiberMark(fiber,null,null);}}function stopFailedWorkTimer(fiber){{if(!supportsUserTiming||shouldIgnoreFiber(fiber)){return;}// If we pause, its parent is the fiber to unwind from.
15554currentFiber=fiber.return;if(!fiber._debugIsCurrentlyTiming){return;}fiber._debugIsCurrentlyTiming=false;var warning=fiber.tag===SuspenseComponent?'Rendering was suspended':'An error was thrown inside this error boundary';endFiberMark(fiber,null,warning);}}function startPhaseTimer(fiber,phase){{if(!supportsUserTiming){return;}clearPendingPhaseMeasurement();if(!beginFiberMark(fiber,phase)){return;}currentPhaseFiber=fiber;currentPhase=phase;}}function stopPhaseTimer(){{if(!supportsUserTiming){return;}if(currentPhase!==null&&currentPhaseFiber!==null){var warning=hasScheduledUpdateInCurrentPhase?'Scheduled a cascading update':null;endFiberMark(currentPhaseFiber,currentPhase,warning);}currentPhase=null;currentPhaseFiber=null;}}function startWorkLoopTimer(nextUnitOfWork){{currentFiber=nextUnitOfWork;if(!supportsUserTiming){return;}commitCountInCurrentWorkLoop=0;// This is top level call.
15555// Any other measurements are performed within.
15556beginMark('(React Tree Reconciliation)');// Resume any measurements that were in progress during the last loop.
15557resumeTimers();}}function stopWorkLoopTimer(interruptedBy,didCompleteRoot){{if(!supportsUserTiming){return;}var warning=null;if(interruptedBy!==null){if(interruptedBy.tag===HostRoot){warning='A top-level update interrupted the previous render';}else{var componentName=getComponentName(interruptedBy.type)||'Unknown';warning="An update to "+componentName+" interrupted the previous render";}}else if(commitCountInCurrentWorkLoop>1){warning='There were cascading updates';}commitCountInCurrentWorkLoop=0;var label=didCompleteRoot?'(React Tree Reconciliation: Completed Root)':'(React Tree Reconciliation: Yielded)';// Pause any measurements until the next loop.
15558pauseTimers();endMark(label,'(React Tree Reconciliation)',warning);}}function startCommitTimer(){{if(!supportsUserTiming){return;}isCommitting=true;hasScheduledUpdateInCurrentCommit=false;labelsInCurrentCommit.clear();beginMark('(Committing Changes)');}}function stopCommitTimer(){{if(!supportsUserTiming){return;}var warning=null;if(hasScheduledUpdateInCurrentCommit){warning='Lifecycle hook scheduled a cascading update';}else if(commitCountInCurrentWorkLoop>0){warning='Caused by a cascading update in earlier commit';}hasScheduledUpdateInCurrentCommit=false;commitCountInCurrentWorkLoop++;isCommitting=false;labelsInCurrentCommit.clear();endMark('(Committing Changes)','(Committing Changes)',warning);}}function startCommitSnapshotEffectsTimer(){{if(!supportsUserTiming){return;}effectCountInCurrentCommit=0;beginMark('(Committing Snapshot Effects)');}}function stopCommitSnapshotEffectsTimer(){{if(!supportsUserTiming){return;}var count=effectCountInCurrentCommit;effectCountInCurrentCommit=0;endMark("(Committing Snapshot Effects: "+count+" Total)",'(Committing Snapshot Effects)',null);}}function startCommitHostEffectsTimer(){{if(!supportsUserTiming){return;}effectCountInCurrentCommit=0;beginMark('(Committing Host Effects)');}}function stopCommitHostEffectsTimer(){{if(!supportsUserTiming){return;}var count=effectCountInCurrentCommit;effectCountInCurrentCommit=0;endMark("(Committing Host Effects: "+count+" Total)",'(Committing Host Effects)',null);}}function startCommitLifeCyclesTimer(){{if(!supportsUserTiming){return;}effectCountInCurrentCommit=0;beginMark('(Calling Lifecycle Methods)');}}function stopCommitLifeCyclesTimer(){{if(!supportsUserTiming){return;}var count=effectCountInCurrentCommit;effectCountInCurrentCommit=0;endMark("(Calling Lifecycle Methods: "+count+" Total)",'(Calling Lifecycle Methods)',null);}}var valueStack=[];var fiberStack;{fiberStack=[];}var index=-1;function createCursor(defaultValue){return{current:defaultValue};}function pop(cursor,fiber){if(index<0){{error('Unexpected pop.');}return;}{if(fiber!==fiberStack[index]){error('Unexpected Fiber popped.');}}cursor.current=valueStack[index];valueStack[index]=null;{fiberStack[index]=null;}index--;}function push(cursor,value,fiber){index++;valueStack[index]=cursor.current;{fiberStack[index]=fiber;}cursor.current=value;}var warnedAboutMissingGetChildContext;{warnedAboutMissingGetChildContext={};}var emptyContextObject={};{Object.freeze(emptyContextObject);}// A cursor to the current merged context object on the stack.
15559var contextStackCursor=createCursor(emptyContextObject);// A cursor to a boolean indicating whether the context has changed.
15560var didPerformWorkStackCursor=createCursor(false);// Keep track of the previous context object that was on the stack.
15561// We use this to get access to the parent context after we have already
15562// pushed the next context provider, and now need to merge their contexts.
15563var previousContext=emptyContextObject;function getUnmaskedContext(workInProgress,Component,didPushOwnContextIfProvider){{if(didPushOwnContextIfProvider&&isContextProvider(Component)){// If the fiber is a context provider itself, when we read its context
15564// we may have already pushed its own child context on the stack. A context
15565// provider should not "see" its own child context. Therefore we read the
15566// previous (parent) context instead for a context provider.
15567return previousContext;}return contextStackCursor.current;}}function cacheContext(workInProgress,unmaskedContext,maskedContext){{var instance=workInProgress.stateNode;instance.__reactInternalMemoizedUnmaskedChildContext=unmaskedContext;instance.__reactInternalMemoizedMaskedChildContext=maskedContext;}}function getMaskedContext(workInProgress,unmaskedContext){{var type=workInProgress.type;var contextTypes=type.contextTypes;if(!contextTypes){return emptyContextObject;}// Avoid recreating masked context unless unmasked context has changed.
15568// Failing to do this will result in unnecessary calls to componentWillReceiveProps.
15569// This may trigger infinite loops if componentWillReceiveProps calls setState.
15570var instance=workInProgress.stateNode;if(instance&&instance.__reactInternalMemoizedUnmaskedChildContext===unmaskedContext){return instance.__reactInternalMemoizedMaskedChildContext;}var context={};for(var key in contextTypes){context[key]=unmaskedContext[key];}{var name=getComponentName(type)||'Unknown';checkPropTypes(contextTypes,context,'context',name,getCurrentFiberStackInDev);}// Cache unmasked context so we can avoid recreating masked context unless necessary.
15571// Context is created before the class component is instantiated so check for instance.
15572if(instance){cacheContext(workInProgress,unmaskedContext,context);}return context;}}function hasContextChanged(){{return didPerformWorkStackCursor.current;}}function isContextProvider(type){{var childContextTypes=type.childContextTypes;return childContextTypes!==null&&childContextTypes!==undefined;}}function popContext(fiber){{pop(didPerformWorkStackCursor,fiber);pop(contextStackCursor,fiber);}}function popTopLevelContextObject(fiber){{pop(didPerformWorkStackCursor,fiber);pop(contextStackCursor,fiber);}}function pushTopLevelContextObject(fiber,context,didChange){{if(!(contextStackCursor.current===emptyContextObject)){{throw Error("Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.");}}push(contextStackCursor,context,fiber);push(didPerformWorkStackCursor,didChange,fiber);}}function processChildContext(fiber,type,parentContext){{var instance=fiber.stateNode;var childContextTypes=type.childContextTypes;// TODO (bvaughn) Replace this behavior with an invariant() in the future.
15573// It has only been added in Fiber to match the (unintentional) behavior in Stack.
15574if(typeof instance.getChildContext!=='function'){{var componentName=getComponentName(type)||'Unknown';if(!warnedAboutMissingGetChildContext[componentName]){warnedAboutMissingGetChildContext[componentName]=true;error('%s.childContextTypes is specified but there is no getChildContext() method '+'on the instance. You can either define getChildContext() on %s or remove '+'childContextTypes from it.',componentName,componentName);}}return parentContext;}var childContext;startPhaseTimer(fiber,'getChildContext');childContext=instance.getChildContext();stopPhaseTimer();for(var contextKey in childContext){if(!(contextKey in childContextTypes)){{throw Error((getComponentName(type)||'Unknown')+".getChildContext(): key \""+contextKey+"\" is not defined in childContextTypes.");}}}{var name=getComponentName(type)||'Unknown';checkPropTypes(childContextTypes,childContext,'child context',name,// In practice, there is one case in which we won't get a stack. It's when
15575// somebody calls unstable_renderSubtreeIntoContainer() and we process
15576// context from the parent component instance. The stack will be missing
15577// because it's outside of the reconciliation, and so the pointer has not
15578// been set. This is rare and doesn't matter. We'll also remove that API.
15579getCurrentFiberStackInDev);}return _assign({},parentContext,{},childContext);}}function pushContextProvider(workInProgress){{var instance=workInProgress.stateNode;// We push the context as early as possible to ensure stack integrity.
15580// If the instance does not exist yet, we will push null at first,
15581// and replace it on the stack later when invalidating the context.
15582var memoizedMergedChildContext=instance&&instance.__reactInternalMemoizedMergedChildContext||emptyContextObject;// Remember the parent context so we can merge with it later.
15583// Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.
15584previousContext=contextStackCursor.current;push(contextStackCursor,memoizedMergedChildContext,workInProgress);push(didPerformWorkStackCursor,didPerformWorkStackCursor.current,workInProgress);return true;}}function invalidateContextProvider(workInProgress,type,didChange){{var instance=workInProgress.stateNode;if(!instance){{throw Error("Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.");}}if(didChange){// Merge parent and own context.
15585// Skip this if we're not updating due to sCU.
15586// This avoids unnecessarily recomputing memoized values.
15587var mergedContext=processChildContext(workInProgress,type,previousContext);instance.__reactInternalMemoizedMergedChildContext=mergedContext;// Replace the old (or empty) context with the new one.
15588// It is important to unwind the context in the reverse order.
15589pop(didPerformWorkStackCursor,workInProgress);pop(contextStackCursor,workInProgress);// Now push the new context and mark that it has changed.
15590push(contextStackCursor,mergedContext,workInProgress);push(didPerformWorkStackCursor,didChange,workInProgress);}else{pop(didPerformWorkStackCursor,workInProgress);push(didPerformWorkStackCursor,didChange,workInProgress);}}}function findCurrentUnmaskedContext(fiber){{// Currently this is only used with renderSubtreeIntoContainer; not sure if it
15591// makes sense elsewhere
15592if(!(isFiberMounted(fiber)&&fiber.tag===ClassComponent)){{throw Error("Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.");}}var node=fiber;do{switch(node.tag){case HostRoot:return node.stateNode.context;case ClassComponent:{var Component=node.type;if(isContextProvider(Component)){return node.stateNode.__reactInternalMemoizedMergedChildContext;}break;}}node=node.return;}while(node!==null);{{throw Error("Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.");}}}}var LegacyRoot=0;var BlockingRoot=1;var ConcurrentRoot=2;var Scheduler_runWithPriority=Scheduler.unstable_runWithPriority,Scheduler_scheduleCallback=Scheduler.unstable_scheduleCallback,Scheduler_cancelCallback=Scheduler.unstable_cancelCallback,Scheduler_shouldYield=Scheduler.unstable_shouldYield,Scheduler_requestPaint=Scheduler.unstable_requestPaint,Scheduler_now=Scheduler.unstable_now,Scheduler_getCurrentPriorityLevel=Scheduler.unstable_getCurrentPriorityLevel,Scheduler_ImmediatePriority=Scheduler.unstable_ImmediatePriority,Scheduler_UserBlockingPriority=Scheduler.unstable_UserBlockingPriority,Scheduler_NormalPriority=Scheduler.unstable_NormalPriority,Scheduler_LowPriority=Scheduler.unstable_LowPriority,Scheduler_IdlePriority=Scheduler.unstable_IdlePriority;{// Provide explicit error message when production+profiling bundle of e.g.
15593// react-dom is used with production (non-profiling) bundle of
15594// scheduler/tracing
15595if(!(tracing.__interactionsRef!=null&&tracing.__interactionsRef.current!=null)){{throw Error("It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) without also replacing the `scheduler/tracing` module with `scheduler/tracing-profiling`. Your bundler might have a setting for aliasing both modules. Learn more at http://fb.me/react-profiling");}}}var fakeCallbackNode={};// Except for NoPriority, these correspond to Scheduler priorities. We use
15596// ascending numbers so we can compare them like numbers. They start at 90 to
15597// avoid clashing with Scheduler's priorities.
15598var ImmediatePriority=99;var UserBlockingPriority$1=98;var NormalPriority=97;var LowPriority=96;var IdlePriority=95;// NoPriority is the absence of priority. Also React-only.
15599var NoPriority=90;var shouldYield=Scheduler_shouldYield;var requestPaint=// Fall back gracefully if we're running an older version of Scheduler.
15600Scheduler_requestPaint!==undefined?Scheduler_requestPaint:function(){};var syncQueue=null;var immediateQueueCallbackNode=null;var isFlushingSyncQueue=false;var initialTimeMs=Scheduler_now();// If the initial timestamp is reasonably small, use Scheduler's `now` directly.
15601// This will be the case for modern browsers that support `performance.now`. In
15602// older browsers, Scheduler falls back to `Date.now`, which returns a Unix
15603// timestamp. In that case, subtract the module initialization time to simulate
15604// the behavior of performance.now and keep our times small enough to fit
15605// within 32 bits.
15606// TODO: Consider lifting this into Scheduler.
15607var now=initialTimeMs<10000?Scheduler_now:function(){return Scheduler_now()-initialTimeMs;};function getCurrentPriorityLevel(){switch(Scheduler_getCurrentPriorityLevel()){case Scheduler_ImmediatePriority:return ImmediatePriority;case Scheduler_UserBlockingPriority:return UserBlockingPriority$1;case Scheduler_NormalPriority:return NormalPriority;case Scheduler_LowPriority:return LowPriority;case Scheduler_IdlePriority:return IdlePriority;default:{{throw Error("Unknown priority level.");}}}}function reactPriorityToSchedulerPriority(reactPriorityLevel){switch(reactPriorityLevel){case ImmediatePriority:return Scheduler_ImmediatePriority;case UserBlockingPriority$1:return Scheduler_UserBlockingPriority;case NormalPriority:return Scheduler_NormalPriority;case LowPriority:return Scheduler_LowPriority;case IdlePriority:return Scheduler_IdlePriority;default:{{throw Error("Unknown priority level.");}}}}function runWithPriority$1(reactPriorityLevel,fn){var priorityLevel=reactPriorityToSchedulerPriority(reactPriorityLevel);return Scheduler_runWithPriority(priorityLevel,fn);}function scheduleCallback(reactPriorityLevel,callback,options){var priorityLevel=reactPriorityToSchedulerPriority(reactPriorityLevel);return Scheduler_scheduleCallback(priorityLevel,callback,options);}function scheduleSyncCallback(callback){// Push this callback into an internal queue. We'll flush these either in
15608// the next tick, or earlier if something calls `flushSyncCallbackQueue`.
15609if(syncQueue===null){syncQueue=[callback];// Flush the queue in the next tick, at the earliest.
15610immediateQueueCallbackNode=Scheduler_scheduleCallback(Scheduler_ImmediatePriority,flushSyncCallbackQueueImpl);}else{// Push onto existing queue. Don't need to schedule a callback because
15611// we already scheduled one when we created the queue.
15612syncQueue.push(callback);}return fakeCallbackNode;}function cancelCallback(callbackNode){if(callbackNode!==fakeCallbackNode){Scheduler_cancelCallback(callbackNode);}}function flushSyncCallbackQueue(){if(immediateQueueCallbackNode!==null){var node=immediateQueueCallbackNode;immediateQueueCallbackNode=null;Scheduler_cancelCallback(node);}flushSyncCallbackQueueImpl();}function flushSyncCallbackQueueImpl(){if(!isFlushingSyncQueue&&syncQueue!==null){// Prevent re-entrancy.
15613isFlushingSyncQueue=true;var i=0;try{var _isSync=true;var queue=syncQueue;runWithPriority$1(ImmediatePriority,function(){for(;i<queue.length;i++){var callback=queue[i];do{callback=callback(_isSync);}while(callback!==null);}});syncQueue=null;}catch(error){// If something throws, leave the remaining callbacks on the queue.
15614if(syncQueue!==null){syncQueue=syncQueue.slice(i+1);}// Resume flushing in the next tick
15615Scheduler_scheduleCallback(Scheduler_ImmediatePriority,flushSyncCallbackQueue);throw error;}finally{isFlushingSyncQueue=false;}}}var NoMode=0;var StrictMode=1;// TODO: Remove BlockingMode and ConcurrentMode by reading from the root
15616// tag instead
15617var BlockingMode=2;var ConcurrentMode=4;var ProfileMode=8;// Max 31 bit integer. The max integer size in V8 for 32-bit systems.
15618// Math.pow(2, 30) - 1
15619// 0b111111111111111111111111111111
15620var MAX_SIGNED_31_BIT_INT=1073741823;var NoWork=0;// TODO: Think of a better name for Never. The key difference with Idle is that
15621// Never work can be committed in an inconsistent state without tearing the UI.
15622// The main example is offscreen content, like a hidden subtree. So one possible
15623// name is Offscreen. However, it also includes dehydrated Suspense boundaries,
15624// which are inconsistent in the sense that they haven't finished yet, but
15625// aren't visibly inconsistent because the server rendered HTML matches what the
15626// hydrated tree would look like.
15627var Never=1;// Idle is slightly higher priority than Never. It must completely finish in
15628// order to be consistent.
15629var Idle=2;// Continuous Hydration is slightly higher than Idle and is used to increase
15630// priority of hover targets.
15631var ContinuousHydration=3;var Sync=MAX_SIGNED_31_BIT_INT;var Batched=Sync-1;var UNIT_SIZE=10;var MAGIC_NUMBER_OFFSET=Batched-1;// 1 unit of expiration time represents 10ms.
15632function msToExpirationTime(ms){// Always subtract from the offset so that we don't clash with the magic number for NoWork.
15633return MAGIC_NUMBER_OFFSET-(ms/UNIT_SIZE|0);}function expirationTimeToMs(expirationTime){return(MAGIC_NUMBER_OFFSET-expirationTime)*UNIT_SIZE;}function ceiling(num,precision){return((num/precision|0)+1)*precision;}function computeExpirationBucket(currentTime,expirationInMs,bucketSizeMs){return MAGIC_NUMBER_OFFSET-ceiling(MAGIC_NUMBER_OFFSET-currentTime+expirationInMs/UNIT_SIZE,bucketSizeMs/UNIT_SIZE);}// TODO: This corresponds to Scheduler's NormalPriority, not LowPriority. Update
15634// the names to reflect.
15635var LOW_PRIORITY_EXPIRATION=5000;var LOW_PRIORITY_BATCH_SIZE=250;function computeAsyncExpiration(currentTime){return computeExpirationBucket(currentTime,LOW_PRIORITY_EXPIRATION,LOW_PRIORITY_BATCH_SIZE);}function computeSuspenseExpiration(currentTime,timeoutMs){// TODO: Should we warn if timeoutMs is lower than the normal pri expiration time?
15636return computeExpirationBucket(currentTime,timeoutMs,LOW_PRIORITY_BATCH_SIZE);}// We intentionally set a higher expiration time for interactive updates in
15637// dev than in production.
15638//
15639// If the main thread is being blocked so long that you hit the expiration,
15640// it's a problem that could be solved with better scheduling.
15641//
15642// People will be more likely to notice this and fix it with the long
15643// expiration time in development.
15644//
15645// In production we opt for better UX at the risk of masking scheduling
15646// problems, by expiring fast.
15647var HIGH_PRIORITY_EXPIRATION=500;var HIGH_PRIORITY_BATCH_SIZE=100;function computeInteractiveExpiration(currentTime){return computeExpirationBucket(currentTime,HIGH_PRIORITY_EXPIRATION,HIGH_PRIORITY_BATCH_SIZE);}function inferPriorityFromExpirationTime(currentTime,expirationTime){if(expirationTime===Sync){return ImmediatePriority;}if(expirationTime===Never||expirationTime===Idle){return IdlePriority;}var msUntil=expirationTimeToMs(expirationTime)-expirationTimeToMs(currentTime);if(msUntil<=0){return ImmediatePriority;}if(msUntil<=HIGH_PRIORITY_EXPIRATION+HIGH_PRIORITY_BATCH_SIZE){return UserBlockingPriority$1;}if(msUntil<=LOW_PRIORITY_EXPIRATION+LOW_PRIORITY_BATCH_SIZE){return NormalPriority;}// TODO: Handle LowPriority
15648// Assume anything lower has idle priority
15649return IdlePriority;}var ReactStrictModeWarnings={recordUnsafeLifecycleWarnings:function(fiber,instance){},flushPendingUnsafeLifecycleWarnings:function(){},recordLegacyContextWarning:function(fiber,instance){},flushLegacyContextWarning:function(){},discardPendingWarnings:function(){}};{var findStrictRoot=function(fiber){var maybeStrictRoot=null;var node=fiber;while(node!==null){if(node.mode&StrictMode){maybeStrictRoot=node;}node=node.return;}return maybeStrictRoot;};var setToSortedString=function(set){var array=[];set.forEach(function(value){array.push(value);});return array.sort().join(', ');};var pendingComponentWillMountWarnings=[];var pendingUNSAFE_ComponentWillMountWarnings=[];var pendingComponentWillReceivePropsWarnings=[];var pendingUNSAFE_ComponentWillReceivePropsWarnings=[];var pendingComponentWillUpdateWarnings=[];var pendingUNSAFE_ComponentWillUpdateWarnings=[];// Tracks components we have already warned about.
15650var didWarnAboutUnsafeLifecycles=new Set();ReactStrictModeWarnings.recordUnsafeLifecycleWarnings=function(fiber,instance){// Dedup strategy: Warn once per component.
15651if(didWarnAboutUnsafeLifecycles.has(fiber.type)){return;}if(typeof instance.componentWillMount==='function'&&// Don't warn about react-lifecycles-compat polyfilled components.
15652instance.componentWillMount.__suppressDeprecationWarning!==true){pendingComponentWillMountWarnings.push(fiber);}if(fiber.mode&StrictMode&&typeof instance.UNSAFE_componentWillMount==='function'){pendingUNSAFE_ComponentWillMountWarnings.push(fiber);}if(typeof instance.componentWillReceiveProps==='function'&&instance.componentWillReceiveProps.__suppressDeprecationWarning!==true){pendingComponentWillReceivePropsWarnings.push(fiber);}if(fiber.mode&StrictMode&&typeof instance.UNSAFE_componentWillReceiveProps==='function'){pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);}if(typeof instance.componentWillUpdate==='function'&&instance.componentWillUpdate.__suppressDeprecationWarning!==true){pendingComponentWillUpdateWarnings.push(fiber);}if(fiber.mode&StrictMode&&typeof instance.UNSAFE_componentWillUpdate==='function'){pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);}};ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings=function(){// We do an initial pass to gather component names
15653var componentWillMountUniqueNames=new Set();if(pendingComponentWillMountWarnings.length>0){pendingComponentWillMountWarnings.forEach(function(fiber){componentWillMountUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingComponentWillMountWarnings=[];}var UNSAFE_componentWillMountUniqueNames=new Set();if(pendingUNSAFE_ComponentWillMountWarnings.length>0){pendingUNSAFE_ComponentWillMountWarnings.forEach(function(fiber){UNSAFE_componentWillMountUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingUNSAFE_ComponentWillMountWarnings=[];}var componentWillReceivePropsUniqueNames=new Set();if(pendingComponentWillReceivePropsWarnings.length>0){pendingComponentWillReceivePropsWarnings.forEach(function(fiber){componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingComponentWillReceivePropsWarnings=[];}var UNSAFE_componentWillReceivePropsUniqueNames=new Set();if(pendingUNSAFE_ComponentWillReceivePropsWarnings.length>0){pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function(fiber){UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingUNSAFE_ComponentWillReceivePropsWarnings=[];}var componentWillUpdateUniqueNames=new Set();if(pendingComponentWillUpdateWarnings.length>0){pendingComponentWillUpdateWarnings.forEach(function(fiber){componentWillUpdateUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingComponentWillUpdateWarnings=[];}var UNSAFE_componentWillUpdateUniqueNames=new Set();if(pendingUNSAFE_ComponentWillUpdateWarnings.length>0){pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function(fiber){UNSAFE_componentWillUpdateUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingUNSAFE_ComponentWillUpdateWarnings=[];}// Finally, we flush all the warnings
15654// UNSAFE_ ones before the deprecated ones, since they'll be 'louder'
15655if(UNSAFE_componentWillMountUniqueNames.size>0){var sortedNames=setToSortedString(UNSAFE_componentWillMountUniqueNames);error('Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. '+'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n'+'* Move code with side effects to componentDidMount, and set initial state in the constructor.\n'+'\nPlease update the following components: %s',sortedNames);}if(UNSAFE_componentWillReceivePropsUniqueNames.size>0){var _sortedNames=setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);error('Using UNSAFE_componentWillReceiveProps in strict mode is not recommended '+'and may indicate bugs in your code. '+'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n'+'* Move data fetching code or side effects to componentDidUpdate.\n'+"* If you're updating state whenever props change, "+'refactor your code to use memoization techniques or move it to '+'static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state\n'+'\nPlease update the following components: %s',_sortedNames);}if(UNSAFE_componentWillUpdateUniqueNames.size>0){var _sortedNames2=setToSortedString(UNSAFE_componentWillUpdateUniqueNames);error('Using UNSAFE_componentWillUpdate in strict mode is not recommended '+'and may indicate bugs in your code. '+'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n'+'* Move data fetching code or side effects to componentDidUpdate.\n'+'\nPlease update the following components: %s',_sortedNames2);}if(componentWillMountUniqueNames.size>0){var _sortedNames3=setToSortedString(componentWillMountUniqueNames);warn('componentWillMount has been renamed, and is not recommended for use. '+'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n'+'* Move code with side effects to componentDidMount, and set initial state in the constructor.\n'+'* Rename componentWillMount to UNSAFE_componentWillMount to suppress '+'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. '+'To rename all deprecated lifecycles to their new names, you can run '+'`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n'+'\nPlease update the following components: %s',_sortedNames3);}if(componentWillReceivePropsUniqueNames.size>0){var _sortedNames4=setToSortedString(componentWillReceivePropsUniqueNames);warn('componentWillReceiveProps has been renamed, and is not recommended for use. '+'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n'+'* Move data fetching code or side effects to componentDidUpdate.\n'+"* If you're updating state whenever props change, refactor your "+'code to use memoization techniques or move it to '+'static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state\n'+'* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress '+'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. '+'To rename all deprecated lifecycles to their new names, you can run '+'`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n'+'\nPlease update the following components: %s',_sortedNames4);}if(componentWillUpdateUniqueNames.size>0){var _sortedNames5=setToSortedString(componentWillUpdateUniqueNames);warn('componentWillUpdate has been renamed, and is not recommended for use. '+'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n'+'* Move data fetching code or side effects to componentDidUpdate.\n'+'* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress '+'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. '+'To rename all deprecated lifecycles to their new names, you can run '+'`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n'+'\nPlease update the following components: %s',_sortedNames5);}};var pendingLegacyContextWarning=new Map();// Tracks components we have already warned about.
15656var didWarnAboutLegacyContext=new Set();ReactStrictModeWarnings.recordLegacyContextWarning=function(fiber,instance){var strictRoot=findStrictRoot(fiber);if(strictRoot===null){error('Expected to find a StrictMode component in a strict mode tree. '+'This error is likely caused by a bug in React. Please file an issue.');return;}// Dedup strategy: Warn once per component.
15657if(didWarnAboutLegacyContext.has(fiber.type)){return;}var warningsForRoot=pendingLegacyContextWarning.get(strictRoot);if(fiber.type.contextTypes!=null||fiber.type.childContextTypes!=null||instance!==null&&typeof instance.getChildContext==='function'){if(warningsForRoot===undefined){warningsForRoot=[];pendingLegacyContextWarning.set(strictRoot,warningsForRoot);}warningsForRoot.push(fiber);}};ReactStrictModeWarnings.flushLegacyContextWarning=function(){pendingLegacyContextWarning.forEach(function(fiberArray,strictRoot){if(fiberArray.length===0){return;}var firstFiber=fiberArray[0];var uniqueNames=new Set();fiberArray.forEach(function(fiber){uniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutLegacyContext.add(fiber.type);});var sortedNames=setToSortedString(uniqueNames);var firstComponentStack=getStackByFiberInDevAndProd(firstFiber);error('Legacy context API has been detected within a strict-mode tree.'+'\n\nThe old API will be supported in all 16.x releases, but applications '+'using it should migrate to the new version.'+'\n\nPlease update the following components: %s'+'\n\nLearn more about this warning here: https://fb.me/react-legacy-context'+'%s',sortedNames,firstComponentStack);});};ReactStrictModeWarnings.discardPendingWarnings=function(){pendingComponentWillMountWarnings=[];pendingUNSAFE_ComponentWillMountWarnings=[];pendingComponentWillReceivePropsWarnings=[];pendingUNSAFE_ComponentWillReceivePropsWarnings=[];pendingComponentWillUpdateWarnings=[];pendingUNSAFE_ComponentWillUpdateWarnings=[];pendingLegacyContextWarning=new Map();};}var resolveFamily=null;// $FlowFixMe Flow gets confused by a WeakSet feature check below.
15658var failedBoundaries=null;var setRefreshHandler=function(handler){{resolveFamily=handler;}};function resolveFunctionForHotReloading(type){{if(resolveFamily===null){// Hot reloading is disabled.
15659return type;}var family=resolveFamily(type);if(family===undefined){return type;}// Use the latest known implementation.
15660return family.current;}}function resolveClassForHotReloading(type){// No implementation differences.
15661return resolveFunctionForHotReloading(type);}function resolveForwardRefForHotReloading(type){{if(resolveFamily===null){// Hot reloading is disabled.
15662return type;}var family=resolveFamily(type);if(family===undefined){// Check if we're dealing with a real forwardRef. Don't want to crash early.
15663if(type!==null&&type!==undefined&&typeof type.render==='function'){// ForwardRef is special because its resolved .type is an object,
15664// but it's possible that we only have its inner render function in the map.
15665// If that inner render function is different, we'll build a new forwardRef type.
15666var currentRender=resolveFunctionForHotReloading(type.render);if(type.render!==currentRender){var syntheticType={$$typeof:REACT_FORWARD_REF_TYPE,render:currentRender};if(type.displayName!==undefined){syntheticType.displayName=type.displayName;}return syntheticType;}}return type;}// Use the latest known implementation.
15667return family.current;}}function isCompatibleFamilyForHotReloading(fiber,element){{if(resolveFamily===null){// Hot reloading is disabled.
15668return false;}var prevType=fiber.elementType;var nextType=element.type;// If we got here, we know types aren't === equal.
15669var needsCompareFamilies=false;var $$typeofNextType=typeof nextType==='object'&&nextType!==null?nextType.$$typeof:null;switch(fiber.tag){case ClassComponent:{if(typeof nextType==='function'){needsCompareFamilies=true;}break;}case FunctionComponent:{if(typeof nextType==='function'){needsCompareFamilies=true;}else if($$typeofNextType===REACT_LAZY_TYPE){// We don't know the inner type yet.
15670// We're going to assume that the lazy inner type is stable,
15671// and so it is sufficient to avoid reconciling it away.
15672// We're not going to unwrap or actually use the new lazy type.
15673needsCompareFamilies=true;}break;}case ForwardRef:{if($$typeofNextType===REACT_FORWARD_REF_TYPE){needsCompareFamilies=true;}else if($$typeofNextType===REACT_LAZY_TYPE){needsCompareFamilies=true;}break;}case MemoComponent:case SimpleMemoComponent:{if($$typeofNextType===REACT_MEMO_TYPE){// TODO: if it was but can no longer be simple,
15674// we shouldn't set this.
15675needsCompareFamilies=true;}else if($$typeofNextType===REACT_LAZY_TYPE){needsCompareFamilies=true;}break;}default:return false;}// Check if both types have a family and it's the same one.
15676if(needsCompareFamilies){// Note: memo() and forwardRef() we'll compare outer rather than inner type.
15677// This means both of them need to be registered to preserve state.
15678// If we unwrapped and compared the inner types for wrappers instead,
15679// then we would risk falsely saying two separate memo(Foo)
15680// calls are equivalent because they wrap the same Foo function.
15681var prevFamily=resolveFamily(prevType);if(prevFamily!==undefined&&prevFamily===resolveFamily(nextType)){return true;}}return false;}}function markFailedErrorBoundaryForHotReloading(fiber){{if(resolveFamily===null){// Hot reloading is disabled.
15682return;}if(typeof WeakSet!=='function'){return;}if(failedBoundaries===null){failedBoundaries=new WeakSet();}failedBoundaries.add(fiber);}}var scheduleRefresh=function(root,update){{if(resolveFamily===null){// Hot reloading is disabled.
15683return;}var staleFamilies=update.staleFamilies,updatedFamilies=update.updatedFamilies;flushPassiveEffects();flushSync(function(){scheduleFibersWithFamiliesRecursively(root.current,updatedFamilies,staleFamilies);});}};var scheduleRoot=function(root,element){{if(root.context!==emptyContextObject){// Super edge case: root has a legacy _renderSubtree context
15684// but we don't know the parentComponent so we can't pass it.
15685// Just ignore. We'll delete this with _renderSubtree code path later.
15686return;}flushPassiveEffects();syncUpdates(function(){updateContainer(element,root,null,null);});}};function scheduleFibersWithFamiliesRecursively(fiber,updatedFamilies,staleFamilies){{var alternate=fiber.alternate,child=fiber.child,sibling=fiber.sibling,tag=fiber.tag,type=fiber.type;var candidateType=null;switch(tag){case FunctionComponent:case SimpleMemoComponent:case ClassComponent:candidateType=type;break;case ForwardRef:candidateType=type.render;break;}if(resolveFamily===null){throw new Error('Expected resolveFamily to be set during hot reload.');}var needsRender=false;var needsRemount=false;if(candidateType!==null){var family=resolveFamily(candidateType);if(family!==undefined){if(staleFamilies.has(family)){needsRemount=true;}else if(updatedFamilies.has(family)){if(tag===ClassComponent){needsRemount=true;}else{needsRender=true;}}}}if(failedBoundaries!==null){if(failedBoundaries.has(fiber)||alternate!==null&&failedBoundaries.has(alternate)){needsRemount=true;}}if(needsRemount){fiber._debugNeedsRemount=true;}if(needsRemount||needsRender){scheduleWork(fiber,Sync);}if(child!==null&&!needsRemount){scheduleFibersWithFamiliesRecursively(child,updatedFamilies,staleFamilies);}if(sibling!==null){scheduleFibersWithFamiliesRecursively(sibling,updatedFamilies,staleFamilies);}}}var findHostInstancesForRefresh=function(root,families){{var hostInstances=new Set();var types=new Set(families.map(function(family){return family.current;}));findHostInstancesForMatchingFibersRecursively(root.current,types,hostInstances);return hostInstances;}};function findHostInstancesForMatchingFibersRecursively(fiber,types,hostInstances){{var child=fiber.child,sibling=fiber.sibling,tag=fiber.tag,type=fiber.type;var candidateType=null;switch(tag){case FunctionComponent:case SimpleMemoComponent:case ClassComponent:candidateType=type;break;case ForwardRef:candidateType=type.render;break;}var didMatch=false;if(candidateType!==null){if(types.has(candidateType)){didMatch=true;}}if(didMatch){// We have a match. This only drills down to the closest host components.
15687// There's no need to search deeper because for the purpose of giving
15688// visual feedback, "flashing" outermost parent rectangles is sufficient.
15689findHostInstancesForFiberShallowly(fiber,hostInstances);}else{// If there's no match, maybe there will be one further down in the child tree.
15690if(child!==null){findHostInstancesForMatchingFibersRecursively(child,types,hostInstances);}}if(sibling!==null){findHostInstancesForMatchingFibersRecursively(sibling,types,hostInstances);}}}function findHostInstancesForFiberShallowly(fiber,hostInstances){{var foundHostInstances=findChildHostInstancesForFiberShallowly(fiber,hostInstances);if(foundHostInstances){return;}// If we didn't find any host children, fallback to closest host parent.
15691var node=fiber;while(true){switch(node.tag){case HostComponent:hostInstances.add(node.stateNode);return;case HostPortal:hostInstances.add(node.stateNode.containerInfo);return;case HostRoot:hostInstances.add(node.stateNode.containerInfo);return;}if(node.return===null){throw new Error('Expected to reach root first.');}node=node.return;}}}function findChildHostInstancesForFiberShallowly(fiber,hostInstances){{var node=fiber;var foundHostInstances=false;while(true){if(node.tag===HostComponent){// We got a match.
15692foundHostInstances=true;hostInstances.add(node.stateNode);// There may still be more, so keep searching.
15693}else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===fiber){return foundHostInstances;}while(node.sibling===null){if(node.return===null||node.return===fiber){return foundHostInstances;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}}return false;}function resolveDefaultProps(Component,baseProps){if(Component&&Component.defaultProps){// Resolve default props. Taken from ReactElement
15694var props=_assign({},baseProps);var defaultProps=Component.defaultProps;for(var propName in defaultProps){if(props[propName]===undefined){props[propName]=defaultProps[propName];}}return props;}return baseProps;}function readLazyComponentType(lazyComponent){initializeLazyComponentType(lazyComponent);if(lazyComponent._status!==Resolved){throw lazyComponent._result;}return lazyComponent._result;}var valueCursor=createCursor(null);var rendererSigil;{// Use this to detect multiple renderers using the same context
15695rendererSigil={};}var currentlyRenderingFiber=null;var lastContextDependency=null;var lastContextWithAllBitsObserved=null;var isDisallowedContextReadInDEV=false;function resetContextDependencies(){// This is called right before React yields execution, to ensure `readContext`
15696// cannot be called outside the render phase.
15697currentlyRenderingFiber=null;lastContextDependency=null;lastContextWithAllBitsObserved=null;{isDisallowedContextReadInDEV=false;}}function enterDisallowedContextReadInDEV(){{isDisallowedContextReadInDEV=true;}}function exitDisallowedContextReadInDEV(){{isDisallowedContextReadInDEV=false;}}function pushProvider(providerFiber,nextValue){var context=providerFiber.type._context;{push(valueCursor,context._currentValue,providerFiber);context._currentValue=nextValue;{if(context._currentRenderer!==undefined&&context._currentRenderer!==null&&context._currentRenderer!==rendererSigil){error('Detected multiple renderers concurrently rendering the '+'same context provider. This is currently unsupported.');}context._currentRenderer=rendererSigil;}}}function popProvider(providerFiber){var currentValue=valueCursor.current;pop(valueCursor,providerFiber);var context=providerFiber.type._context;{context._currentValue=currentValue;}}function calculateChangedBits(context,newValue,oldValue){if(objectIs(oldValue,newValue)){// No change
15698return 0;}else{var changedBits=typeof context._calculateChangedBits==='function'?context._calculateChangedBits(oldValue,newValue):MAX_SIGNED_31_BIT_INT;{if((changedBits&MAX_SIGNED_31_BIT_INT)!==changedBits){error('calculateChangedBits: Expected the return value to be a '+'31-bit integer. Instead received: %s',changedBits);}}return changedBits|0;}}function scheduleWorkOnParentPath(parent,renderExpirationTime){// Update the child expiration time of all the ancestors, including
15699// the alternates.
15700var node=parent;while(node!==null){var alternate=node.alternate;if(node.childExpirationTime<renderExpirationTime){node.childExpirationTime=renderExpirationTime;if(alternate!==null&&alternate.childExpirationTime<renderExpirationTime){alternate.childExpirationTime=renderExpirationTime;}}else if(alternate!==null&&alternate.childExpirationTime<renderExpirationTime){alternate.childExpirationTime=renderExpirationTime;}else{// Neither alternate was updated, which means the rest of the
15701// ancestor path already has sufficient priority.
15702break;}node=node.return;}}function propagateContextChange(workInProgress,context,changedBits,renderExpirationTime){var fiber=workInProgress.child;if(fiber!==null){// Set the return pointer of the child to the work-in-progress fiber.
15703fiber.return=workInProgress;}while(fiber!==null){var nextFiber=void 0;// Visit this fiber.
15704var list=fiber.dependencies;if(list!==null){nextFiber=fiber.child;var dependency=list.firstContext;while(dependency!==null){// Check if the context matches.
15705if(dependency.context===context&&(dependency.observedBits&changedBits)!==0){// Match! Schedule an update on this fiber.
15706if(fiber.tag===ClassComponent){// Schedule a force update on the work-in-progress.
15707var update=createUpdate(renderExpirationTime,null);update.tag=ForceUpdate;// TODO: Because we don't have a work-in-progress, this will add the
15708// update to the current fiber, too, which means it will persist even if
15709// this render is thrown away. Since it's a race condition, not sure it's
15710// worth fixing.
15711enqueueUpdate(fiber,update);}if(fiber.expirationTime<renderExpirationTime){fiber.expirationTime=renderExpirationTime;}var alternate=fiber.alternate;if(alternate!==null&&alternate.expirationTime<renderExpirationTime){alternate.expirationTime=renderExpirationTime;}scheduleWorkOnParentPath(fiber.return,renderExpirationTime);// Mark the expiration time on the list, too.
15712if(list.expirationTime<renderExpirationTime){list.expirationTime=renderExpirationTime;}// Since we already found a match, we can stop traversing the
15713// dependency list.
15714break;}dependency=dependency.next;}}else if(fiber.tag===ContextProvider){// Don't scan deeper if this is a matching provider
15715nextFiber=fiber.type===workInProgress.type?null:fiber.child;}else{// Traverse down.
15716nextFiber=fiber.child;}if(nextFiber!==null){// Set the return pointer of the child to the work-in-progress fiber.
15717nextFiber.return=fiber;}else{// No child. Traverse to next sibling.
15718nextFiber=fiber;while(nextFiber!==null){if(nextFiber===workInProgress){// We're back to the root of this subtree. Exit.
15719nextFiber=null;break;}var sibling=nextFiber.sibling;if(sibling!==null){// Set the return pointer of the sibling to the work-in-progress fiber.
15720sibling.return=nextFiber.return;nextFiber=sibling;break;}// No more siblings. Traverse up.
15721nextFiber=nextFiber.return;}}fiber=nextFiber;}}function prepareToReadContext(workInProgress,renderExpirationTime){currentlyRenderingFiber=workInProgress;lastContextDependency=null;lastContextWithAllBitsObserved=null;var dependencies=workInProgress.dependencies;if(dependencies!==null){var firstContext=dependencies.firstContext;if(firstContext!==null){if(dependencies.expirationTime>=renderExpirationTime){// Context list has a pending update. Mark that this fiber performed work.
15722markWorkInProgressReceivedUpdate();}// Reset the work-in-progress list
15723dependencies.firstContext=null;}}}function readContext(context,observedBits){{// This warning would fire if you read context inside a Hook like useMemo.
15724// Unlike the class check below, it's not enforced in production for perf.
15725if(isDisallowedContextReadInDEV){error('Context can only be read while React is rendering. '+'In classes, you can read it in the render method or getDerivedStateFromProps. '+'In function components, you can read it directly in the function body, but not '+'inside Hooks like useReducer() or useMemo().');}}if(lastContextWithAllBitsObserved===context);else if(observedBits===false||observedBits===0);else{var resolvedObservedBits;// Avoid deopting on observable arguments or heterogeneous types.
15726if(typeof observedBits!=='number'||observedBits===MAX_SIGNED_31_BIT_INT){// Observe all updates.
15727lastContextWithAllBitsObserved=context;resolvedObservedBits=MAX_SIGNED_31_BIT_INT;}else{resolvedObservedBits=observedBits;}var contextItem={context:context,observedBits:resolvedObservedBits,next:null};if(lastContextDependency===null){if(!(currentlyRenderingFiber!==null)){{throw Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");}}// This is the first dependency for this component. Create a new list.
15728lastContextDependency=contextItem;currentlyRenderingFiber.dependencies={expirationTime:NoWork,firstContext:contextItem,responders:null};}else{// Append a new context item.
15729lastContextDependency=lastContextDependency.next=contextItem;}}return context._currentValue;}var UpdateState=0;var ReplaceState=1;var ForceUpdate=2;var CaptureUpdate=3;// Global state that is reset at the beginning of calling `processUpdateQueue`.
15730// It should only be read right after calling `processUpdateQueue`, via
15731// `checkHasForceUpdateAfterProcessing`.
15732var hasForceUpdate=false;var didWarnUpdateInsideUpdate;var currentlyProcessingQueue;{didWarnUpdateInsideUpdate=false;currentlyProcessingQueue=null;}function initializeUpdateQueue(fiber){var queue={baseState:fiber.memoizedState,baseQueue:null,shared:{pending:null},effects:null};fiber.updateQueue=queue;}function cloneUpdateQueue(current,workInProgress){// Clone the update queue from current. Unless it's already a clone.
15733var queue=workInProgress.updateQueue;var currentQueue=current.updateQueue;if(queue===currentQueue){var clone={baseState:currentQueue.baseState,baseQueue:currentQueue.baseQueue,shared:currentQueue.shared,effects:currentQueue.effects};workInProgress.updateQueue=clone;}}function createUpdate(expirationTime,suspenseConfig){var update={expirationTime:expirationTime,suspenseConfig:suspenseConfig,tag:UpdateState,payload:null,callback:null,next:null};update.next=update;{update.priority=getCurrentPriorityLevel();}return update;}function enqueueUpdate(fiber,update){var updateQueue=fiber.updateQueue;if(updateQueue===null){// Only occurs if the fiber has been unmounted.
15734return;}var sharedQueue=updateQueue.shared;var pending=sharedQueue.pending;if(pending===null){// This is the first update. Create a circular list.
15735update.next=update;}else{update.next=pending.next;pending.next=update;}sharedQueue.pending=update;{if(currentlyProcessingQueue===sharedQueue&&!didWarnUpdateInsideUpdate){error('An update (setState, replaceState, or forceUpdate) was scheduled '+'from inside an update function. Update functions should be pure, '+'with zero side-effects. Consider using componentDidUpdate or a '+'callback.');didWarnUpdateInsideUpdate=true;}}}function enqueueCapturedUpdate(workInProgress,update){var current=workInProgress.alternate;if(current!==null){// Ensure the work-in-progress queue is a clone
15736cloneUpdateQueue(current,workInProgress);}// Captured updates go only on the work-in-progress queue.
15737var queue=workInProgress.updateQueue;// Append the update to the end of the list.
15738var last=queue.baseQueue;if(last===null){queue.baseQueue=update.next=update;update.next=update;}else{update.next=last.next;last.next=update;}}function getStateFromUpdate(workInProgress,queue,update,prevState,nextProps,instance){switch(update.tag){case ReplaceState:{var payload=update.payload;if(typeof payload==='function'){// Updater function
15739{enterDisallowedContextReadInDEV();if(workInProgress.mode&StrictMode){payload.call(instance,prevState,nextProps);}}var nextState=payload.call(instance,prevState,nextProps);{exitDisallowedContextReadInDEV();}return nextState;}// State object
15740return payload;}case CaptureUpdate:{workInProgress.effectTag=workInProgress.effectTag&~ShouldCapture|DidCapture;}// Intentional fallthrough
15741case UpdateState:{var _payload=update.payload;var partialState;if(typeof _payload==='function'){// Updater function
15742{enterDisallowedContextReadInDEV();if(workInProgress.mode&StrictMode){_payload.call(instance,prevState,nextProps);}}partialState=_payload.call(instance,prevState,nextProps);{exitDisallowedContextReadInDEV();}}else{// Partial state object
15743partialState=_payload;}if(partialState===null||partialState===undefined){// Null and undefined are treated as no-ops.
15744return prevState;}// Merge the partial state and the previous state.
15745return _assign({},prevState,partialState);}case ForceUpdate:{hasForceUpdate=true;return prevState;}}return prevState;}function processUpdateQueue(workInProgress,props,instance,renderExpirationTime){// This is always non-null on a ClassComponent or HostRoot
15746var queue=workInProgress.updateQueue;hasForceUpdate=false;{currentlyProcessingQueue=queue.shared;}// The last rebase update that is NOT part of the base state.
15747var baseQueue=queue.baseQueue;// The last pending update that hasn't been processed yet.
15748var pendingQueue=queue.shared.pending;if(pendingQueue!==null){// We have new updates that haven't been processed yet.
15749// We'll add them to the base queue.
15750if(baseQueue!==null){// Merge the pending queue and the base queue.
15751var baseFirst=baseQueue.next;var pendingFirst=pendingQueue.next;baseQueue.next=pendingFirst;pendingQueue.next=baseFirst;}baseQueue=pendingQueue;queue.shared.pending=null;// TODO: Pass `current` as argument
15752var current=workInProgress.alternate;if(current!==null){var currentQueue=current.updateQueue;if(currentQueue!==null){currentQueue.baseQueue=pendingQueue;}}}// These values may change as we process the queue.
15753if(baseQueue!==null){var first=baseQueue.next;// Iterate through the list of updates to compute the result.
15754var newState=queue.baseState;var newExpirationTime=NoWork;var newBaseState=null;var newBaseQueueFirst=null;var newBaseQueueLast=null;if(first!==null){var update=first;do{var updateExpirationTime=update.expirationTime;if(updateExpirationTime<renderExpirationTime){// Priority is insufficient. Skip this update. If this is the first
15755// skipped update, the previous update/state is the new base
15756// update/state.
15757var clone={expirationTime:update.expirationTime,suspenseConfig:update.suspenseConfig,tag:update.tag,payload:update.payload,callback:update.callback,next:null};if(newBaseQueueLast===null){newBaseQueueFirst=newBaseQueueLast=clone;newBaseState=newState;}else{newBaseQueueLast=newBaseQueueLast.next=clone;}// Update the remaining priority in the queue.
15758if(updateExpirationTime>newExpirationTime){newExpirationTime=updateExpirationTime;}}else{// This update does have sufficient priority.
15759if(newBaseQueueLast!==null){var _clone={expirationTime:Sync,// This update is going to be committed so we never want uncommit it.
15760suspenseConfig:update.suspenseConfig,tag:update.tag,payload:update.payload,callback:update.callback,next:null};newBaseQueueLast=newBaseQueueLast.next=_clone;}// Mark the event time of this update as relevant to this render pass.
15761// TODO: This should ideally use the true event time of this update rather than
15762// its priority which is a derived and not reverseable value.
15763// TODO: We should skip this update if it was already committed but currently
15764// we have no way of detecting the difference between a committed and suspended
15765// update here.
15766markRenderEventTimeAndConfig(updateExpirationTime,update.suspenseConfig);// Process this update.
15767newState=getStateFromUpdate(workInProgress,queue,update,newState,props,instance);var callback=update.callback;if(callback!==null){workInProgress.effectTag|=Callback;var effects=queue.effects;if(effects===null){queue.effects=[update];}else{effects.push(update);}}}update=update.next;if(update===null||update===first){pendingQueue=queue.shared.pending;if(pendingQueue===null){break;}else{// An update was scheduled from inside a reducer. Add the new
15768// pending updates to the end of the list and keep processing.
15769update=baseQueue.next=pendingQueue.next;pendingQueue.next=first;queue.baseQueue=baseQueue=pendingQueue;queue.shared.pending=null;}}}while(true);}if(newBaseQueueLast===null){newBaseState=newState;}else{newBaseQueueLast.next=newBaseQueueFirst;}queue.baseState=newBaseState;queue.baseQueue=newBaseQueueLast;// Set the remaining expiration time to be whatever is remaining in the queue.
15770// This should be fine because the only two other things that contribute to
15771// expiration time are props and context. We're already in the middle of the
15772// begin phase by the time we start processing the queue, so we've already
15773// dealt with the props. Context in components that specify
15774// shouldComponentUpdate is tricky; but we'll have to account for
15775// that regardless.
15776markUnprocessedUpdateTime(newExpirationTime);workInProgress.expirationTime=newExpirationTime;workInProgress.memoizedState=newState;}{currentlyProcessingQueue=null;}}function callCallback(callback,context){if(!(typeof callback==='function')){{throw Error("Invalid argument passed as callback. Expected a function. Instead received: "+callback);}}callback.call(context);}function resetHasForceUpdateBeforeProcessing(){hasForceUpdate=false;}function checkHasForceUpdateAfterProcessing(){return hasForceUpdate;}function commitUpdateQueue(finishedWork,finishedQueue,instance){// Commit the effects
15777var effects=finishedQueue.effects;finishedQueue.effects=null;if(effects!==null){for(var i=0;i<effects.length;i++){var effect=effects[i];var callback=effect.callback;if(callback!==null){effect.callback=null;callCallback(callback,instance);}}}}var ReactCurrentBatchConfig=ReactSharedInternals.ReactCurrentBatchConfig;function requestCurrentSuspenseConfig(){return ReactCurrentBatchConfig.suspense;}var fakeInternalInstance={};var isArray=Array.isArray;// React.Component uses a shared frozen object by default.
15778// We'll use it to determine whether we need to initialize legacy refs.
15779var emptyRefsObject=new React.Component().refs;var didWarnAboutStateAssignmentForComponent;var didWarnAboutUninitializedState;var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;var didWarnAboutLegacyLifecyclesAndDerivedState;var didWarnAboutUndefinedDerivedState;var warnOnUndefinedDerivedState;var warnOnInvalidCallback;var didWarnAboutDirectlyAssigningPropsToState;var didWarnAboutContextTypeAndContextTypes;var didWarnAboutInvalidateContextType;{didWarnAboutStateAssignmentForComponent=new Set();didWarnAboutUninitializedState=new Set();didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate=new Set();didWarnAboutLegacyLifecyclesAndDerivedState=new Set();didWarnAboutDirectlyAssigningPropsToState=new Set();didWarnAboutUndefinedDerivedState=new Set();didWarnAboutContextTypeAndContextTypes=new Set();didWarnAboutInvalidateContextType=new Set();var didWarnOnInvalidCallback=new Set();warnOnInvalidCallback=function(callback,callerName){if(callback===null||typeof callback==='function'){return;}var key=callerName+"_"+callback;if(!didWarnOnInvalidCallback.has(key)){didWarnOnInvalidCallback.add(key);error('%s(...): Expected the last optional `callback` argument to be a '+'function. Instead received: %s.',callerName,callback);}};warnOnUndefinedDerivedState=function(type,partialState){if(partialState===undefined){var componentName=getComponentName(type)||'Component';if(!didWarnAboutUndefinedDerivedState.has(componentName)){didWarnAboutUndefinedDerivedState.add(componentName);error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. '+'You have returned undefined.',componentName);}}};// This is so gross but it's at least non-critical and can be removed if
15780// it causes problems. This is meant to give a nicer error message for
15781// ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,
15782// ...)) which otherwise throws a "_processChildContext is not a function"
15783// exception.
15784Object.defineProperty(fakeInternalInstance,'_processChildContext',{enumerable:false,value:function(){{{throw Error("_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn't supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).");}}}});Object.freeze(fakeInternalInstance);}function applyDerivedStateFromProps(workInProgress,ctor,getDerivedStateFromProps,nextProps){var prevState=workInProgress.memoizedState;{if(workInProgress.mode&StrictMode){// Invoke the function an extra time to help detect side-effects.
15785getDerivedStateFromProps(nextProps,prevState);}}var partialState=getDerivedStateFromProps(nextProps,prevState);{warnOnUndefinedDerivedState(ctor,partialState);}// Merge the partial state and the previous state.
15786var memoizedState=partialState===null||partialState===undefined?prevState:_assign({},prevState,partialState);workInProgress.memoizedState=memoizedState;// Once the update queue is empty, persist the derived state onto the
15787// base state.
15788if(workInProgress.expirationTime===NoWork){// Queue is always non-null for classes
15789var updateQueue=workInProgress.updateQueue;updateQueue.baseState=memoizedState;}}var classComponentUpdater={isMounted:isMounted,enqueueSetState:function(inst,payload,callback){var fiber=get(inst);var currentTime=requestCurrentTimeForUpdate();var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,fiber,suspenseConfig);var update=createUpdate(expirationTime,suspenseConfig);update.payload=payload;if(callback!==undefined&&callback!==null){{warnOnInvalidCallback(callback,'setState');}update.callback=callback;}enqueueUpdate(fiber,update);scheduleWork(fiber,expirationTime);},enqueueReplaceState:function(inst,payload,callback){var fiber=get(inst);var currentTime=requestCurrentTimeForUpdate();var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,fiber,suspenseConfig);var update=createUpdate(expirationTime,suspenseConfig);update.tag=ReplaceState;update.payload=payload;if(callback!==undefined&&callback!==null){{warnOnInvalidCallback(callback,'replaceState');}update.callback=callback;}enqueueUpdate(fiber,update);scheduleWork(fiber,expirationTime);},enqueueForceUpdate:function(inst,callback){var fiber=get(inst);var currentTime=requestCurrentTimeForUpdate();var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,fiber,suspenseConfig);var update=createUpdate(expirationTime,suspenseConfig);update.tag=ForceUpdate;if(callback!==undefined&&callback!==null){{warnOnInvalidCallback(callback,'forceUpdate');}update.callback=callback;}enqueueUpdate(fiber,update);scheduleWork(fiber,expirationTime);}};function checkShouldComponentUpdate(workInProgress,ctor,oldProps,newProps,oldState,newState,nextContext){var instance=workInProgress.stateNode;if(typeof instance.shouldComponentUpdate==='function'){{if(workInProgress.mode&StrictMode){// Invoke the function an extra time to help detect side-effects.
15790instance.shouldComponentUpdate(newProps,newState,nextContext);}}startPhaseTimer(workInProgress,'shouldComponentUpdate');var shouldUpdate=instance.shouldComponentUpdate(newProps,newState,nextContext);stopPhaseTimer();{if(shouldUpdate===undefined){error('%s.shouldComponentUpdate(): Returned undefined instead of a '+'boolean value. Make sure to return true or false.',getComponentName(ctor)||'Component');}}return shouldUpdate;}if(ctor.prototype&&ctor.prototype.isPureReactComponent){return!shallowEqual(oldProps,newProps)||!shallowEqual(oldState,newState);}return true;}function checkClassInstance(workInProgress,ctor,newProps){var instance=workInProgress.stateNode;{var name=getComponentName(ctor)||'Component';var renderPresent=instance.render;if(!renderPresent){if(ctor.prototype&&typeof ctor.prototype.render==='function'){error('%s(...): No `render` method found on the returned component '+'instance: did you accidentally return an object from the constructor?',name);}else{error('%s(...): No `render` method found on the returned component '+'instance: you may have forgotten to define `render`.',name);}}if(instance.getInitialState&&!instance.getInitialState.isReactClassApproved&&!instance.state){error('getInitialState was defined on %s, a plain JavaScript class. '+'This is only supported for classes created using React.createClass. '+'Did you mean to define a state property instead?',name);}if(instance.getDefaultProps&&!instance.getDefaultProps.isReactClassApproved){error('getDefaultProps was defined on %s, a plain JavaScript class. '+'This is only supported for classes created using React.createClass. '+'Use a static property to define defaultProps instead.',name);}if(instance.propTypes){error('propTypes was defined as an instance property on %s. Use a static '+'property to define propTypes instead.',name);}if(instance.contextType){error('contextType was defined as an instance property on %s. Use a static '+'property to define contextType instead.',name);}{if(instance.contextTypes){error('contextTypes was defined as an instance property on %s. Use a static '+'property to define contextTypes instead.',name);}if(ctor.contextType&&ctor.contextTypes&&!didWarnAboutContextTypeAndContextTypes.has(ctor)){didWarnAboutContextTypeAndContextTypes.add(ctor);error('%s declares both contextTypes and contextType static properties. '+'The legacy contextTypes property will be ignored.',name);}}if(typeof instance.componentShouldUpdate==='function'){error('%s has a method called '+'componentShouldUpdate(). Did you mean shouldComponentUpdate()? '+'The name is phrased as a question because the function is '+'expected to return a value.',name);}if(ctor.prototype&&ctor.prototype.isPureReactComponent&&typeof instance.shouldComponentUpdate!=='undefined'){error('%s has a method called shouldComponentUpdate(). '+'shouldComponentUpdate should not be used when extending React.PureComponent. '+'Please extend React.Component if shouldComponentUpdate is used.',getComponentName(ctor)||'A pure component');}if(typeof instance.componentDidUnmount==='function'){error('%s has a method called '+'componentDidUnmount(). But there is no such lifecycle method. '+'Did you mean componentWillUnmount()?',name);}if(typeof instance.componentDidReceiveProps==='function'){error('%s has a method called '+'componentDidReceiveProps(). But there is no such lifecycle method. '+'If you meant to update the state in response to changing props, '+'use componentWillReceiveProps(). If you meant to fetch data or '+'run side-effects or mutations after React has updated the UI, use componentDidUpdate().',name);}if(typeof instance.componentWillRecieveProps==='function'){error('%s has a method called '+'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',name);}if(typeof instance.UNSAFE_componentWillRecieveProps==='function'){error('%s has a method called '+'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?',name);}var hasMutatedProps=instance.props!==newProps;if(instance.props!==undefined&&hasMutatedProps){error('%s(...): When calling super() in `%s`, make sure to pass '+"up the same props that your component's constructor was passed.",name,name);}if(instance.defaultProps){error('Setting defaultProps as an instance property on %s is not supported and will be ignored.'+' Instead, define defaultProps as a static property on %s.',name,name);}if(typeof instance.getSnapshotBeforeUpdate==='function'&&typeof instance.componentDidUpdate!=='function'&&!didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)){didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). '+'This component defines getSnapshotBeforeUpdate() only.',getComponentName(ctor));}if(typeof instance.getDerivedStateFromProps==='function'){error('%s: getDerivedStateFromProps() is defined as an instance method '+'and will be ignored. Instead, declare it as a static method.',name);}if(typeof instance.getDerivedStateFromError==='function'){error('%s: getDerivedStateFromError() is defined as an instance method '+'and will be ignored. Instead, declare it as a static method.',name);}if(typeof ctor.getSnapshotBeforeUpdate==='function'){error('%s: getSnapshotBeforeUpdate() is defined as a static method '+'and will be ignored. Instead, declare it as an instance method.',name);}var _state=instance.state;if(_state&&(typeof _state!=='object'||isArray(_state))){error('%s.state: must be set to an object or null',name);}if(typeof instance.getChildContext==='function'&&typeof ctor.childContextTypes!=='object'){error('%s.getChildContext(): childContextTypes must be defined in order to '+'use getChildContext().',name);}}}function adoptClassInstance(workInProgress,instance){instance.updater=classComponentUpdater;workInProgress.stateNode=instance;// The instance needs access to the fiber so that it can schedule updates
15791set(instance,workInProgress);{instance._reactInternalInstance=fakeInternalInstance;}}function constructClassInstance(workInProgress,ctor,props){var isLegacyContextConsumer=false;var unmaskedContext=emptyContextObject;var context=emptyContextObject;var contextType=ctor.contextType;{if('contextType'in ctor){var isValid=// Allow null for conditional declaration
15792contextType===null||contextType!==undefined&&contextType.$$typeof===REACT_CONTEXT_TYPE&&contextType._context===undefined;// Not a <Context.Consumer>
15793if(!isValid&&!didWarnAboutInvalidateContextType.has(ctor)){didWarnAboutInvalidateContextType.add(ctor);var addendum='';if(contextType===undefined){addendum=' However, it is set to undefined. '+'This can be caused by a typo or by mixing up named and default imports. '+'This can also happen due to a circular dependency, so '+'try moving the createContext() call to a separate file.';}else if(typeof contextType!=='object'){addendum=' However, it is set to a '+typeof contextType+'.';}else if(contextType.$$typeof===REACT_PROVIDER_TYPE){addendum=' Did you accidentally pass the Context.Provider instead?';}else if(contextType._context!==undefined){// <Context.Consumer>
15794addendum=' Did you accidentally pass the Context.Consumer instead?';}else{addendum=' However, it is set to an object with keys {'+Object.keys(contextType).join(', ')+'}.';}error('%s defines an invalid contextType. '+'contextType should point to the Context object returned by React.createContext().%s',getComponentName(ctor)||'Component',addendum);}}}if(typeof contextType==='object'&&contextType!==null){context=readContext(contextType);}else{unmaskedContext=getUnmaskedContext(workInProgress,ctor,true);var contextTypes=ctor.contextTypes;isLegacyContextConsumer=contextTypes!==null&&contextTypes!==undefined;context=isLegacyContextConsumer?getMaskedContext(workInProgress,unmaskedContext):emptyContextObject;}// Instantiate twice to help detect side-effects.
15795{if(workInProgress.mode&StrictMode){new ctor(props,context);// eslint-disable-line no-new
15796}}var instance=new ctor(props,context);var state=workInProgress.memoizedState=instance.state!==null&&instance.state!==undefined?instance.state:null;adoptClassInstance(workInProgress,instance);{if(typeof ctor.getDerivedStateFromProps==='function'&&state===null){var componentName=getComponentName(ctor)||'Component';if(!didWarnAboutUninitializedState.has(componentName)){didWarnAboutUninitializedState.add(componentName);error('`%s` uses `getDerivedStateFromProps` but its initial state is '+'%s. This is not recommended. Instead, define the initial state by '+'assigning an object to `this.state` in the constructor of `%s`. '+'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.',componentName,instance.state===null?'null':'undefined',componentName);}}// If new component APIs are defined, "unsafe" lifecycles won't be called.
15797// Warn about these lifecycles if they are present.
15798// Don't warn about react-lifecycles-compat polyfilled methods though.
15799if(typeof ctor.getDerivedStateFromProps==='function'||typeof instance.getSnapshotBeforeUpdate==='function'){var foundWillMountName=null;var foundWillReceivePropsName=null;var foundWillUpdateName=null;if(typeof instance.componentWillMount==='function'&&instance.componentWillMount.__suppressDeprecationWarning!==true){foundWillMountName='componentWillMount';}else if(typeof instance.UNSAFE_componentWillMount==='function'){foundWillMountName='UNSAFE_componentWillMount';}if(typeof instance.componentWillReceiveProps==='function'&&instance.componentWillReceiveProps.__suppressDeprecationWarning!==true){foundWillReceivePropsName='componentWillReceiveProps';}else if(typeof instance.UNSAFE_componentWillReceiveProps==='function'){foundWillReceivePropsName='UNSAFE_componentWillReceiveProps';}if(typeof instance.componentWillUpdate==='function'&&instance.componentWillUpdate.__suppressDeprecationWarning!==true){foundWillUpdateName='componentWillUpdate';}else if(typeof instance.UNSAFE_componentWillUpdate==='function'){foundWillUpdateName='UNSAFE_componentWillUpdate';}if(foundWillMountName!==null||foundWillReceivePropsName!==null||foundWillUpdateName!==null){var _componentName=getComponentName(ctor)||'Component';var newApiName=typeof ctor.getDerivedStateFromProps==='function'?'getDerivedStateFromProps()':'getSnapshotBeforeUpdate()';if(!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)){didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);error('Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n'+'%s uses %s but also contains the following legacy lifecycles:%s%s%s\n\n'+'The above lifecycles should be removed. Learn more about this warning here:\n'+'https://fb.me/react-unsafe-component-lifecycles',_componentName,newApiName,foundWillMountName!==null?"\n  "+foundWillMountName:'',foundWillReceivePropsName!==null?"\n  "+foundWillReceivePropsName:'',foundWillUpdateName!==null?"\n  "+foundWillUpdateName:'');}}}}// Cache unmasked context so we can avoid recreating masked context unless necessary.
15800// ReactFiberContext usually updates this cache but can't for newly-created instances.
15801if(isLegacyContextConsumer){cacheContext(workInProgress,unmaskedContext,context);}return instance;}function callComponentWillMount(workInProgress,instance){startPhaseTimer(workInProgress,'componentWillMount');var oldState=instance.state;if(typeof instance.componentWillMount==='function'){instance.componentWillMount();}if(typeof instance.UNSAFE_componentWillMount==='function'){instance.UNSAFE_componentWillMount();}stopPhaseTimer();if(oldState!==instance.state){{error('%s.componentWillMount(): Assigning directly to this.state is '+"deprecated (except inside a component's "+'constructor). Use setState instead.',getComponentName(workInProgress.type)||'Component');}classComponentUpdater.enqueueReplaceState(instance,instance.state,null);}}function callComponentWillReceiveProps(workInProgress,instance,newProps,nextContext){var oldState=instance.state;startPhaseTimer(workInProgress,'componentWillReceiveProps');if(typeof instance.componentWillReceiveProps==='function'){instance.componentWillReceiveProps(newProps,nextContext);}if(typeof instance.UNSAFE_componentWillReceiveProps==='function'){instance.UNSAFE_componentWillReceiveProps(newProps,nextContext);}stopPhaseTimer();if(instance.state!==oldState){{var componentName=getComponentName(workInProgress.type)||'Component';if(!didWarnAboutStateAssignmentForComponent.has(componentName)){didWarnAboutStateAssignmentForComponent.add(componentName);error('%s.componentWillReceiveProps(): Assigning directly to '+"this.state is deprecated (except inside a component's "+'constructor). Use setState instead.',componentName);}}classComponentUpdater.enqueueReplaceState(instance,instance.state,null);}}// Invokes the mount life-cycles on a previously never rendered instance.
15802function mountClassInstance(workInProgress,ctor,newProps,renderExpirationTime){{checkClassInstance(workInProgress,ctor,newProps);}var instance=workInProgress.stateNode;instance.props=newProps;instance.state=workInProgress.memoizedState;instance.refs=emptyRefsObject;initializeUpdateQueue(workInProgress);var contextType=ctor.contextType;if(typeof contextType==='object'&&contextType!==null){instance.context=readContext(contextType);}else{var unmaskedContext=getUnmaskedContext(workInProgress,ctor,true);instance.context=getMaskedContext(workInProgress,unmaskedContext);}{if(instance.state===newProps){var componentName=getComponentName(ctor)||'Component';if(!didWarnAboutDirectlyAssigningPropsToState.has(componentName)){didWarnAboutDirectlyAssigningPropsToState.add(componentName);error('%s: It is not recommended to assign props directly to state '+"because updates to props won't be reflected in state. "+'In most cases, it is better to use props directly.',componentName);}}if(workInProgress.mode&StrictMode){ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress,instance);}{ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress,instance);}}processUpdateQueue(workInProgress,newProps,instance,renderExpirationTime);instance.state=workInProgress.memoizedState;var getDerivedStateFromProps=ctor.getDerivedStateFromProps;if(typeof getDerivedStateFromProps==='function'){applyDerivedStateFromProps(workInProgress,ctor,getDerivedStateFromProps,newProps);instance.state=workInProgress.memoizedState;}// In order to support react-lifecycles-compat polyfilled components,
15803// Unsafe lifecycles should not be invoked for components using the new APIs.
15804if(typeof ctor.getDerivedStateFromProps!=='function'&&typeof instance.getSnapshotBeforeUpdate!=='function'&&(typeof instance.UNSAFE_componentWillMount==='function'||typeof instance.componentWillMount==='function')){callComponentWillMount(workInProgress,instance);// If we had additional state updates during this life-cycle, let's
15805// process them now.
15806processUpdateQueue(workInProgress,newProps,instance,renderExpirationTime);instance.state=workInProgress.memoizedState;}if(typeof instance.componentDidMount==='function'){workInProgress.effectTag|=Update;}}function resumeMountClassInstance(workInProgress,ctor,newProps,renderExpirationTime){var instance=workInProgress.stateNode;var oldProps=workInProgress.memoizedProps;instance.props=oldProps;var oldContext=instance.context;var contextType=ctor.contextType;var nextContext=emptyContextObject;if(typeof contextType==='object'&&contextType!==null){nextContext=readContext(contextType);}else{var nextLegacyUnmaskedContext=getUnmaskedContext(workInProgress,ctor,true);nextContext=getMaskedContext(workInProgress,nextLegacyUnmaskedContext);}var getDerivedStateFromProps=ctor.getDerivedStateFromProps;var hasNewLifecycles=typeof getDerivedStateFromProps==='function'||typeof instance.getSnapshotBeforeUpdate==='function';// Note: During these life-cycles, instance.props/instance.state are what
15807// ever the previously attempted to render - not the "current". However,
15808// during componentDidUpdate we pass the "current" props.
15809// In order to support react-lifecycles-compat polyfilled components,
15810// Unsafe lifecycles should not be invoked for components using the new APIs.
15811if(!hasNewLifecycles&&(typeof instance.UNSAFE_componentWillReceiveProps==='function'||typeof instance.componentWillReceiveProps==='function')){if(oldProps!==newProps||oldContext!==nextContext){callComponentWillReceiveProps(workInProgress,instance,newProps,nextContext);}}resetHasForceUpdateBeforeProcessing();var oldState=workInProgress.memoizedState;var newState=instance.state=oldState;processUpdateQueue(workInProgress,newProps,instance,renderExpirationTime);newState=workInProgress.memoizedState;if(oldProps===newProps&&oldState===newState&&!hasContextChanged()&&!checkHasForceUpdateAfterProcessing()){// If an update was already in progress, we should schedule an Update
15812// effect even though we're bailing out, so that cWU/cDU are called.
15813if(typeof instance.componentDidMount==='function'){workInProgress.effectTag|=Update;}return false;}if(typeof getDerivedStateFromProps==='function'){applyDerivedStateFromProps(workInProgress,ctor,getDerivedStateFromProps,newProps);newState=workInProgress.memoizedState;}var shouldUpdate=checkHasForceUpdateAfterProcessing()||checkShouldComponentUpdate(workInProgress,ctor,oldProps,newProps,oldState,newState,nextContext);if(shouldUpdate){// In order to support react-lifecycles-compat polyfilled components,
15814// Unsafe lifecycles should not be invoked for components using the new APIs.
15815if(!hasNewLifecycles&&(typeof instance.UNSAFE_componentWillMount==='function'||typeof instance.componentWillMount==='function')){startPhaseTimer(workInProgress,'componentWillMount');if(typeof instance.componentWillMount==='function'){instance.componentWillMount();}if(typeof instance.UNSAFE_componentWillMount==='function'){instance.UNSAFE_componentWillMount();}stopPhaseTimer();}if(typeof instance.componentDidMount==='function'){workInProgress.effectTag|=Update;}}else{// If an update was already in progress, we should schedule an Update
15816// effect even though we're bailing out, so that cWU/cDU are called.
15817if(typeof instance.componentDidMount==='function'){workInProgress.effectTag|=Update;}// If shouldComponentUpdate returned false, we should still update the
15818// memoized state to indicate that this work can be reused.
15819workInProgress.memoizedProps=newProps;workInProgress.memoizedState=newState;}// Update the existing instance's state, props, and context pointers even
15820// if shouldComponentUpdate returns false.
15821instance.props=newProps;instance.state=newState;instance.context=nextContext;return shouldUpdate;}// Invokes the update life-cycles and returns false if it shouldn't rerender.
15822function updateClassInstance(current,workInProgress,ctor,newProps,renderExpirationTime){var instance=workInProgress.stateNode;cloneUpdateQueue(current,workInProgress);var oldProps=workInProgress.memoizedProps;instance.props=workInProgress.type===workInProgress.elementType?oldProps:resolveDefaultProps(workInProgress.type,oldProps);var oldContext=instance.context;var contextType=ctor.contextType;var nextContext=emptyContextObject;if(typeof contextType==='object'&&contextType!==null){nextContext=readContext(contextType);}else{var nextUnmaskedContext=getUnmaskedContext(workInProgress,ctor,true);nextContext=getMaskedContext(workInProgress,nextUnmaskedContext);}var getDerivedStateFromProps=ctor.getDerivedStateFromProps;var hasNewLifecycles=typeof getDerivedStateFromProps==='function'||typeof instance.getSnapshotBeforeUpdate==='function';// Note: During these life-cycles, instance.props/instance.state are what
15823// ever the previously attempted to render - not the "current". However,
15824// during componentDidUpdate we pass the "current" props.
15825// In order to support react-lifecycles-compat polyfilled components,
15826// Unsafe lifecycles should not be invoked for components using the new APIs.
15827if(!hasNewLifecycles&&(typeof instance.UNSAFE_componentWillReceiveProps==='function'||typeof instance.componentWillReceiveProps==='function')){if(oldProps!==newProps||oldContext!==nextContext){callComponentWillReceiveProps(workInProgress,instance,newProps,nextContext);}}resetHasForceUpdateBeforeProcessing();var oldState=workInProgress.memoizedState;var newState=instance.state=oldState;processUpdateQueue(workInProgress,newProps,instance,renderExpirationTime);newState=workInProgress.memoizedState;if(oldProps===newProps&&oldState===newState&&!hasContextChanged()&&!checkHasForceUpdateAfterProcessing()){// If an update was already in progress, we should schedule an Update
15828// effect even though we're bailing out, so that cWU/cDU are called.
15829if(typeof instance.componentDidUpdate==='function'){if(oldProps!==current.memoizedProps||oldState!==current.memoizedState){workInProgress.effectTag|=Update;}}if(typeof instance.getSnapshotBeforeUpdate==='function'){if(oldProps!==current.memoizedProps||oldState!==current.memoizedState){workInProgress.effectTag|=Snapshot;}}return false;}if(typeof getDerivedStateFromProps==='function'){applyDerivedStateFromProps(workInProgress,ctor,getDerivedStateFromProps,newProps);newState=workInProgress.memoizedState;}var shouldUpdate=checkHasForceUpdateAfterProcessing()||checkShouldComponentUpdate(workInProgress,ctor,oldProps,newProps,oldState,newState,nextContext);if(shouldUpdate){// In order to support react-lifecycles-compat polyfilled components,
15830// Unsafe lifecycles should not be invoked for components using the new APIs.
15831if(!hasNewLifecycles&&(typeof instance.UNSAFE_componentWillUpdate==='function'||typeof instance.componentWillUpdate==='function')){startPhaseTimer(workInProgress,'componentWillUpdate');if(typeof instance.componentWillUpdate==='function'){instance.componentWillUpdate(newProps,newState,nextContext);}if(typeof instance.UNSAFE_componentWillUpdate==='function'){instance.UNSAFE_componentWillUpdate(newProps,newState,nextContext);}stopPhaseTimer();}if(typeof instance.componentDidUpdate==='function'){workInProgress.effectTag|=Update;}if(typeof instance.getSnapshotBeforeUpdate==='function'){workInProgress.effectTag|=Snapshot;}}else{// If an update was already in progress, we should schedule an Update
15832// effect even though we're bailing out, so that cWU/cDU are called.
15833if(typeof instance.componentDidUpdate==='function'){if(oldProps!==current.memoizedProps||oldState!==current.memoizedState){workInProgress.effectTag|=Update;}}if(typeof instance.getSnapshotBeforeUpdate==='function'){if(oldProps!==current.memoizedProps||oldState!==current.memoizedState){workInProgress.effectTag|=Snapshot;}}// If shouldComponentUpdate returned false, we should still update the
15834// memoized props/state to indicate that this work can be reused.
15835workInProgress.memoizedProps=newProps;workInProgress.memoizedState=newState;}// Update the existing instance's state, props, and context pointers even
15836// if shouldComponentUpdate returns false.
15837instance.props=newProps;instance.state=newState;instance.context=nextContext;return shouldUpdate;}var didWarnAboutMaps;var didWarnAboutGenerators;var didWarnAboutStringRefs;var ownerHasKeyUseWarning;var ownerHasFunctionTypeWarning;var warnForMissingKey=function(child){};{didWarnAboutMaps=false;didWarnAboutGenerators=false;didWarnAboutStringRefs={};/**
15838   * Warn if there's no key explicitly set on dynamic arrays of children or
15839   * object keys are not valid. This allows us to keep track of children between
15840   * updates.
15841   */ownerHasKeyUseWarning={};ownerHasFunctionTypeWarning={};warnForMissingKey=function(child){if(child===null||typeof child!=='object'){return;}if(!child._store||child._store.validated||child.key!=null){return;}if(!(typeof child._store==='object')){{throw Error("React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.");}}child._store.validated=true;var currentComponentErrorInfo='Each child in a list should have a unique '+'"key" prop. See https://fb.me/react-warning-keys for '+'more information.'+getCurrentFiberStackInDev();if(ownerHasKeyUseWarning[currentComponentErrorInfo]){return;}ownerHasKeyUseWarning[currentComponentErrorInfo]=true;error('Each child in a list should have a unique '+'"key" prop. See https://fb.me/react-warning-keys for '+'more information.');};}var isArray$1=Array.isArray;function coerceRef(returnFiber,current,element){var mixedRef=element.ref;if(mixedRef!==null&&typeof mixedRef!=='function'&&typeof mixedRef!=='object'){{// TODO: Clean this up once we turn on the string ref warning for
15842// everyone, because the strict mode case will no longer be relevant
15843if((returnFiber.mode&StrictMode||warnAboutStringRefs)&&// We warn in ReactElement.js if owner and self are equal for string refs
15844// because these cannot be automatically converted to an arrow function
15845// using a codemod. Therefore, we don't have to warn about string refs again.
15846!(element._owner&&element._self&&element._owner.stateNode!==element._self)){var componentName=getComponentName(returnFiber.type)||'Component';if(!didWarnAboutStringRefs[componentName]){{error('A string ref, "%s", has been found within a strict mode tree. '+'String refs are a source of potential bugs and should be avoided. '+'We recommend using useRef() or createRef() instead. '+'Learn more about using refs safely here: '+'https://fb.me/react-strict-mode-string-ref%s',mixedRef,getStackByFiberInDevAndProd(returnFiber));}didWarnAboutStringRefs[componentName]=true;}}}if(element._owner){var owner=element._owner;var inst;if(owner){var ownerFiber=owner;if(!(ownerFiber.tag===ClassComponent)){{throw Error("Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://fb.me/react-strict-mode-string-ref");}}inst=ownerFiber.stateNode;}if(!inst){{throw Error("Missing owner for string ref "+mixedRef+". This error is likely caused by a bug in React. Please file an issue.");}}var stringRef=''+mixedRef;// Check if previous string ref matches new string ref
15847if(current!==null&&current.ref!==null&&typeof current.ref==='function'&&current.ref._stringRef===stringRef){return current.ref;}var ref=function(value){var refs=inst.refs;if(refs===emptyRefsObject){// This is a lazy pooled frozen object, so we need to initialize.
15848refs=inst.refs={};}if(value===null){delete refs[stringRef];}else{refs[stringRef]=value;}};ref._stringRef=stringRef;return ref;}else{if(!(typeof mixedRef==='string')){{throw Error("Expected ref to be a function, a string, an object returned by React.createRef(), or null.");}}if(!element._owner){{throw Error("Element ref was specified as a string ("+mixedRef+") but no owner was set. This could happen for one of the following reasons:\n1. You may be adding a ref to a function component\n2. You may be adding a ref to a component that was not created inside a component's render method\n3. You have multiple copies of React loaded\nSee https://fb.me/react-refs-must-have-owner for more information.");}}}}return mixedRef;}function throwOnInvalidObjectType(returnFiber,newChild){if(returnFiber.type!=='textarea'){var addendum='';{addendum=' If you meant to render a collection of children, use an array '+'instead.'+getCurrentFiberStackInDev();}{{throw Error("Objects are not valid as a React child (found: "+(Object.prototype.toString.call(newChild)==='[object Object]'?'object with keys {'+Object.keys(newChild).join(', ')+'}':newChild)+")."+addendum);}}}}function warnOnFunctionType(){{var currentComponentErrorInfo='Functions are not valid as a React child. This may happen if '+'you return a Component instead of <Component /> from render. '+'Or maybe you meant to call this function rather than return it.'+getCurrentFiberStackInDev();if(ownerHasFunctionTypeWarning[currentComponentErrorInfo]){return;}ownerHasFunctionTypeWarning[currentComponentErrorInfo]=true;error('Functions are not valid as a React child. This may happen if '+'you return a Component instead of <Component /> from render. '+'Or maybe you meant to call this function rather than return it.');}}// This wrapper function exists because I expect to clone the code in each path
15849// to be able to optimize each path individually by branching early. This needs
15850// a compiler or we can do it manually. Helpers that don't need this branching
15851// live outside of this function.
15852function ChildReconciler(shouldTrackSideEffects){function deleteChild(returnFiber,childToDelete){if(!shouldTrackSideEffects){// Noop.
15853return;}// Deletions are added in reversed order so we add it to the front.
15854// At this point, the return fiber's effect list is empty except for
15855// deletions, so we can just append the deletion to the list. The remaining
15856// effects aren't added until the complete phase. Once we implement
15857// resuming, this may not be true.
15858var last=returnFiber.lastEffect;if(last!==null){last.nextEffect=childToDelete;returnFiber.lastEffect=childToDelete;}else{returnFiber.firstEffect=returnFiber.lastEffect=childToDelete;}childToDelete.nextEffect=null;childToDelete.effectTag=Deletion;}function deleteRemainingChildren(returnFiber,currentFirstChild){if(!shouldTrackSideEffects){// Noop.
15859return null;}// TODO: For the shouldClone case, this could be micro-optimized a bit by
15860// assuming that after the first child we've already added everything.
15861var childToDelete=currentFirstChild;while(childToDelete!==null){deleteChild(returnFiber,childToDelete);childToDelete=childToDelete.sibling;}return null;}function mapRemainingChildren(returnFiber,currentFirstChild){// Add the remaining children to a temporary map so that we can find them by
15862// keys quickly. Implicit (null) keys get added to this set with their index
15863// instead.
15864var existingChildren=new Map();var existingChild=currentFirstChild;while(existingChild!==null){if(existingChild.key!==null){existingChildren.set(existingChild.key,existingChild);}else{existingChildren.set(existingChild.index,existingChild);}existingChild=existingChild.sibling;}return existingChildren;}function useFiber(fiber,pendingProps){// We currently set sibling to null and index to 0 here because it is easy
15865// to forget to do before returning it. E.g. for the single child case.
15866var clone=createWorkInProgress(fiber,pendingProps);clone.index=0;clone.sibling=null;return clone;}function placeChild(newFiber,lastPlacedIndex,newIndex){newFiber.index=newIndex;if(!shouldTrackSideEffects){// Noop.
15867return lastPlacedIndex;}var current=newFiber.alternate;if(current!==null){var oldIndex=current.index;if(oldIndex<lastPlacedIndex){// This is a move.
15868newFiber.effectTag=Placement;return lastPlacedIndex;}else{// This item can stay in place.
15869return oldIndex;}}else{// This is an insertion.
15870newFiber.effectTag=Placement;return lastPlacedIndex;}}function placeSingleChild(newFiber){// This is simpler for the single child case. We only need to do a
15871// placement for inserting new children.
15872if(shouldTrackSideEffects&&newFiber.alternate===null){newFiber.effectTag=Placement;}return newFiber;}function updateTextNode(returnFiber,current,textContent,expirationTime){if(current===null||current.tag!==HostText){// Insert
15873var created=createFiberFromText(textContent,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}else{// Update
15874var existing=useFiber(current,textContent);existing.return=returnFiber;return existing;}}function updateElement(returnFiber,current,element,expirationTime){if(current!==null){if(current.elementType===element.type||// Keep this check inline so it only runs on the false path:
15875isCompatibleFamilyForHotReloading(current,element)){// Move based on index
15876var existing=useFiber(current,element.props);existing.ref=coerceRef(returnFiber,current,element);existing.return=returnFiber;{existing._debugSource=element._source;existing._debugOwner=element._owner;}return existing;}}// Insert
15877var created=createFiberFromElement(element,returnFiber.mode,expirationTime);created.ref=coerceRef(returnFiber,current,element);created.return=returnFiber;return created;}function updatePortal(returnFiber,current,portal,expirationTime){if(current===null||current.tag!==HostPortal||current.stateNode.containerInfo!==portal.containerInfo||current.stateNode.implementation!==portal.implementation){// Insert
15878var created=createFiberFromPortal(portal,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}else{// Update
15879var existing=useFiber(current,portal.children||[]);existing.return=returnFiber;return existing;}}function updateFragment(returnFiber,current,fragment,expirationTime,key){if(current===null||current.tag!==Fragment){// Insert
15880var created=createFiberFromFragment(fragment,returnFiber.mode,expirationTime,key);created.return=returnFiber;return created;}else{// Update
15881var existing=useFiber(current,fragment);existing.return=returnFiber;return existing;}}function createChild(returnFiber,newChild,expirationTime){if(typeof newChild==='string'||typeof newChild==='number'){// Text nodes don't have keys. If the previous node is implicitly keyed
15882// we can continue to replace it without aborting even if it is not a text
15883// node.
15884var created=createFiberFromText(''+newChild,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}if(typeof newChild==='object'&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE:{var _created=createFiberFromElement(newChild,returnFiber.mode,expirationTime);_created.ref=coerceRef(returnFiber,null,newChild);_created.return=returnFiber;return _created;}case REACT_PORTAL_TYPE:{var _created2=createFiberFromPortal(newChild,returnFiber.mode,expirationTime);_created2.return=returnFiber;return _created2;}}if(isArray$1(newChild)||getIteratorFn(newChild)){var _created3=createFiberFromFragment(newChild,returnFiber.mode,expirationTime,null);_created3.return=returnFiber;return _created3;}throwOnInvalidObjectType(returnFiber,newChild);}{if(typeof newChild==='function'){warnOnFunctionType();}}return null;}function updateSlot(returnFiber,oldFiber,newChild,expirationTime){// Update the fiber if the keys match, otherwise return null.
15885var key=oldFiber!==null?oldFiber.key:null;if(typeof newChild==='string'||typeof newChild==='number'){// Text nodes don't have keys. If the previous node is implicitly keyed
15886// we can continue to replace it without aborting even if it is not a text
15887// node.
15888if(key!==null){return null;}return updateTextNode(returnFiber,oldFiber,''+newChild,expirationTime);}if(typeof newChild==='object'&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE:{if(newChild.key===key){if(newChild.type===REACT_FRAGMENT_TYPE){return updateFragment(returnFiber,oldFiber,newChild.props.children,expirationTime,key);}return updateElement(returnFiber,oldFiber,newChild,expirationTime);}else{return null;}}case REACT_PORTAL_TYPE:{if(newChild.key===key){return updatePortal(returnFiber,oldFiber,newChild,expirationTime);}else{return null;}}}if(isArray$1(newChild)||getIteratorFn(newChild)){if(key!==null){return null;}return updateFragment(returnFiber,oldFiber,newChild,expirationTime,null);}throwOnInvalidObjectType(returnFiber,newChild);}{if(typeof newChild==='function'){warnOnFunctionType();}}return null;}function updateFromMap(existingChildren,returnFiber,newIdx,newChild,expirationTime){if(typeof newChild==='string'||typeof newChild==='number'){// Text nodes don't have keys, so we neither have to check the old nor
15889// new node for the key. If both are text nodes, they match.
15890var matchedFiber=existingChildren.get(newIdx)||null;return updateTextNode(returnFiber,matchedFiber,''+newChild,expirationTime);}if(typeof newChild==='object'&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE:{var _matchedFiber=existingChildren.get(newChild.key===null?newIdx:newChild.key)||null;if(newChild.type===REACT_FRAGMENT_TYPE){return updateFragment(returnFiber,_matchedFiber,newChild.props.children,expirationTime,newChild.key);}return updateElement(returnFiber,_matchedFiber,newChild,expirationTime);}case REACT_PORTAL_TYPE:{var _matchedFiber2=existingChildren.get(newChild.key===null?newIdx:newChild.key)||null;return updatePortal(returnFiber,_matchedFiber2,newChild,expirationTime);}}if(isArray$1(newChild)||getIteratorFn(newChild)){var _matchedFiber3=existingChildren.get(newIdx)||null;return updateFragment(returnFiber,_matchedFiber3,newChild,expirationTime,null);}throwOnInvalidObjectType(returnFiber,newChild);}{if(typeof newChild==='function'){warnOnFunctionType();}}return null;}/**
15891   * Warns if there is a duplicate or missing key
15892   */function warnOnInvalidKey(child,knownKeys){{if(typeof child!=='object'||child===null){return knownKeys;}switch(child.$$typeof){case REACT_ELEMENT_TYPE:case REACT_PORTAL_TYPE:warnForMissingKey(child);var key=child.key;if(typeof key!=='string'){break;}if(knownKeys===null){knownKeys=new Set();knownKeys.add(key);break;}if(!knownKeys.has(key)){knownKeys.add(key);break;}error('Encountered two children with the same key, `%s`. '+'Keys should be unique so that components maintain their identity '+'across updates. Non-unique keys may cause children to be '+'duplicated and/or omitted — the behavior is unsupported and '+'could change in a future version.',key);break;}}return knownKeys;}function reconcileChildrenArray(returnFiber,currentFirstChild,newChildren,expirationTime){// This algorithm can't optimize by searching from both ends since we
15893// don't have backpointers on fibers. I'm trying to see how far we can get
15894// with that model. If it ends up not being worth the tradeoffs, we can
15895// add it later.
15896// Even with a two ended optimization, we'd want to optimize for the case
15897// where there are few changes and brute force the comparison instead of
15898// going for the Map. It'd like to explore hitting that path first in
15899// forward-only mode and only go for the Map once we notice that we need
15900// lots of look ahead. This doesn't handle reversal as well as two ended
15901// search but that's unusual. Besides, for the two ended optimization to
15902// work on Iterables, we'd need to copy the whole set.
15903// In this first iteration, we'll just live with hitting the bad case
15904// (adding everything to a Map) in for every insert/move.
15905// If you change this code, also update reconcileChildrenIterator() which
15906// uses the same algorithm.
15907{// First, validate keys.
15908var knownKeys=null;for(var i=0;i<newChildren.length;i++){var child=newChildren[i];knownKeys=warnOnInvalidKey(child,knownKeys);}}var resultingFirstChild=null;var previousNewFiber=null;var oldFiber=currentFirstChild;var lastPlacedIndex=0;var newIdx=0;var nextOldFiber=null;for(;oldFiber!==null&&newIdx<newChildren.length;newIdx++){if(oldFiber.index>newIdx){nextOldFiber=oldFiber;oldFiber=null;}else{nextOldFiber=oldFiber.sibling;}var newFiber=updateSlot(returnFiber,oldFiber,newChildren[newIdx],expirationTime);if(newFiber===null){// TODO: This breaks on empty slots like null children. That's
15909// unfortunate because it triggers the slow path all the time. We need
15910// a better way to communicate whether this was a miss or null,
15911// boolean, undefined, etc.
15912if(oldFiber===null){oldFiber=nextOldFiber;}break;}if(shouldTrackSideEffects){if(oldFiber&&newFiber.alternate===null){// We matched the slot, but we didn't reuse the existing fiber, so we
15913// need to delete the existing child.
15914deleteChild(returnFiber,oldFiber);}}lastPlacedIndex=placeChild(newFiber,lastPlacedIndex,newIdx);if(previousNewFiber===null){// TODO: Move out of the loop. This only happens for the first run.
15915resultingFirstChild=newFiber;}else{// TODO: Defer siblings if we're not at the right index for this slot.
15916// I.e. if we had null values before, then we want to defer this
15917// for each null value. However, we also don't want to call updateSlot
15918// with the previous one.
15919previousNewFiber.sibling=newFiber;}previousNewFiber=newFiber;oldFiber=nextOldFiber;}if(newIdx===newChildren.length){// We've reached the end of the new children. We can delete the rest.
15920deleteRemainingChildren(returnFiber,oldFiber);return resultingFirstChild;}if(oldFiber===null){// If we don't have any more existing children we can choose a fast path
15921// since the rest will all be insertions.
15922for(;newIdx<newChildren.length;newIdx++){var _newFiber=createChild(returnFiber,newChildren[newIdx],expirationTime);if(_newFiber===null){continue;}lastPlacedIndex=placeChild(_newFiber,lastPlacedIndex,newIdx);if(previousNewFiber===null){// TODO: Move out of the loop. This only happens for the first run.
15923resultingFirstChild=_newFiber;}else{previousNewFiber.sibling=_newFiber;}previousNewFiber=_newFiber;}return resultingFirstChild;}// Add all children to a key map for quick lookups.
15924var existingChildren=mapRemainingChildren(returnFiber,oldFiber);// Keep scanning and use the map to restore deleted items as moves.
15925for(;newIdx<newChildren.length;newIdx++){var _newFiber2=updateFromMap(existingChildren,returnFiber,newIdx,newChildren[newIdx],expirationTime);if(_newFiber2!==null){if(shouldTrackSideEffects){if(_newFiber2.alternate!==null){// The new fiber is a work in progress, but if there exists a
15926// current, that means that we reused the fiber. We need to delete
15927// it from the child list so that we don't add it to the deletion
15928// list.
15929existingChildren.delete(_newFiber2.key===null?newIdx:_newFiber2.key);}}lastPlacedIndex=placeChild(_newFiber2,lastPlacedIndex,newIdx);if(previousNewFiber===null){resultingFirstChild=_newFiber2;}else{previousNewFiber.sibling=_newFiber2;}previousNewFiber=_newFiber2;}}if(shouldTrackSideEffects){// Any existing children that weren't consumed above were deleted. We need
15930// to add them to the deletion list.
15931existingChildren.forEach(function(child){return deleteChild(returnFiber,child);});}return resultingFirstChild;}function reconcileChildrenIterator(returnFiber,currentFirstChild,newChildrenIterable,expirationTime){// This is the same implementation as reconcileChildrenArray(),
15932// but using the iterator instead.
15933var iteratorFn=getIteratorFn(newChildrenIterable);if(!(typeof iteratorFn==='function')){{throw Error("An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.");}}{// We don't support rendering Generators because it's a mutation.
15934// See https://github.com/facebook/react/issues/12995
15935if(typeof Symbol==='function'&&// $FlowFixMe Flow doesn't know about toStringTag
15936newChildrenIterable[Symbol.toStringTag]==='Generator'){if(!didWarnAboutGenerators){error('Using Generators as children is unsupported and will likely yield '+'unexpected results because enumerating a generator mutates it. '+'You may convert it to an array with `Array.from()` or the '+'`[...spread]` operator before rendering. Keep in mind '+'you might need to polyfill these features for older browsers.');}didWarnAboutGenerators=true;}// Warn about using Maps as children
15937if(newChildrenIterable.entries===iteratorFn){if(!didWarnAboutMaps){error('Using Maps as children is unsupported and will likely yield '+'unexpected results. Convert it to a sequence/iterable of keyed '+'ReactElements instead.');}didWarnAboutMaps=true;}// First, validate keys.
15938// We'll get a different iterator later for the main pass.
15939var _newChildren=iteratorFn.call(newChildrenIterable);if(_newChildren){var knownKeys=null;var _step=_newChildren.next();for(;!_step.done;_step=_newChildren.next()){var child=_step.value;knownKeys=warnOnInvalidKey(child,knownKeys);}}}var newChildren=iteratorFn.call(newChildrenIterable);if(!(newChildren!=null)){{throw Error("An iterable object provided no iterator.");}}var resultingFirstChild=null;var previousNewFiber=null;var oldFiber=currentFirstChild;var lastPlacedIndex=0;var newIdx=0;var nextOldFiber=null;var step=newChildren.next();for(;oldFiber!==null&&!step.done;newIdx++,step=newChildren.next()){if(oldFiber.index>newIdx){nextOldFiber=oldFiber;oldFiber=null;}else{nextOldFiber=oldFiber.sibling;}var newFiber=updateSlot(returnFiber,oldFiber,step.value,expirationTime);if(newFiber===null){// TODO: This breaks on empty slots like null children. That's
15940// unfortunate because it triggers the slow path all the time. We need
15941// a better way to communicate whether this was a miss or null,
15942// boolean, undefined, etc.
15943if(oldFiber===null){oldFiber=nextOldFiber;}break;}if(shouldTrackSideEffects){if(oldFiber&&newFiber.alternate===null){// We matched the slot, but we didn't reuse the existing fiber, so we
15944// need to delete the existing child.
15945deleteChild(returnFiber,oldFiber);}}lastPlacedIndex=placeChild(newFiber,lastPlacedIndex,newIdx);if(previousNewFiber===null){// TODO: Move out of the loop. This only happens for the first run.
15946resultingFirstChild=newFiber;}else{// TODO: Defer siblings if we're not at the right index for this slot.
15947// I.e. if we had null values before, then we want to defer this
15948// for each null value. However, we also don't want to call updateSlot
15949// with the previous one.
15950previousNewFiber.sibling=newFiber;}previousNewFiber=newFiber;oldFiber=nextOldFiber;}if(step.done){// We've reached the end of the new children. We can delete the rest.
15951deleteRemainingChildren(returnFiber,oldFiber);return resultingFirstChild;}if(oldFiber===null){// If we don't have any more existing children we can choose a fast path
15952// since the rest will all be insertions.
15953for(;!step.done;newIdx++,step=newChildren.next()){var _newFiber3=createChild(returnFiber,step.value,expirationTime);if(_newFiber3===null){continue;}lastPlacedIndex=placeChild(_newFiber3,lastPlacedIndex,newIdx);if(previousNewFiber===null){// TODO: Move out of the loop. This only happens for the first run.
15954resultingFirstChild=_newFiber3;}else{previousNewFiber.sibling=_newFiber3;}previousNewFiber=_newFiber3;}return resultingFirstChild;}// Add all children to a key map for quick lookups.
15955var existingChildren=mapRemainingChildren(returnFiber,oldFiber);// Keep scanning and use the map to restore deleted items as moves.
15956for(;!step.done;newIdx++,step=newChildren.next()){var _newFiber4=updateFromMap(existingChildren,returnFiber,newIdx,step.value,expirationTime);if(_newFiber4!==null){if(shouldTrackSideEffects){if(_newFiber4.alternate!==null){// The new fiber is a work in progress, but if there exists a
15957// current, that means that we reused the fiber. We need to delete
15958// it from the child list so that we don't add it to the deletion
15959// list.
15960existingChildren.delete(_newFiber4.key===null?newIdx:_newFiber4.key);}}lastPlacedIndex=placeChild(_newFiber4,lastPlacedIndex,newIdx);if(previousNewFiber===null){resultingFirstChild=_newFiber4;}else{previousNewFiber.sibling=_newFiber4;}previousNewFiber=_newFiber4;}}if(shouldTrackSideEffects){// Any existing children that weren't consumed above were deleted. We need
15961// to add them to the deletion list.
15962existingChildren.forEach(function(child){return deleteChild(returnFiber,child);});}return resultingFirstChild;}function reconcileSingleTextNode(returnFiber,currentFirstChild,textContent,expirationTime){// There's no need to check for keys on text nodes since we don't have a
15963// way to define them.
15964if(currentFirstChild!==null&&currentFirstChild.tag===HostText){// We already have an existing node so let's just update it and delete
15965// the rest.
15966deleteRemainingChildren(returnFiber,currentFirstChild.sibling);var existing=useFiber(currentFirstChild,textContent);existing.return=returnFiber;return existing;}// The existing first child is not a text node so we need to create one
15967// and delete the existing ones.
15968deleteRemainingChildren(returnFiber,currentFirstChild);var created=createFiberFromText(textContent,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}function reconcileSingleElement(returnFiber,currentFirstChild,element,expirationTime){var key=element.key;var child=currentFirstChild;while(child!==null){// TODO: If key === null and child.key === null, then this only applies to
15969// the first item in the list.
15970if(child.key===key){switch(child.tag){case Fragment:{if(element.type===REACT_FRAGMENT_TYPE){deleteRemainingChildren(returnFiber,child.sibling);var existing=useFiber(child,element.props.children);existing.return=returnFiber;{existing._debugSource=element._source;existing._debugOwner=element._owner;}return existing;}break;}case Block:// We intentionally fallthrough here if enableBlocksAPI is not on.
15971// eslint-disable-next-lined no-fallthrough
15972default:{if(child.elementType===element.type||// Keep this check inline so it only runs on the false path:
15973isCompatibleFamilyForHotReloading(child,element)){deleteRemainingChildren(returnFiber,child.sibling);var _existing3=useFiber(child,element.props);_existing3.ref=coerceRef(returnFiber,child,element);_existing3.return=returnFiber;{_existing3._debugSource=element._source;_existing3._debugOwner=element._owner;}return _existing3;}break;}}// Didn't match.
15974deleteRemainingChildren(returnFiber,child);break;}else{deleteChild(returnFiber,child);}child=child.sibling;}if(element.type===REACT_FRAGMENT_TYPE){var created=createFiberFromFragment(element.props.children,returnFiber.mode,expirationTime,element.key);created.return=returnFiber;return created;}else{var _created4=createFiberFromElement(element,returnFiber.mode,expirationTime);_created4.ref=coerceRef(returnFiber,currentFirstChild,element);_created4.return=returnFiber;return _created4;}}function reconcileSinglePortal(returnFiber,currentFirstChild,portal,expirationTime){var key=portal.key;var child=currentFirstChild;while(child!==null){// TODO: If key === null and child.key === null, then this only applies to
15975// the first item in the list.
15976if(child.key===key){if(child.tag===HostPortal&&child.stateNode.containerInfo===portal.containerInfo&&child.stateNode.implementation===portal.implementation){deleteRemainingChildren(returnFiber,child.sibling);var existing=useFiber(child,portal.children||[]);existing.return=returnFiber;return existing;}else{deleteRemainingChildren(returnFiber,child);break;}}else{deleteChild(returnFiber,child);}child=child.sibling;}var created=createFiberFromPortal(portal,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}// This API will tag the children with the side-effect of the reconciliation
15977// itself. They will be added to the side-effect list as we pass through the
15978// children and the parent.
15979function reconcileChildFibers(returnFiber,currentFirstChild,newChild,expirationTime){// This function is not recursive.
15980// If the top level item is an array, we treat it as a set of children,
15981// not as a fragment. Nested arrays on the other hand will be treated as
15982// fragment nodes. Recursion happens at the normal flow.
15983// Handle top level unkeyed fragments as if they were arrays.
15984// This leads to an ambiguity between <>{[...]}</> and <>...</>.
15985// We treat the ambiguous cases above the same.
15986var isUnkeyedTopLevelFragment=typeof newChild==='object'&&newChild!==null&&newChild.type===REACT_FRAGMENT_TYPE&&newChild.key===null;if(isUnkeyedTopLevelFragment){newChild=newChild.props.children;}// Handle object types
15987var isObject=typeof newChild==='object'&&newChild!==null;if(isObject){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE:return placeSingleChild(reconcileSingleElement(returnFiber,currentFirstChild,newChild,expirationTime));case REACT_PORTAL_TYPE:return placeSingleChild(reconcileSinglePortal(returnFiber,currentFirstChild,newChild,expirationTime));}}if(typeof newChild==='string'||typeof newChild==='number'){return placeSingleChild(reconcileSingleTextNode(returnFiber,currentFirstChild,''+newChild,expirationTime));}if(isArray$1(newChild)){return reconcileChildrenArray(returnFiber,currentFirstChild,newChild,expirationTime);}if(getIteratorFn(newChild)){return reconcileChildrenIterator(returnFiber,currentFirstChild,newChild,expirationTime);}if(isObject){throwOnInvalidObjectType(returnFiber,newChild);}{if(typeof newChild==='function'){warnOnFunctionType();}}if(typeof newChild==='undefined'&&!isUnkeyedTopLevelFragment){// If the new child is undefined, and the return fiber is a composite
15988// component, throw an error. If Fiber return types are disabled,
15989// we already threw above.
15990switch(returnFiber.tag){case ClassComponent:{{var instance=returnFiber.stateNode;if(instance.render._isMockFunction){// We allow auto-mocks to proceed as if they're returning null.
15991break;}}}// Intentionally fall through to the next case, which handles both
15992// functions and classes
15993// eslint-disable-next-lined no-fallthrough
15994case FunctionComponent:{var Component=returnFiber.type;{{throw Error((Component.displayName||Component.name||'Component')+"(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.");}}}}}// Remaining cases are all treated as empty.
15995return deleteRemainingChildren(returnFiber,currentFirstChild);}return reconcileChildFibers;}var reconcileChildFibers=ChildReconciler(true);var mountChildFibers=ChildReconciler(false);function cloneChildFibers(current,workInProgress){if(!(current===null||workInProgress.child===current.child)){{throw Error("Resuming work not yet implemented.");}}if(workInProgress.child===null){return;}var currentChild=workInProgress.child;var newChild=createWorkInProgress(currentChild,currentChild.pendingProps);workInProgress.child=newChild;newChild.return=workInProgress;while(currentChild.sibling!==null){currentChild=currentChild.sibling;newChild=newChild.sibling=createWorkInProgress(currentChild,currentChild.pendingProps);newChild.return=workInProgress;}newChild.sibling=null;}// Reset a workInProgress child set to prepare it for a second pass.
15996function resetChildFibers(workInProgress,renderExpirationTime){var child=workInProgress.child;while(child!==null){resetWorkInProgress(child,renderExpirationTime);child=child.sibling;}}var NO_CONTEXT={};var contextStackCursor$1=createCursor(NO_CONTEXT);var contextFiberStackCursor=createCursor(NO_CONTEXT);var rootInstanceStackCursor=createCursor(NO_CONTEXT);function requiredContext(c){if(!(c!==NO_CONTEXT)){{throw Error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.");}}return c;}function getRootHostContainer(){var rootInstance=requiredContext(rootInstanceStackCursor.current);return rootInstance;}function pushHostContainer(fiber,nextRootInstance){// Push current root instance onto the stack;
15997// This allows us to reset root when portals are popped.
15998push(rootInstanceStackCursor,nextRootInstance,fiber);// Track the context and the Fiber that provided it.
15999// This enables us to pop only Fibers that provide unique contexts.
16000push(contextFiberStackCursor,fiber,fiber);// Finally, we need to push the host context to the stack.
16001// However, we can't just call getRootHostContext() and push it because
16002// we'd have a different number of entries on the stack depending on
16003// whether getRootHostContext() throws somewhere in renderer code or not.
16004// So we push an empty value first. This lets us safely unwind on errors.
16005push(contextStackCursor$1,NO_CONTEXT,fiber);var nextRootContext=getRootHostContext(nextRootInstance);// Now that we know this function doesn't throw, replace it.
16006pop(contextStackCursor$1,fiber);push(contextStackCursor$1,nextRootContext,fiber);}function popHostContainer(fiber){pop(contextStackCursor$1,fiber);pop(contextFiberStackCursor,fiber);pop(rootInstanceStackCursor,fiber);}function getHostContext(){var context=requiredContext(contextStackCursor$1.current);return context;}function pushHostContext(fiber){var rootInstance=requiredContext(rootInstanceStackCursor.current);var context=requiredContext(contextStackCursor$1.current);var nextContext=getChildHostContext(context,fiber.type);// Don't push this Fiber's context unless it's unique.
16007if(context===nextContext){return;}// Track the context and the Fiber that provided it.
16008// This enables us to pop only Fibers that provide unique contexts.
16009push(contextFiberStackCursor,fiber,fiber);push(contextStackCursor$1,nextContext,fiber);}function popHostContext(fiber){// Do not pop unless this Fiber provided the current context.
16010// pushHostContext() only pushes Fibers that provide unique contexts.
16011if(contextFiberStackCursor.current!==fiber){return;}pop(contextStackCursor$1,fiber);pop(contextFiberStackCursor,fiber);}var DefaultSuspenseContext=0;// The Suspense Context is split into two parts. The lower bits is
16012// inherited deeply down the subtree. The upper bits only affect
16013// this immediate suspense boundary and gets reset each new
16014// boundary or suspense list.
16015var SubtreeSuspenseContextMask=1;// Subtree Flags:
16016// InvisibleParentSuspenseContext indicates that one of our parent Suspense
16017// boundaries is not currently showing visible main content.
16018// Either because it is already showing a fallback or is not mounted at all.
16019// We can use this to determine if it is desirable to trigger a fallback at
16020// the parent. If not, then we might need to trigger undesirable boundaries
16021// and/or suspend the commit to avoid hiding the parent content.
16022var InvisibleParentSuspenseContext=1;// Shallow Flags:
16023// ForceSuspenseFallback can be used by SuspenseList to force newly added
16024// items into their fallback state during one of the render passes.
16025var ForceSuspenseFallback=2;var suspenseStackCursor=createCursor(DefaultSuspenseContext);function hasSuspenseContext(parentContext,flag){return(parentContext&flag)!==0;}function setDefaultShallowSuspenseContext(parentContext){return parentContext&SubtreeSuspenseContextMask;}function setShallowSuspenseContext(parentContext,shallowContext){return parentContext&SubtreeSuspenseContextMask|shallowContext;}function addSubtreeSuspenseContext(parentContext,subtreeContext){return parentContext|subtreeContext;}function pushSuspenseContext(fiber,newContext){push(suspenseStackCursor,newContext,fiber);}function popSuspenseContext(fiber){pop(suspenseStackCursor,fiber);}function shouldCaptureSuspense(workInProgress,hasInvisibleParent){// If it was the primary children that just suspended, capture and render the
16026// fallback. Otherwise, don't capture and bubble to the next boundary.
16027var nextState=workInProgress.memoizedState;if(nextState!==null){if(nextState.dehydrated!==null){// A dehydrated boundary always captures.
16028return true;}return false;}var props=workInProgress.memoizedProps;// In order to capture, the Suspense component must have a fallback prop.
16029if(props.fallback===undefined){return false;}// Regular boundaries always capture.
16030if(props.unstable_avoidThisFallback!==true){return true;}// If it's a boundary we should avoid, then we prefer to bubble up to the
16031// parent boundary if it is currently invisible.
16032if(hasInvisibleParent){return false;}// If the parent is not able to handle it, we must handle it.
16033return true;}function findFirstSuspended(row){var node=row;while(node!==null){if(node.tag===SuspenseComponent){var state=node.memoizedState;if(state!==null){var dehydrated=state.dehydrated;if(dehydrated===null||isSuspenseInstancePending(dehydrated)||isSuspenseInstanceFallback(dehydrated)){return node;}}}else if(node.tag===SuspenseListComponent&&// revealOrder undefined can't be trusted because it don't
16034// keep track of whether it suspended or not.
16035node.memoizedProps.revealOrder!==undefined){var didSuspend=(node.effectTag&DidCapture)!==NoEffect;if(didSuspend){return node;}}else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===row){return null;}while(node.sibling===null){if(node.return===null||node.return===row){return null;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}return null;}function createDeprecatedResponderListener(responder,props){var eventResponderListener={responder:responder,props:props};{Object.freeze(eventResponderListener);}return eventResponderListener;}var HasEffect=/* */1;// Represents the phase in which the effect (not the clean-up) fires.
16036var Layout=/*    */2;var Passive$1=/*   */4;var ReactCurrentDispatcher=ReactSharedInternals.ReactCurrentDispatcher,ReactCurrentBatchConfig$1=ReactSharedInternals.ReactCurrentBatchConfig;var didWarnAboutMismatchedHooksForComponent;{didWarnAboutMismatchedHooksForComponent=new Set();}// These are set right before calling the component.
16037var renderExpirationTime=NoWork;// The work-in-progress fiber. I've named it differently to distinguish it from
16038// the work-in-progress hook.
16039var currentlyRenderingFiber$1=null;// Hooks are stored as a linked list on the fiber's memoizedState field. The
16040// current hook list is the list that belongs to the current fiber. The
16041// work-in-progress hook list is a new list that will be added to the
16042// work-in-progress fiber.
16043var currentHook=null;var workInProgressHook=null;// Whether an update was scheduled at any point during the render phase. This
16044// does not get reset if we do another render pass; only when we're completely
16045// finished evaluating this component. This is an optimization so we know
16046// whether we need to clear render phase updates after a throw.
16047var didScheduleRenderPhaseUpdate=false;var RE_RENDER_LIMIT=25;// In DEV, this is the name of the currently executing primitive hook
16048var currentHookNameInDev=null;// In DEV, this list ensures that hooks are called in the same order between renders.
16049// The list stores the order of hooks used during the initial render (mount).
16050// Subsequent renders (updates) reference this list.
16051var hookTypesDev=null;var hookTypesUpdateIndexDev=-1;// In DEV, this tracks whether currently rendering component needs to ignore
16052// the dependencies for Hooks that need them (e.g. useEffect or useMemo).
16053// When true, such Hooks will always be "remounted". Only used during hot reload.
16054var ignorePreviousDependencies=false;function mountHookTypesDev(){{var hookName=currentHookNameInDev;if(hookTypesDev===null){hookTypesDev=[hookName];}else{hookTypesDev.push(hookName);}}}function updateHookTypesDev(){{var hookName=currentHookNameInDev;if(hookTypesDev!==null){hookTypesUpdateIndexDev++;if(hookTypesDev[hookTypesUpdateIndexDev]!==hookName){warnOnHookMismatchInDev(hookName);}}}}function checkDepsAreArrayDev(deps){{if(deps!==undefined&&deps!==null&&!Array.isArray(deps)){// Verify deps, but only on mount to avoid extra checks.
16055// It's unlikely their type would change as usually you define them inline.
16056error('%s received a final argument that is not an array (instead, received `%s`). When '+'specified, the final argument must be an array.',currentHookNameInDev,typeof deps);}}}function warnOnHookMismatchInDev(currentHookName){{var componentName=getComponentName(currentlyRenderingFiber$1.type);if(!didWarnAboutMismatchedHooksForComponent.has(componentName)){didWarnAboutMismatchedHooksForComponent.add(componentName);if(hookTypesDev!==null){var table='';var secondColumnStart=30;for(var i=0;i<=hookTypesUpdateIndexDev;i++){var oldHookName=hookTypesDev[i];var newHookName=i===hookTypesUpdateIndexDev?currentHookName:oldHookName;var row=i+1+". "+oldHookName;// Extra space so second column lines up
16057// lol @ IE not supporting String#repeat
16058while(row.length<secondColumnStart){row+=' ';}row+=newHookName+'\n';table+=row;}error('React has detected a change in the order of Hooks called by %s. '+'This will lead to bugs and errors if not fixed. '+'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n'+'   Previous render            Next render\n'+'   ------------------------------------------------------\n'+'%s'+'   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n',componentName,table);}}}}function throwInvalidHookError(){{{throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.");}}}function areHookInputsEqual(nextDeps,prevDeps){{if(ignorePreviousDependencies){// Only true when this component is being hot reloaded.
16059return false;}}if(prevDeps===null){{error('%s received a final argument during this render, but not during '+'the previous render. Even though the final argument is optional, '+'its type cannot change between renders.',currentHookNameInDev);}return false;}{// Don't bother comparing lengths in prod because these arrays should be
16060// passed inline.
16061if(nextDeps.length!==prevDeps.length){error('The final argument passed to %s changed size between renders. The '+'order and size of this array must remain constant.\n\n'+'Previous: %s\n'+'Incoming: %s',currentHookNameInDev,"["+prevDeps.join(', ')+"]","["+nextDeps.join(', ')+"]");}}for(var i=0;i<prevDeps.length&&i<nextDeps.length;i++){if(objectIs(nextDeps[i],prevDeps[i])){continue;}return false;}return true;}function renderWithHooks(current,workInProgress,Component,props,secondArg,nextRenderExpirationTime){renderExpirationTime=nextRenderExpirationTime;currentlyRenderingFiber$1=workInProgress;{hookTypesDev=current!==null?current._debugHookTypes:null;hookTypesUpdateIndexDev=-1;// Used for hot reloading:
16062ignorePreviousDependencies=current!==null&&current.type!==workInProgress.type;}workInProgress.memoizedState=null;workInProgress.updateQueue=null;workInProgress.expirationTime=NoWork;// The following should have already been reset
16063// currentHook = null;
16064// workInProgressHook = null;
16065// didScheduleRenderPhaseUpdate = false;
16066// TODO Warn if no hooks are used at all during mount, then some are used during update.
16067// Currently we will identify the update render as a mount because memoizedState === null.
16068// This is tricky because it's valid for certain types of components (e.g. React.lazy)
16069// Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used.
16070// Non-stateful hooks (e.g. context) don't get added to memoizedState,
16071// so memoizedState would be null during updates and mounts.
16072{if(current!==null&&current.memoizedState!==null){ReactCurrentDispatcher.current=HooksDispatcherOnUpdateInDEV;}else if(hookTypesDev!==null){// This dispatcher handles an edge case where a component is updating,
16073// but no stateful hooks have been used.
16074// We want to match the production code behavior (which will use HooksDispatcherOnMount),
16075// but with the extra DEV validation to ensure hooks ordering hasn't changed.
16076// This dispatcher does that.
16077ReactCurrentDispatcher.current=HooksDispatcherOnMountWithHookTypesInDEV;}else{ReactCurrentDispatcher.current=HooksDispatcherOnMountInDEV;}}var children=Component(props,secondArg);// Check if there was a render phase update
16078if(workInProgress.expirationTime===renderExpirationTime){// Keep rendering in a loop for as long as render phase updates continue to
16079// be scheduled. Use a counter to prevent infinite loops.
16080var numberOfReRenders=0;do{workInProgress.expirationTime=NoWork;if(!(numberOfReRenders<RE_RENDER_LIMIT)){{throw Error("Too many re-renders. React limits the number of renders to prevent an infinite loop.");}}numberOfReRenders+=1;{// Even when hot reloading, allow dependencies to stabilize
16081// after first render to prevent infinite render phase updates.
16082ignorePreviousDependencies=false;}// Start over from the beginning of the list
16083currentHook=null;workInProgressHook=null;workInProgress.updateQueue=null;{// Also validate hook order for cascading updates.
16084hookTypesUpdateIndexDev=-1;}ReactCurrentDispatcher.current=HooksDispatcherOnRerenderInDEV;children=Component(props,secondArg);}while(workInProgress.expirationTime===renderExpirationTime);}// We can assume the previous dispatcher is always this one, since we set it
16085// at the beginning of the render phase and there's no re-entrancy.
16086ReactCurrentDispatcher.current=ContextOnlyDispatcher;{workInProgress._debugHookTypes=hookTypesDev;}// This check uses currentHook so that it works the same in DEV and prod bundles.
16087// hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.
16088var didRenderTooFewHooks=currentHook!==null&&currentHook.next!==null;renderExpirationTime=NoWork;currentlyRenderingFiber$1=null;currentHook=null;workInProgressHook=null;{currentHookNameInDev=null;hookTypesDev=null;hookTypesUpdateIndexDev=-1;}didScheduleRenderPhaseUpdate=false;if(!!didRenderTooFewHooks){{throw Error("Rendered fewer hooks than expected. This may be caused by an accidental early return statement.");}}return children;}function bailoutHooks(current,workInProgress,expirationTime){workInProgress.updateQueue=current.updateQueue;workInProgress.effectTag&=~(Passive|Update);if(current.expirationTime<=expirationTime){current.expirationTime=NoWork;}}function resetHooksAfterThrow(){// We can assume the previous dispatcher is always this one, since we set it
16089// at the beginning of the render phase and there's no re-entrancy.
16090ReactCurrentDispatcher.current=ContextOnlyDispatcher;if(didScheduleRenderPhaseUpdate){// There were render phase updates. These are only valid for this render
16091// phase, which we are now aborting. Remove the updates from the queues so
16092// they do not persist to the next render. Do not remove updates from hooks
16093// that weren't processed.
16094//
16095// Only reset the updates from the queue if it has a clone. If it does
16096// not have a clone, that means it wasn't processed, and the updates were
16097// scheduled before we entered the render phase.
16098var hook=currentlyRenderingFiber$1.memoizedState;while(hook!==null){var queue=hook.queue;if(queue!==null){queue.pending=null;}hook=hook.next;}}renderExpirationTime=NoWork;currentlyRenderingFiber$1=null;currentHook=null;workInProgressHook=null;{hookTypesDev=null;hookTypesUpdateIndexDev=-1;currentHookNameInDev=null;}didScheduleRenderPhaseUpdate=false;}function mountWorkInProgressHook(){var hook={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};if(workInProgressHook===null){// This is the first hook in the list
16099currentlyRenderingFiber$1.memoizedState=workInProgressHook=hook;}else{// Append to the end of the list
16100workInProgressHook=workInProgressHook.next=hook;}return workInProgressHook;}function updateWorkInProgressHook(){// This function is used both for updates and for re-renders triggered by a
16101// render phase update. It assumes there is either a current hook we can
16102// clone, or a work-in-progress hook from a previous render pass that we can
16103// use as a base. When we reach the end of the base list, we must switch to
16104// the dispatcher used for mounts.
16105var nextCurrentHook;if(currentHook===null){var current=currentlyRenderingFiber$1.alternate;if(current!==null){nextCurrentHook=current.memoizedState;}else{nextCurrentHook=null;}}else{nextCurrentHook=currentHook.next;}var nextWorkInProgressHook;if(workInProgressHook===null){nextWorkInProgressHook=currentlyRenderingFiber$1.memoizedState;}else{nextWorkInProgressHook=workInProgressHook.next;}if(nextWorkInProgressHook!==null){// There's already a work-in-progress. Reuse it.
16106workInProgressHook=nextWorkInProgressHook;nextWorkInProgressHook=workInProgressHook.next;currentHook=nextCurrentHook;}else{// Clone from the current hook.
16107if(!(nextCurrentHook!==null)){{throw Error("Rendered more hooks than during the previous render.");}}currentHook=nextCurrentHook;var newHook={memoizedState:currentHook.memoizedState,baseState:currentHook.baseState,baseQueue:currentHook.baseQueue,queue:currentHook.queue,next:null};if(workInProgressHook===null){// This is the first hook in the list.
16108currentlyRenderingFiber$1.memoizedState=workInProgressHook=newHook;}else{// Append to the end of the list.
16109workInProgressHook=workInProgressHook.next=newHook;}}return workInProgressHook;}function createFunctionComponentUpdateQueue(){return{lastEffect:null};}function basicStateReducer(state,action){// $FlowFixMe: Flow doesn't like mixed types
16110return typeof action==='function'?action(state):action;}function mountReducer(reducer,initialArg,init){var hook=mountWorkInProgressHook();var initialState;if(init!==undefined){initialState=init(initialArg);}else{initialState=initialArg;}hook.memoizedState=hook.baseState=initialState;var queue=hook.queue={pending:null,dispatch:null,lastRenderedReducer:reducer,lastRenderedState:initialState};var dispatch=queue.dispatch=dispatchAction.bind(null,currentlyRenderingFiber$1,queue);return[hook.memoizedState,dispatch];}function updateReducer(reducer,initialArg,init){var hook=updateWorkInProgressHook();var queue=hook.queue;if(!(queue!==null)){{throw Error("Should have a queue. This is likely a bug in React. Please file an issue.");}}queue.lastRenderedReducer=reducer;var current=currentHook;// The last rebase update that is NOT part of the base state.
16111var baseQueue=current.baseQueue;// The last pending update that hasn't been processed yet.
16112var pendingQueue=queue.pending;if(pendingQueue!==null){// We have new updates that haven't been processed yet.
16113// We'll add them to the base queue.
16114if(baseQueue!==null){// Merge the pending queue and the base queue.
16115var baseFirst=baseQueue.next;var pendingFirst=pendingQueue.next;baseQueue.next=pendingFirst;pendingQueue.next=baseFirst;}current.baseQueue=baseQueue=pendingQueue;queue.pending=null;}if(baseQueue!==null){// We have a queue to process.
16116var first=baseQueue.next;var newState=current.baseState;var newBaseState=null;var newBaseQueueFirst=null;var newBaseQueueLast=null;var update=first;do{var updateExpirationTime=update.expirationTime;if(updateExpirationTime<renderExpirationTime){// Priority is insufficient. Skip this update. If this is the first
16117// skipped update, the previous update/state is the new base
16118// update/state.
16119var clone={expirationTime:update.expirationTime,suspenseConfig:update.suspenseConfig,action:update.action,eagerReducer:update.eagerReducer,eagerState:update.eagerState,next:null};if(newBaseQueueLast===null){newBaseQueueFirst=newBaseQueueLast=clone;newBaseState=newState;}else{newBaseQueueLast=newBaseQueueLast.next=clone;}// Update the remaining priority in the queue.
16120if(updateExpirationTime>currentlyRenderingFiber$1.expirationTime){currentlyRenderingFiber$1.expirationTime=updateExpirationTime;markUnprocessedUpdateTime(updateExpirationTime);}}else{// This update does have sufficient priority.
16121if(newBaseQueueLast!==null){var _clone={expirationTime:Sync,// This update is going to be committed so we never want uncommit it.
16122suspenseConfig:update.suspenseConfig,action:update.action,eagerReducer:update.eagerReducer,eagerState:update.eagerState,next:null};newBaseQueueLast=newBaseQueueLast.next=_clone;}// Mark the event time of this update as relevant to this render pass.
16123// TODO: This should ideally use the true event time of this update rather than
16124// its priority which is a derived and not reverseable value.
16125// TODO: We should skip this update if it was already committed but currently
16126// we have no way of detecting the difference between a committed and suspended
16127// update here.
16128markRenderEventTimeAndConfig(updateExpirationTime,update.suspenseConfig);// Process this update.
16129if(update.eagerReducer===reducer){// If this update was processed eagerly, and its reducer matches the
16130// current reducer, we can use the eagerly computed state.
16131newState=update.eagerState;}else{var action=update.action;newState=reducer(newState,action);}}update=update.next;}while(update!==null&&update!==first);if(newBaseQueueLast===null){newBaseState=newState;}else{newBaseQueueLast.next=newBaseQueueFirst;}// Mark that the fiber performed work, but only if the new state is
16132// different from the current state.
16133if(!objectIs(newState,hook.memoizedState)){markWorkInProgressReceivedUpdate();}hook.memoizedState=newState;hook.baseState=newBaseState;hook.baseQueue=newBaseQueueLast;queue.lastRenderedState=newState;}var dispatch=queue.dispatch;return[hook.memoizedState,dispatch];}function rerenderReducer(reducer,initialArg,init){var hook=updateWorkInProgressHook();var queue=hook.queue;if(!(queue!==null)){{throw Error("Should have a queue. This is likely a bug in React. Please file an issue.");}}queue.lastRenderedReducer=reducer;// This is a re-render. Apply the new render phase updates to the previous
16134// work-in-progress hook.
16135var dispatch=queue.dispatch;var lastRenderPhaseUpdate=queue.pending;var newState=hook.memoizedState;if(lastRenderPhaseUpdate!==null){// The queue doesn't persist past this render pass.
16136queue.pending=null;var firstRenderPhaseUpdate=lastRenderPhaseUpdate.next;var update=firstRenderPhaseUpdate;do{// Process this render phase update. We don't have to check the
16137// priority because it will always be the same as the current
16138// render's.
16139var action=update.action;newState=reducer(newState,action);update=update.next;}while(update!==firstRenderPhaseUpdate);// Mark that the fiber performed work, but only if the new state is
16140// different from the current state.
16141if(!objectIs(newState,hook.memoizedState)){markWorkInProgressReceivedUpdate();}hook.memoizedState=newState;// Don't persist the state accumulated from the render phase updates to
16142// the base state unless the queue is empty.
16143// TODO: Not sure if this is the desired semantics, but it's what we
16144// do for gDSFP. I can't remember why.
16145if(hook.baseQueue===null){hook.baseState=newState;}queue.lastRenderedState=newState;}return[newState,dispatch];}function mountState(initialState){var hook=mountWorkInProgressHook();if(typeof initialState==='function'){// $FlowFixMe: Flow doesn't like mixed types
16146initialState=initialState();}hook.memoizedState=hook.baseState=initialState;var queue=hook.queue={pending:null,dispatch:null,lastRenderedReducer:basicStateReducer,lastRenderedState:initialState};var dispatch=queue.dispatch=dispatchAction.bind(null,currentlyRenderingFiber$1,queue);return[hook.memoizedState,dispatch];}function updateState(initialState){return updateReducer(basicStateReducer);}function rerenderState(initialState){return rerenderReducer(basicStateReducer);}function pushEffect(tag,create,destroy,deps){var effect={tag:tag,create:create,destroy:destroy,deps:deps,// Circular
16147next:null};var componentUpdateQueue=currentlyRenderingFiber$1.updateQueue;if(componentUpdateQueue===null){componentUpdateQueue=createFunctionComponentUpdateQueue();currentlyRenderingFiber$1.updateQueue=componentUpdateQueue;componentUpdateQueue.lastEffect=effect.next=effect;}else{var lastEffect=componentUpdateQueue.lastEffect;if(lastEffect===null){componentUpdateQueue.lastEffect=effect.next=effect;}else{var firstEffect=lastEffect.next;lastEffect.next=effect;effect.next=firstEffect;componentUpdateQueue.lastEffect=effect;}}return effect;}function mountRef(initialValue){var hook=mountWorkInProgressHook();var ref={current:initialValue};{Object.seal(ref);}hook.memoizedState=ref;return ref;}function updateRef(initialValue){var hook=updateWorkInProgressHook();return hook.memoizedState;}function mountEffectImpl(fiberEffectTag,hookEffectTag,create,deps){var hook=mountWorkInProgressHook();var nextDeps=deps===undefined?null:deps;currentlyRenderingFiber$1.effectTag|=fiberEffectTag;hook.memoizedState=pushEffect(HasEffect|hookEffectTag,create,undefined,nextDeps);}function updateEffectImpl(fiberEffectTag,hookEffectTag,create,deps){var hook=updateWorkInProgressHook();var nextDeps=deps===undefined?null:deps;var destroy=undefined;if(currentHook!==null){var prevEffect=currentHook.memoizedState;destroy=prevEffect.destroy;if(nextDeps!==null){var prevDeps=prevEffect.deps;if(areHookInputsEqual(nextDeps,prevDeps)){pushEffect(hookEffectTag,create,destroy,nextDeps);return;}}}currentlyRenderingFiber$1.effectTag|=fiberEffectTag;hook.memoizedState=pushEffect(HasEffect|hookEffectTag,create,destroy,nextDeps);}function mountEffect(create,deps){{// $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
16148if('undefined'!==typeof jest){warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);}}return mountEffectImpl(Update|Passive,Passive$1,create,deps);}function updateEffect(create,deps){{// $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
16149if('undefined'!==typeof jest){warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);}}return updateEffectImpl(Update|Passive,Passive$1,create,deps);}function mountLayoutEffect(create,deps){return mountEffectImpl(Update,Layout,create,deps);}function updateLayoutEffect(create,deps){return updateEffectImpl(Update,Layout,create,deps);}function imperativeHandleEffect(create,ref){if(typeof ref==='function'){var refCallback=ref;var _inst=create();refCallback(_inst);return function(){refCallback(null);};}else if(ref!==null&&ref!==undefined){var refObject=ref;{if(!refObject.hasOwnProperty('current')){error('Expected useImperativeHandle() first argument to either be a '+'ref callback or React.createRef() object. Instead received: %s.','an object with keys {'+Object.keys(refObject).join(', ')+'}');}}var _inst2=create();refObject.current=_inst2;return function(){refObject.current=null;};}}function mountImperativeHandle(ref,create,deps){{if(typeof create!=='function'){error('Expected useImperativeHandle() second argument to be a function '+'that creates a handle. Instead received: %s.',create!==null?typeof create:'null');}}// TODO: If deps are provided, should we skip comparing the ref itself?
16150var effectDeps=deps!==null&&deps!==undefined?deps.concat([ref]):null;return mountEffectImpl(Update,Layout,imperativeHandleEffect.bind(null,create,ref),effectDeps);}function updateImperativeHandle(ref,create,deps){{if(typeof create!=='function'){error('Expected useImperativeHandle() second argument to be a function '+'that creates a handle. Instead received: %s.',create!==null?typeof create:'null');}}// TODO: If deps are provided, should we skip comparing the ref itself?
16151var effectDeps=deps!==null&&deps!==undefined?deps.concat([ref]):null;return updateEffectImpl(Update,Layout,imperativeHandleEffect.bind(null,create,ref),effectDeps);}function mountDebugValue(value,formatterFn){// This hook is normally a no-op.
16152// The react-debug-hooks package injects its own implementation
16153// so that e.g. DevTools can display custom hook values.
16154}var updateDebugValue=mountDebugValue;function mountCallback(callback,deps){var hook=mountWorkInProgressHook();var nextDeps=deps===undefined?null:deps;hook.memoizedState=[callback,nextDeps];return callback;}function updateCallback(callback,deps){var hook=updateWorkInProgressHook();var nextDeps=deps===undefined?null:deps;var prevState=hook.memoizedState;if(prevState!==null){if(nextDeps!==null){var prevDeps=prevState[1];if(areHookInputsEqual(nextDeps,prevDeps)){return prevState[0];}}}hook.memoizedState=[callback,nextDeps];return callback;}function mountMemo(nextCreate,deps){var hook=mountWorkInProgressHook();var nextDeps=deps===undefined?null:deps;var nextValue=nextCreate();hook.memoizedState=[nextValue,nextDeps];return nextValue;}function updateMemo(nextCreate,deps){var hook=updateWorkInProgressHook();var nextDeps=deps===undefined?null:deps;var prevState=hook.memoizedState;if(prevState!==null){// Assume these are defined. If they're not, areHookInputsEqual will warn.
16155if(nextDeps!==null){var prevDeps=prevState[1];if(areHookInputsEqual(nextDeps,prevDeps)){return prevState[0];}}}var nextValue=nextCreate();hook.memoizedState=[nextValue,nextDeps];return nextValue;}function mountDeferredValue(value,config){var _mountState=mountState(value),prevValue=_mountState[0],setValue=_mountState[1];mountEffect(function(){var previousConfig=ReactCurrentBatchConfig$1.suspense;ReactCurrentBatchConfig$1.suspense=config===undefined?null:config;try{setValue(value);}finally{ReactCurrentBatchConfig$1.suspense=previousConfig;}},[value,config]);return prevValue;}function updateDeferredValue(value,config){var _updateState=updateState(),prevValue=_updateState[0],setValue=_updateState[1];updateEffect(function(){var previousConfig=ReactCurrentBatchConfig$1.suspense;ReactCurrentBatchConfig$1.suspense=config===undefined?null:config;try{setValue(value);}finally{ReactCurrentBatchConfig$1.suspense=previousConfig;}},[value,config]);return prevValue;}function rerenderDeferredValue(value,config){var _rerenderState=rerenderState(),prevValue=_rerenderState[0],setValue=_rerenderState[1];updateEffect(function(){var previousConfig=ReactCurrentBatchConfig$1.suspense;ReactCurrentBatchConfig$1.suspense=config===undefined?null:config;try{setValue(value);}finally{ReactCurrentBatchConfig$1.suspense=previousConfig;}},[value,config]);return prevValue;}function startTransition(setPending,config,callback){var priorityLevel=getCurrentPriorityLevel();runWithPriority$1(priorityLevel<UserBlockingPriority$1?UserBlockingPriority$1:priorityLevel,function(){setPending(true);});runWithPriority$1(priorityLevel>NormalPriority?NormalPriority:priorityLevel,function(){var previousConfig=ReactCurrentBatchConfig$1.suspense;ReactCurrentBatchConfig$1.suspense=config===undefined?null:config;try{setPending(false);callback();}finally{ReactCurrentBatchConfig$1.suspense=previousConfig;}});}function mountTransition(config){var _mountState2=mountState(false),isPending=_mountState2[0],setPending=_mountState2[1];var start=mountCallback(startTransition.bind(null,setPending,config),[setPending,config]);return[start,isPending];}function updateTransition(config){var _updateState2=updateState(),isPending=_updateState2[0],setPending=_updateState2[1];var start=updateCallback(startTransition.bind(null,setPending,config),[setPending,config]);return[start,isPending];}function rerenderTransition(config){var _rerenderState2=rerenderState(),isPending=_rerenderState2[0],setPending=_rerenderState2[1];var start=updateCallback(startTransition.bind(null,setPending,config),[setPending,config]);return[start,isPending];}function dispatchAction(fiber,queue,action){{if(typeof arguments[3]==='function'){error("State updates from the useState() and useReducer() Hooks don't support the "+'second callback argument. To execute a side effect after '+'rendering, declare it in the component body with useEffect().');}}var currentTime=requestCurrentTimeForUpdate();var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,fiber,suspenseConfig);var update={expirationTime:expirationTime,suspenseConfig:suspenseConfig,action:action,eagerReducer:null,eagerState:null,next:null};{update.priority=getCurrentPriorityLevel();}// Append the update to the end of the list.
16156var pending=queue.pending;if(pending===null){// This is the first update. Create a circular list.
16157update.next=update;}else{update.next=pending.next;pending.next=update;}queue.pending=update;var alternate=fiber.alternate;if(fiber===currentlyRenderingFiber$1||alternate!==null&&alternate===currentlyRenderingFiber$1){// This is a render phase update. Stash it in a lazily-created map of
16158// queue -> linked list of updates. After this render pass, we'll restart
16159// and apply the stashed updates on top of the work-in-progress hook.
16160didScheduleRenderPhaseUpdate=true;update.expirationTime=renderExpirationTime;currentlyRenderingFiber$1.expirationTime=renderExpirationTime;}else{if(fiber.expirationTime===NoWork&&(alternate===null||alternate.expirationTime===NoWork)){// The queue is currently empty, which means we can eagerly compute the
16161// next state before entering the render phase. If the new state is the
16162// same as the current state, we may be able to bail out entirely.
16163var lastRenderedReducer=queue.lastRenderedReducer;if(lastRenderedReducer!==null){var prevDispatcher;{prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;}try{var currentState=queue.lastRenderedState;var eagerState=lastRenderedReducer(currentState,action);// Stash the eagerly computed state, and the reducer used to compute
16164// it, on the update object. If the reducer hasn't changed by the
16165// time we enter the render phase, then the eager state can be used
16166// without calling the reducer again.
16167update.eagerReducer=lastRenderedReducer;update.eagerState=eagerState;if(objectIs(eagerState,currentState)){// Fast path. We can bail out without scheduling React to re-render.
16168// It's still possible that we'll need to rebase this update later,
16169// if the component re-renders for a different reason and by that
16170// time the reducer has changed.
16171return;}}catch(error){// Suppress the error. It will throw again in the render phase.
16172}finally{{ReactCurrentDispatcher.current=prevDispatcher;}}}}{// $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
16173if('undefined'!==typeof jest){warnIfNotScopedWithMatchingAct(fiber);warnIfNotCurrentlyActingUpdatesInDev(fiber);}}scheduleWork(fiber,expirationTime);}}var ContextOnlyDispatcher={readContext:readContext,useCallback:throwInvalidHookError,useContext:throwInvalidHookError,useEffect:throwInvalidHookError,useImperativeHandle:throwInvalidHookError,useLayoutEffect:throwInvalidHookError,useMemo:throwInvalidHookError,useReducer:throwInvalidHookError,useRef:throwInvalidHookError,useState:throwInvalidHookError,useDebugValue:throwInvalidHookError,useResponder:throwInvalidHookError,useDeferredValue:throwInvalidHookError,useTransition:throwInvalidHookError};var HooksDispatcherOnMountInDEV=null;var HooksDispatcherOnMountWithHookTypesInDEV=null;var HooksDispatcherOnUpdateInDEV=null;var HooksDispatcherOnRerenderInDEV=null;var InvalidNestedHooksDispatcherOnMountInDEV=null;var InvalidNestedHooksDispatcherOnUpdateInDEV=null;var InvalidNestedHooksDispatcherOnRerenderInDEV=null;{var warnInvalidContextAccess=function(){error('Context can only be read while React is rendering. '+'In classes, you can read it in the render method or getDerivedStateFromProps. '+'In function components, you can read it directly in the function body, but not '+'inside Hooks like useReducer() or useMemo().');};var warnInvalidHookAccess=function(){error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. '+'You can only call Hooks at the top level of your React function. '+'For more information, see '+'https://fb.me/rules-of-hooks');};HooksDispatcherOnMountInDEV={readContext:function(context,observedBits){return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';mountHookTypesDev();checkDepsAreArrayDev(deps);return mountCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';mountHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';mountHookTypesDev();checkDepsAreArrayDev(deps);return mountEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';mountHookTypesDev();checkDepsAreArrayDev(deps);return mountImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';mountHookTypesDev();checkDepsAreArrayDev(deps);return mountLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';mountHookTypesDev();checkDepsAreArrayDev(deps);var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';mountHookTypesDev();return mountRef(initialValue);},useState:function(initialState){currentHookNameInDev='useState';mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';mountHookTypesDev();return mountDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';mountHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';mountHookTypesDev();return mountDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';mountHookTypesDev();return mountTransition(config);}};HooksDispatcherOnMountWithHookTypesInDEV={readContext:function(context,observedBits){return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';updateHookTypesDev();return mountCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';updateHookTypesDev();return mountEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';updateHookTypesDev();return mountImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';updateHookTypesDev();return mountLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';updateHookTypesDev();return mountRef(initialValue);},useState:function(initialState){currentHookNameInDev='useState';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';updateHookTypesDev();return mountDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';updateHookTypesDev();return mountDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';updateHookTypesDev();return mountTransition(config);}};HooksDispatcherOnUpdateInDEV={readContext:function(context,observedBits){return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';updateHookTypesDev();return updateCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';updateHookTypesDev();return updateEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';updateHookTypesDev();return updateImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';updateHookTypesDev();return updateLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';updateHookTypesDev();return updateRef();},useState:function(initialState){currentHookNameInDev='useState';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';updateHookTypesDev();return updateDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';updateHookTypesDev();return updateDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';updateHookTypesDev();return updateTransition(config);}};HooksDispatcherOnRerenderInDEV={readContext:function(context,observedBits){return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';updateHookTypesDev();return updateCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';updateHookTypesDev();return updateEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';updateHookTypesDev();return updateImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';updateHookTypesDev();return updateLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnRerenderInDEV;try{return updateMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnRerenderInDEV;try{return rerenderReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';updateHookTypesDev();return updateRef();},useState:function(initialState){currentHookNameInDev='useState';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnRerenderInDEV;try{return rerenderState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';updateHookTypesDev();return updateDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';updateHookTypesDev();return rerenderDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';updateHookTypesDev();return rerenderTransition(config);}};InvalidNestedHooksDispatcherOnMountInDEV={readContext:function(context,observedBits){warnInvalidContextAccess();return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';warnInvalidHookAccess();mountHookTypesDev();return mountCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';warnInvalidHookAccess();mountHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';warnInvalidHookAccess();mountHookTypesDev();return mountEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';warnInvalidHookAccess();mountHookTypesDev();return mountImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';warnInvalidHookAccess();mountHookTypesDev();return mountLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';warnInvalidHookAccess();mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';warnInvalidHookAccess();mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';warnInvalidHookAccess();mountHookTypesDev();return mountRef(initialValue);},useState:function(initialState){currentHookNameInDev='useState';warnInvalidHookAccess();mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';warnInvalidHookAccess();mountHookTypesDev();return mountDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';warnInvalidHookAccess();mountHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';warnInvalidHookAccess();mountHookTypesDev();return mountDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';warnInvalidHookAccess();mountHookTypesDev();return mountTransition(config);}};InvalidNestedHooksDispatcherOnUpdateInDEV={readContext:function(context,observedBits){warnInvalidContextAccess();return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';warnInvalidHookAccess();updateHookTypesDev();return updateCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';warnInvalidHookAccess();updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';warnInvalidHookAccess();updateHookTypesDev();return updateEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';warnInvalidHookAccess();updateHookTypesDev();return updateImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';warnInvalidHookAccess();updateHookTypesDev();return updateLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';warnInvalidHookAccess();updateHookTypesDev();return updateRef();},useState:function(initialState){currentHookNameInDev='useState';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';warnInvalidHookAccess();updateHookTypesDev();return updateDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';warnInvalidHookAccess();updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';warnInvalidHookAccess();updateHookTypesDev();return updateDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';warnInvalidHookAccess();updateHookTypesDev();return updateTransition(config);}};InvalidNestedHooksDispatcherOnRerenderInDEV={readContext:function(context,observedBits){warnInvalidContextAccess();return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';warnInvalidHookAccess();updateHookTypesDev();return updateCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';warnInvalidHookAccess();updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';warnInvalidHookAccess();updateHookTypesDev();return updateEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';warnInvalidHookAccess();updateHookTypesDev();return updateImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';warnInvalidHookAccess();updateHookTypesDev();return updateLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return rerenderReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';warnInvalidHookAccess();updateHookTypesDev();return updateRef();},useState:function(initialState){currentHookNameInDev='useState';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return rerenderState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';warnInvalidHookAccess();updateHookTypesDev();return updateDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';warnInvalidHookAccess();updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';warnInvalidHookAccess();updateHookTypesDev();return rerenderDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';warnInvalidHookAccess();updateHookTypesDev();return rerenderTransition(config);}};}var now$1=Scheduler.unstable_now;var commitTime=0;var profilerStartTime=-1;function getCommitTime(){return commitTime;}function recordCommitTime(){commitTime=now$1();}function startProfilerTimer(fiber){profilerStartTime=now$1();if(fiber.actualStartTime<0){fiber.actualStartTime=now$1();}}function stopProfilerTimerIfRunning(fiber){profilerStartTime=-1;}function stopProfilerTimerIfRunningAndRecordDelta(fiber,overrideBaseTime){if(profilerStartTime>=0){var elapsedTime=now$1()-profilerStartTime;fiber.actualDuration+=elapsedTime;if(overrideBaseTime){fiber.selfBaseDuration=elapsedTime;}profilerStartTime=-1;}}// This may have been an insertion or a hydration.
16174var hydrationParentFiber=null;var nextHydratableInstance=null;var isHydrating=false;function enterHydrationState(fiber){var parentInstance=fiber.stateNode.containerInfo;nextHydratableInstance=getFirstHydratableChild(parentInstance);hydrationParentFiber=fiber;isHydrating=true;return true;}function deleteHydratableInstance(returnFiber,instance){{switch(returnFiber.tag){case HostRoot:didNotHydrateContainerInstance(returnFiber.stateNode.containerInfo,instance);break;case HostComponent:didNotHydrateInstance(returnFiber.type,returnFiber.memoizedProps,returnFiber.stateNode,instance);break;}}var childToDelete=createFiberFromHostInstanceForDeletion();childToDelete.stateNode=instance;childToDelete.return=returnFiber;childToDelete.effectTag=Deletion;// This might seem like it belongs on progressedFirstDeletion. However,
16175// these children are not part of the reconciliation list of children.
16176// Even if we abort and rereconcile the children, that will try to hydrate
16177// again and the nodes are still in the host tree so these will be
16178// recreated.
16179if(returnFiber.lastEffect!==null){returnFiber.lastEffect.nextEffect=childToDelete;returnFiber.lastEffect=childToDelete;}else{returnFiber.firstEffect=returnFiber.lastEffect=childToDelete;}}function insertNonHydratedInstance(returnFiber,fiber){fiber.effectTag=fiber.effectTag&~Hydrating|Placement;{switch(returnFiber.tag){case HostRoot:{var parentContainer=returnFiber.stateNode.containerInfo;switch(fiber.tag){case HostComponent:var type=fiber.type;var props=fiber.pendingProps;didNotFindHydratableContainerInstance(parentContainer,type);break;case HostText:var text=fiber.pendingProps;didNotFindHydratableContainerTextInstance(parentContainer,text);break;}break;}case HostComponent:{var parentType=returnFiber.type;var parentProps=returnFiber.memoizedProps;var parentInstance=returnFiber.stateNode;switch(fiber.tag){case HostComponent:var _type=fiber.type;var _props=fiber.pendingProps;didNotFindHydratableInstance(parentType,parentProps,parentInstance,_type);break;case HostText:var _text=fiber.pendingProps;didNotFindHydratableTextInstance(parentType,parentProps,parentInstance,_text);break;case SuspenseComponent:didNotFindHydratableSuspenseInstance(parentType,parentProps);break;}break;}default:return;}}}function tryHydrate(fiber,nextInstance){switch(fiber.tag){case HostComponent:{var type=fiber.type;var props=fiber.pendingProps;var instance=canHydrateInstance(nextInstance,type);if(instance!==null){fiber.stateNode=instance;return true;}return false;}case HostText:{var text=fiber.pendingProps;var textInstance=canHydrateTextInstance(nextInstance,text);if(textInstance!==null){fiber.stateNode=textInstance;return true;}return false;}case SuspenseComponent:{return false;}default:return false;}}function tryToClaimNextHydratableInstance(fiber){if(!isHydrating){return;}var nextInstance=nextHydratableInstance;if(!nextInstance){// Nothing to hydrate. Make it an insertion.
16180insertNonHydratedInstance(hydrationParentFiber,fiber);isHydrating=false;hydrationParentFiber=fiber;return;}var firstAttemptedInstance=nextInstance;if(!tryHydrate(fiber,nextInstance)){// If we can't hydrate this instance let's try the next one.
16181// We use this as a heuristic. It's based on intuition and not data so it
16182// might be flawed or unnecessary.
16183nextInstance=getNextHydratableSibling(firstAttemptedInstance);if(!nextInstance||!tryHydrate(fiber,nextInstance)){// Nothing to hydrate. Make it an insertion.
16184insertNonHydratedInstance(hydrationParentFiber,fiber);isHydrating=false;hydrationParentFiber=fiber;return;}// We matched the next one, we'll now assume that the first one was
16185// superfluous and we'll delete it. Since we can't eagerly delete it
16186// we'll have to schedule a deletion. To do that, this node needs a dummy
16187// fiber associated with it.
16188deleteHydratableInstance(hydrationParentFiber,firstAttemptedInstance);}hydrationParentFiber=fiber;nextHydratableInstance=getFirstHydratableChild(nextInstance);}function prepareToHydrateHostInstance(fiber,rootContainerInstance,hostContext){var instance=fiber.stateNode;var updatePayload=hydrateInstance(instance,fiber.type,fiber.memoizedProps,rootContainerInstance,hostContext,fiber);// TODO: Type this specific to this type of component.
16189fiber.updateQueue=updatePayload;// If the update payload indicates that there is a change or if there
16190// is a new ref we mark this as an update.
16191if(updatePayload!==null){return true;}return false;}function prepareToHydrateHostTextInstance(fiber){var textInstance=fiber.stateNode;var textContent=fiber.memoizedProps;var shouldUpdate=hydrateTextInstance(textInstance,textContent,fiber);{if(shouldUpdate){// We assume that prepareToHydrateHostTextInstance is called in a context where the
16192// hydration parent is the parent host component of this host text.
16193var returnFiber=hydrationParentFiber;if(returnFiber!==null){switch(returnFiber.tag){case HostRoot:{var parentContainer=returnFiber.stateNode.containerInfo;didNotMatchHydratedContainerTextInstance(parentContainer,textInstance,textContent);break;}case HostComponent:{var parentType=returnFiber.type;var parentProps=returnFiber.memoizedProps;var parentInstance=returnFiber.stateNode;didNotMatchHydratedTextInstance(parentType,parentProps,parentInstance,textInstance,textContent);break;}}}}}return shouldUpdate;}function skipPastDehydratedSuspenseInstance(fiber){var suspenseState=fiber.memoizedState;var suspenseInstance=suspenseState!==null?suspenseState.dehydrated:null;if(!suspenseInstance){{throw Error("Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.");}}return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);}function popToNextHostParent(fiber){var parent=fiber.return;while(parent!==null&&parent.tag!==HostComponent&&parent.tag!==HostRoot&&parent.tag!==SuspenseComponent){parent=parent.return;}hydrationParentFiber=parent;}function popHydrationState(fiber){if(fiber!==hydrationParentFiber){// We're deeper than the current hydration context, inside an inserted
16194// tree.
16195return false;}if(!isHydrating){// If we're not currently hydrating but we're in a hydration context, then
16196// we were an insertion and now need to pop up reenter hydration of our
16197// siblings.
16198popToNextHostParent(fiber);isHydrating=true;return false;}var type=fiber.type;// If we have any remaining hydratable nodes, we need to delete them now.
16199// We only do this deeper than head and body since they tend to have random
16200// other nodes in them. We also ignore components with pure text content in
16201// side of them.
16202// TODO: Better heuristic.
16203if(fiber.tag!==HostComponent||type!=='head'&&type!=='body'&&!shouldSetTextContent(type,fiber.memoizedProps)){var nextInstance=nextHydratableInstance;while(nextInstance){deleteHydratableInstance(fiber,nextInstance);nextInstance=getNextHydratableSibling(nextInstance);}}popToNextHostParent(fiber);if(fiber.tag===SuspenseComponent){nextHydratableInstance=skipPastDehydratedSuspenseInstance(fiber);}else{nextHydratableInstance=hydrationParentFiber?getNextHydratableSibling(fiber.stateNode):null;}return true;}function resetHydrationState(){hydrationParentFiber=null;nextHydratableInstance=null;isHydrating=false;}var ReactCurrentOwner$1=ReactSharedInternals.ReactCurrentOwner;var didReceiveUpdate=false;var didWarnAboutBadClass;var didWarnAboutModulePatternComponent;var didWarnAboutContextTypeOnFunctionComponent;var didWarnAboutGetDerivedStateOnFunctionComponent;var didWarnAboutFunctionRefs;var didWarnAboutReassigningProps;var didWarnAboutRevealOrder;var didWarnAboutTailOptions;{didWarnAboutBadClass={};didWarnAboutModulePatternComponent={};didWarnAboutContextTypeOnFunctionComponent={};didWarnAboutGetDerivedStateOnFunctionComponent={};didWarnAboutFunctionRefs={};didWarnAboutReassigningProps=false;didWarnAboutRevealOrder={};didWarnAboutTailOptions={};}function reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime){if(current===null){// If this is a fresh new component that hasn't been rendered yet, we
16204// won't update its child set by applying minimal side-effects. Instead,
16205// we will add them all to the child before it gets rendered. That means
16206// we can optimize this reconciliation pass by not tracking side-effects.
16207workInProgress.child=mountChildFibers(workInProgress,null,nextChildren,renderExpirationTime);}else{// If the current child is the same as the work in progress, it means that
16208// we haven't yet started any work on these children. Therefore, we use
16209// the clone algorithm to create a copy of all the current children.
16210// If we had any progressed work already, that is invalid at this point so
16211// let's throw it out.
16212workInProgress.child=reconcileChildFibers(workInProgress,current.child,nextChildren,renderExpirationTime);}}function forceUnmountCurrentAndReconcile(current,workInProgress,nextChildren,renderExpirationTime){// This function is fork of reconcileChildren. It's used in cases where we
16213// want to reconcile without matching against the existing set. This has the
16214// effect of all current children being unmounted; even if the type and key
16215// are the same, the old child is unmounted and a new child is created.
16216//
16217// To do this, we're going to go through the reconcile algorithm twice. In
16218// the first pass, we schedule a deletion for all the current children by
16219// passing null.
16220workInProgress.child=reconcileChildFibers(workInProgress,current.child,null,renderExpirationTime);// In the second pass, we mount the new children. The trick here is that we
16221// pass null in place of where we usually pass the current child set. This has
16222// the effect of remounting all children regardless of whether their
16223// identities match.
16224workInProgress.child=reconcileChildFibers(workInProgress,null,nextChildren,renderExpirationTime);}function updateForwardRef(current,workInProgress,Component,nextProps,renderExpirationTime){// TODO: current can be non-null here even if the component
16225// hasn't yet mounted. This happens after the first render suspends.
16226// We'll need to figure out if this is fine or can cause issues.
16227{if(workInProgress.type!==workInProgress.elementType){// Lazy component props can't be validated in createElement
16228// because they're only guaranteed to be resolved here.
16229var innerPropTypes=Component.propTypes;if(innerPropTypes){checkPropTypes(innerPropTypes,nextProps,// Resolved props
16230'prop',getComponentName(Component),getCurrentFiberStackInDev);}}}var render=Component.render;var ref=workInProgress.ref;// The rest is a fork of updateFunctionComponent
16231var nextChildren;prepareToReadContext(workInProgress,renderExpirationTime);{ReactCurrentOwner$1.current=workInProgress;setIsRendering(true);nextChildren=renderWithHooks(current,workInProgress,render,nextProps,ref,renderExpirationTime);if(workInProgress.mode&StrictMode){// Only double-render components with Hooks
16232if(workInProgress.memoizedState!==null){nextChildren=renderWithHooks(current,workInProgress,render,nextProps,ref,renderExpirationTime);}}setIsRendering(false);}if(current!==null&&!didReceiveUpdate){bailoutHooks(current,workInProgress,renderExpirationTime);return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}// React DevTools reads this flag.
16233workInProgress.effectTag|=PerformedWork;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateMemoComponent(current,workInProgress,Component,nextProps,updateExpirationTime,renderExpirationTime){if(current===null){var type=Component.type;if(isSimpleFunctionComponent(type)&&Component.compare===null&&// SimpleMemoComponent codepath doesn't resolve outer props either.
16234Component.defaultProps===undefined){var resolvedType=type;{resolvedType=resolveFunctionForHotReloading(type);}// If this is a plain function component without default props,
16235// and with only the default shallow comparison, we upgrade it
16236// to a SimpleMemoComponent to allow fast path updates.
16237workInProgress.tag=SimpleMemoComponent;workInProgress.type=resolvedType;{validateFunctionComponentInDev(workInProgress,type);}return updateSimpleMemoComponent(current,workInProgress,resolvedType,nextProps,updateExpirationTime,renderExpirationTime);}{var innerPropTypes=type.propTypes;if(innerPropTypes){// Inner memo component props aren't currently validated in createElement.
16238// We could move it there, but we'd still need this for lazy code path.
16239checkPropTypes(innerPropTypes,nextProps,// Resolved props
16240'prop',getComponentName(type),getCurrentFiberStackInDev);}}var child=createFiberFromTypeAndProps(Component.type,null,nextProps,null,workInProgress.mode,renderExpirationTime);child.ref=workInProgress.ref;child.return=workInProgress;workInProgress.child=child;return child;}{var _type=Component.type;var _innerPropTypes=_type.propTypes;if(_innerPropTypes){// Inner memo component props aren't currently validated in createElement.
16241// We could move it there, but we'd still need this for lazy code path.
16242checkPropTypes(_innerPropTypes,nextProps,// Resolved props
16243'prop',getComponentName(_type),getCurrentFiberStackInDev);}}var currentChild=current.child;// This is always exactly one child
16244if(updateExpirationTime<renderExpirationTime){// This will be the props with resolved defaultProps,
16245// unlike current.memoizedProps which will be the unresolved ones.
16246var prevProps=currentChild.memoizedProps;// Default to shallow comparison
16247var compare=Component.compare;compare=compare!==null?compare:shallowEqual;if(compare(prevProps,nextProps)&&current.ref===workInProgress.ref){return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}}// React DevTools reads this flag.
16248workInProgress.effectTag|=PerformedWork;var newChild=createWorkInProgress(currentChild,nextProps);newChild.ref=workInProgress.ref;newChild.return=workInProgress;workInProgress.child=newChild;return newChild;}function updateSimpleMemoComponent(current,workInProgress,Component,nextProps,updateExpirationTime,renderExpirationTime){// TODO: current can be non-null here even if the component
16249// hasn't yet mounted. This happens when the inner render suspends.
16250// We'll need to figure out if this is fine or can cause issues.
16251{if(workInProgress.type!==workInProgress.elementType){// Lazy component props can't be validated in createElement
16252// because they're only guaranteed to be resolved here.
16253var outerMemoType=workInProgress.elementType;if(outerMemoType.$$typeof===REACT_LAZY_TYPE){// We warn when you define propTypes on lazy()
16254// so let's just skip over it to find memo() outer wrapper.
16255// Inner props for memo are validated later.
16256outerMemoType=refineResolvedLazyComponent(outerMemoType);}var outerPropTypes=outerMemoType&&outerMemoType.propTypes;if(outerPropTypes){checkPropTypes(outerPropTypes,nextProps,// Resolved (SimpleMemoComponent has no defaultProps)
16257'prop',getComponentName(outerMemoType),getCurrentFiberStackInDev);}// Inner propTypes will be validated in the function component path.
16258}}if(current!==null){var prevProps=current.memoizedProps;if(shallowEqual(prevProps,nextProps)&&current.ref===workInProgress.ref&&// Prevent bailout if the implementation changed due to hot reload.
16259workInProgress.type===current.type){didReceiveUpdate=false;if(updateExpirationTime<renderExpirationTime){// The pending update priority was cleared at the beginning of
16260// beginWork. We're about to bail out, but there might be additional
16261// updates at a lower priority. Usually, the priority level of the
16262// remaining updates is accumlated during the evaluation of the
16263// component (i.e. when processing the update queue). But since since
16264// we're bailing out early *without* evaluating the component, we need
16265// to account for it here, too. Reset to the value of the current fiber.
16266// NOTE: This only applies to SimpleMemoComponent, not MemoComponent,
16267// because a MemoComponent fiber does not have hooks or an update queue;
16268// rather, it wraps around an inner component, which may or may not
16269// contains hooks.
16270// TODO: Move the reset at in beginWork out of the common path so that
16271// this is no longer necessary.
16272workInProgress.expirationTime=current.expirationTime;return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}}}return updateFunctionComponent(current,workInProgress,Component,nextProps,renderExpirationTime);}function updateFragment(current,workInProgress,renderExpirationTime){var nextChildren=workInProgress.pendingProps;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateMode(current,workInProgress,renderExpirationTime){var nextChildren=workInProgress.pendingProps.children;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateProfiler(current,workInProgress,renderExpirationTime){{workInProgress.effectTag|=Update;}var nextProps=workInProgress.pendingProps;var nextChildren=nextProps.children;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function markRef(current,workInProgress){var ref=workInProgress.ref;if(current===null&&ref!==null||current!==null&&current.ref!==ref){// Schedule a Ref effect
16273workInProgress.effectTag|=Ref;}}function updateFunctionComponent(current,workInProgress,Component,nextProps,renderExpirationTime){{if(workInProgress.type!==workInProgress.elementType){// Lazy component props can't be validated in createElement
16274// because they're only guaranteed to be resolved here.
16275var innerPropTypes=Component.propTypes;if(innerPropTypes){checkPropTypes(innerPropTypes,nextProps,// Resolved props
16276'prop',getComponentName(Component),getCurrentFiberStackInDev);}}}var context;{var unmaskedContext=getUnmaskedContext(workInProgress,Component,true);context=getMaskedContext(workInProgress,unmaskedContext);}var nextChildren;prepareToReadContext(workInProgress,renderExpirationTime);{ReactCurrentOwner$1.current=workInProgress;setIsRendering(true);nextChildren=renderWithHooks(current,workInProgress,Component,nextProps,context,renderExpirationTime);if(workInProgress.mode&StrictMode){// Only double-render components with Hooks
16277if(workInProgress.memoizedState!==null){nextChildren=renderWithHooks(current,workInProgress,Component,nextProps,context,renderExpirationTime);}}setIsRendering(false);}if(current!==null&&!didReceiveUpdate){bailoutHooks(current,workInProgress,renderExpirationTime);return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}// React DevTools reads this flag.
16278workInProgress.effectTag|=PerformedWork;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateClassComponent(current,workInProgress,Component,nextProps,renderExpirationTime){{if(workInProgress.type!==workInProgress.elementType){// Lazy component props can't be validated in createElement
16279// because they're only guaranteed to be resolved here.
16280var innerPropTypes=Component.propTypes;if(innerPropTypes){checkPropTypes(innerPropTypes,nextProps,// Resolved props
16281'prop',getComponentName(Component),getCurrentFiberStackInDev);}}}// Push context providers early to prevent context stack mismatches.
16282// During mounting we don't know the child context yet as the instance doesn't exist.
16283// We will invalidate the child context in finishClassComponent() right after rendering.
16284var hasContext;if(isContextProvider(Component)){hasContext=true;pushContextProvider(workInProgress);}else{hasContext=false;}prepareToReadContext(workInProgress,renderExpirationTime);var instance=workInProgress.stateNode;var shouldUpdate;if(instance===null){if(current!==null){// A class component without an instance only mounts if it suspended
16285// inside a non-concurrent tree, in an inconsistent state. We want to
16286// treat it like a new mount, even though an empty version of it already
16287// committed. Disconnect the alternate pointers.
16288current.alternate=null;workInProgress.alternate=null;// Since this is conceptually a new fiber, schedule a Placement effect
16289workInProgress.effectTag|=Placement;}// In the initial pass we might need to construct the instance.
16290constructClassInstance(workInProgress,Component,nextProps);mountClassInstance(workInProgress,Component,nextProps,renderExpirationTime);shouldUpdate=true;}else if(current===null){// In a resume, we'll already have an instance we can reuse.
16291shouldUpdate=resumeMountClassInstance(workInProgress,Component,nextProps,renderExpirationTime);}else{shouldUpdate=updateClassInstance(current,workInProgress,Component,nextProps,renderExpirationTime);}var nextUnitOfWork=finishClassComponent(current,workInProgress,Component,shouldUpdate,hasContext,renderExpirationTime);{var inst=workInProgress.stateNode;if(inst.props!==nextProps){if(!didWarnAboutReassigningProps){error('It looks like %s is reassigning its own `this.props` while rendering. '+'This is not supported and can lead to confusing bugs.',getComponentName(workInProgress.type)||'a component');}didWarnAboutReassigningProps=true;}}return nextUnitOfWork;}function finishClassComponent(current,workInProgress,Component,shouldUpdate,hasContext,renderExpirationTime){// Refs should update even if shouldComponentUpdate returns false
16292markRef(current,workInProgress);var didCaptureError=(workInProgress.effectTag&DidCapture)!==NoEffect;if(!shouldUpdate&&!didCaptureError){// Context providers should defer to sCU for rendering
16293if(hasContext){invalidateContextProvider(workInProgress,Component,false);}return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}var instance=workInProgress.stateNode;// Rerender
16294ReactCurrentOwner$1.current=workInProgress;var nextChildren;if(didCaptureError&&typeof Component.getDerivedStateFromError!=='function'){// If we captured an error, but getDerivedStateFromError is not defined,
16295// unmount all the children. componentDidCatch will schedule an update to
16296// re-render a fallback. This is temporary until we migrate everyone to
16297// the new API.
16298// TODO: Warn in a future release.
16299nextChildren=null;{stopProfilerTimerIfRunning();}}else{{setIsRendering(true);nextChildren=instance.render();if(workInProgress.mode&StrictMode){instance.render();}setIsRendering(false);}}// React DevTools reads this flag.
16300workInProgress.effectTag|=PerformedWork;if(current!==null&&didCaptureError){// If we're recovering from an error, reconcile without reusing any of
16301// the existing children. Conceptually, the normal children and the children
16302// that are shown on error are two different sets, so we shouldn't reuse
16303// normal children even if their identities match.
16304forceUnmountCurrentAndReconcile(current,workInProgress,nextChildren,renderExpirationTime);}else{reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);}// Memoize state using the values we just used to render.
16305// TODO: Restructure so we never read values from the instance.
16306workInProgress.memoizedState=instance.state;// The context might have changed so we need to recalculate it.
16307if(hasContext){invalidateContextProvider(workInProgress,Component,true);}return workInProgress.child;}function pushHostRootContext(workInProgress){var root=workInProgress.stateNode;if(root.pendingContext){pushTopLevelContextObject(workInProgress,root.pendingContext,root.pendingContext!==root.context);}else if(root.context){// Should always be set
16308pushTopLevelContextObject(workInProgress,root.context,false);}pushHostContainer(workInProgress,root.containerInfo);}function updateHostRoot(current,workInProgress,renderExpirationTime){pushHostRootContext(workInProgress);var updateQueue=workInProgress.updateQueue;if(!(current!==null&&updateQueue!==null)){{throw Error("If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue.");}}var nextProps=workInProgress.pendingProps;var prevState=workInProgress.memoizedState;var prevChildren=prevState!==null?prevState.element:null;cloneUpdateQueue(current,workInProgress);processUpdateQueue(workInProgress,nextProps,null,renderExpirationTime);var nextState=workInProgress.memoizedState;// Caution: React DevTools currently depends on this property
16309// being called "element".
16310var nextChildren=nextState.element;if(nextChildren===prevChildren){// If the state is the same as before, that's a bailout because we had
16311// no work that expires at this time.
16312resetHydrationState();return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}var root=workInProgress.stateNode;if(root.hydrate&&enterHydrationState(workInProgress)){// If we don't have any current children this might be the first pass.
16313// We always try to hydrate. If this isn't a hydration pass there won't
16314// be any children to hydrate which is effectively the same thing as
16315// not hydrating.
16316var child=mountChildFibers(workInProgress,null,nextChildren,renderExpirationTime);workInProgress.child=child;var node=child;while(node){// Mark each child as hydrating. This is a fast path to know whether this
16317// tree is part of a hydrating tree. This is used to determine if a child
16318// node has fully mounted yet, and for scheduling event replaying.
16319// Conceptually this is similar to Placement in that a new subtree is
16320// inserted into the React tree here. It just happens to not need DOM
16321// mutations because it already exists.
16322node.effectTag=node.effectTag&~Placement|Hydrating;node=node.sibling;}}else{// Otherwise reset hydration state in case we aborted and resumed another
16323// root.
16324reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);resetHydrationState();}return workInProgress.child;}function updateHostComponent(current,workInProgress,renderExpirationTime){pushHostContext(workInProgress);if(current===null){tryToClaimNextHydratableInstance(workInProgress);}var type=workInProgress.type;var nextProps=workInProgress.pendingProps;var prevProps=current!==null?current.memoizedProps:null;var nextChildren=nextProps.children;var isDirectTextChild=shouldSetTextContent(type,nextProps);if(isDirectTextChild){// We special case a direct text child of a host node. This is a common
16325// case. We won't handle it as a reified child. We will instead handle
16326// this in the host environment that also has access to this prop. That
16327// avoids allocating another HostText fiber and traversing it.
16328nextChildren=null;}else if(prevProps!==null&&shouldSetTextContent(type,prevProps)){// If we're switching from a direct text child to a normal child, or to
16329// empty, we need to schedule the text content to be reset.
16330workInProgress.effectTag|=ContentReset;}markRef(current,workInProgress);// Check the host config to see if the children are offscreen/hidden.
16331if(workInProgress.mode&ConcurrentMode&&renderExpirationTime!==Never&&shouldDeprioritizeSubtree(type,nextProps)){{markSpawnedWork(Never);}// Schedule this fiber to re-render at offscreen priority. Then bailout.
16332workInProgress.expirationTime=workInProgress.childExpirationTime=Never;return null;}reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateHostText(current,workInProgress){if(current===null){tryToClaimNextHydratableInstance(workInProgress);}// Nothing to do here. This is terminal. We'll do the completion step
16333// immediately after.
16334return null;}function mountLazyComponent(_current,workInProgress,elementType,updateExpirationTime,renderExpirationTime){if(_current!==null){// A lazy component only mounts if it suspended inside a non-
16335// concurrent tree, in an inconsistent state. We want to treat it like
16336// a new mount, even though an empty version of it already committed.
16337// Disconnect the alternate pointers.
16338_current.alternate=null;workInProgress.alternate=null;// Since this is conceptually a new fiber, schedule a Placement effect
16339workInProgress.effectTag|=Placement;}var props=workInProgress.pendingProps;// We can't start a User Timing measurement with correct label yet.
16340// Cancel and resume right after we know the tag.
16341cancelWorkTimer(workInProgress);var Component=readLazyComponentType(elementType);// Store the unwrapped component in the type.
16342workInProgress.type=Component;var resolvedTag=workInProgress.tag=resolveLazyComponentTag(Component);startWorkTimer(workInProgress);var resolvedProps=resolveDefaultProps(Component,props);var child;switch(resolvedTag){case FunctionComponent:{{validateFunctionComponentInDev(workInProgress,Component);workInProgress.type=Component=resolveFunctionForHotReloading(Component);}child=updateFunctionComponent(null,workInProgress,Component,resolvedProps,renderExpirationTime);return child;}case ClassComponent:{{workInProgress.type=Component=resolveClassForHotReloading(Component);}child=updateClassComponent(null,workInProgress,Component,resolvedProps,renderExpirationTime);return child;}case ForwardRef:{{workInProgress.type=Component=resolveForwardRefForHotReloading(Component);}child=updateForwardRef(null,workInProgress,Component,resolvedProps,renderExpirationTime);return child;}case MemoComponent:{{if(workInProgress.type!==workInProgress.elementType){var outerPropTypes=Component.propTypes;if(outerPropTypes){checkPropTypes(outerPropTypes,resolvedProps,// Resolved for outer only
16343'prop',getComponentName(Component),getCurrentFiberStackInDev);}}}child=updateMemoComponent(null,workInProgress,Component,resolveDefaultProps(Component.type,resolvedProps),// The inner type can have defaults too
16344updateExpirationTime,renderExpirationTime);return child;}}var hint='';{if(Component!==null&&typeof Component==='object'&&Component.$$typeof===REACT_LAZY_TYPE){hint=' Did you wrap a component in React.lazy() more than once?';}}// This message intentionally doesn't mention ForwardRef or MemoComponent
16345// because the fact that it's a separate type of work is an
16346// implementation detail.
16347{{throw Error("Element type is invalid. Received a promise that resolves to: "+Component+". Lazy element type must resolve to a class or function."+hint);}}}function mountIncompleteClassComponent(_current,workInProgress,Component,nextProps,renderExpirationTime){if(_current!==null){// An incomplete component only mounts if it suspended inside a non-
16348// concurrent tree, in an inconsistent state. We want to treat it like
16349// a new mount, even though an empty version of it already committed.
16350// Disconnect the alternate pointers.
16351_current.alternate=null;workInProgress.alternate=null;// Since this is conceptually a new fiber, schedule a Placement effect
16352workInProgress.effectTag|=Placement;}// Promote the fiber to a class and try rendering again.
16353workInProgress.tag=ClassComponent;// The rest of this function is a fork of `updateClassComponent`
16354// Push context providers early to prevent context stack mismatches.
16355// During mounting we don't know the child context yet as the instance doesn't exist.
16356// We will invalidate the child context in finishClassComponent() right after rendering.
16357var hasContext;if(isContextProvider(Component)){hasContext=true;pushContextProvider(workInProgress);}else{hasContext=false;}prepareToReadContext(workInProgress,renderExpirationTime);constructClassInstance(workInProgress,Component,nextProps);mountClassInstance(workInProgress,Component,nextProps,renderExpirationTime);return finishClassComponent(null,workInProgress,Component,true,hasContext,renderExpirationTime);}function mountIndeterminateComponent(_current,workInProgress,Component,renderExpirationTime){if(_current!==null){// An indeterminate component only mounts if it suspended inside a non-
16358// concurrent tree, in an inconsistent state. We want to treat it like
16359// a new mount, even though an empty version of it already committed.
16360// Disconnect the alternate pointers.
16361_current.alternate=null;workInProgress.alternate=null;// Since this is conceptually a new fiber, schedule a Placement effect
16362workInProgress.effectTag|=Placement;}var props=workInProgress.pendingProps;var context;{var unmaskedContext=getUnmaskedContext(workInProgress,Component,false);context=getMaskedContext(workInProgress,unmaskedContext);}prepareToReadContext(workInProgress,renderExpirationTime);var value;{if(Component.prototype&&typeof Component.prototype.render==='function'){var componentName=getComponentName(Component)||'Unknown';if(!didWarnAboutBadClass[componentName]){error("The <%s /> component appears to have a render method, but doesn't extend React.Component. "+'This is likely to cause errors. Change %s to extend React.Component instead.',componentName,componentName);didWarnAboutBadClass[componentName]=true;}}if(workInProgress.mode&StrictMode){ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress,null);}setIsRendering(true);ReactCurrentOwner$1.current=workInProgress;value=renderWithHooks(null,workInProgress,Component,props,context,renderExpirationTime);setIsRendering(false);}// React DevTools reads this flag.
16363workInProgress.effectTag|=PerformedWork;if(typeof value==='object'&&value!==null&&typeof value.render==='function'&&value.$$typeof===undefined){{var _componentName=getComponentName(Component)||'Unknown';if(!didWarnAboutModulePatternComponent[_componentName]){error('The <%s /> component appears to be a function component that returns a class instance. '+'Change %s to a class that extends React.Component instead. '+"If you can't use a class try assigning the prototype on the function as a workaround. "+"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it "+'cannot be called with `new` by React.',_componentName,_componentName,_componentName);didWarnAboutModulePatternComponent[_componentName]=true;}}// Proceed under the assumption that this is a class instance
16364workInProgress.tag=ClassComponent;// Throw out any hooks that were used.
16365workInProgress.memoizedState=null;workInProgress.updateQueue=null;// Push context providers early to prevent context stack mismatches.
16366// During mounting we don't know the child context yet as the instance doesn't exist.
16367// We will invalidate the child context in finishClassComponent() right after rendering.
16368var hasContext=false;if(isContextProvider(Component)){hasContext=true;pushContextProvider(workInProgress);}else{hasContext=false;}workInProgress.memoizedState=value.state!==null&&value.state!==undefined?value.state:null;initializeUpdateQueue(workInProgress);var getDerivedStateFromProps=Component.getDerivedStateFromProps;if(typeof getDerivedStateFromProps==='function'){applyDerivedStateFromProps(workInProgress,Component,getDerivedStateFromProps,props);}adoptClassInstance(workInProgress,value);mountClassInstance(workInProgress,Component,props,renderExpirationTime);return finishClassComponent(null,workInProgress,Component,true,hasContext,renderExpirationTime);}else{// Proceed under the assumption that this is a function component
16369workInProgress.tag=FunctionComponent;{if(workInProgress.mode&StrictMode){// Only double-render components with Hooks
16370if(workInProgress.memoizedState!==null){value=renderWithHooks(null,workInProgress,Component,props,context,renderExpirationTime);}}}reconcileChildren(null,workInProgress,value,renderExpirationTime);{validateFunctionComponentInDev(workInProgress,Component);}return workInProgress.child;}}function validateFunctionComponentInDev(workInProgress,Component){{if(Component){if(Component.childContextTypes){error('%s(...): childContextTypes cannot be defined on a function component.',Component.displayName||Component.name||'Component');}}if(workInProgress.ref!==null){var info='';var ownerName=getCurrentFiberOwnerNameInDevOrNull();if(ownerName){info+='\n\nCheck the render method of `'+ownerName+'`.';}var warningKey=ownerName||workInProgress._debugID||'';var debugSource=workInProgress._debugSource;if(debugSource){warningKey=debugSource.fileName+':'+debugSource.lineNumber;}if(!didWarnAboutFunctionRefs[warningKey]){didWarnAboutFunctionRefs[warningKey]=true;error('Function components cannot be given refs. '+'Attempts to access this ref will fail. '+'Did you mean to use React.forwardRef()?%s',info);}}if(typeof Component.getDerivedStateFromProps==='function'){var _componentName2=getComponentName(Component)||'Unknown';if(!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2]){error('%s: Function components do not support getDerivedStateFromProps.',_componentName2);didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2]=true;}}if(typeof Component.contextType==='object'&&Component.contextType!==null){var _componentName3=getComponentName(Component)||'Unknown';if(!didWarnAboutContextTypeOnFunctionComponent[_componentName3]){error('%s: Function components do not support contextType.',_componentName3);didWarnAboutContextTypeOnFunctionComponent[_componentName3]=true;}}}}var SUSPENDED_MARKER={dehydrated:null,retryTime:NoWork};function shouldRemainOnFallback(suspenseContext,current,workInProgress){// If the context is telling us that we should show a fallback, and we're not
16371// already showing content, then we should show the fallback instead.
16372return hasSuspenseContext(suspenseContext,ForceSuspenseFallback)&&(current===null||current.memoizedState!==null);}function updateSuspenseComponent(current,workInProgress,renderExpirationTime){var mode=workInProgress.mode;var nextProps=workInProgress.pendingProps;// This is used by DevTools to force a boundary to suspend.
16373{if(shouldSuspend(workInProgress)){workInProgress.effectTag|=DidCapture;}}var suspenseContext=suspenseStackCursor.current;var nextDidTimeout=false;var didSuspend=(workInProgress.effectTag&DidCapture)!==NoEffect;if(didSuspend||shouldRemainOnFallback(suspenseContext,current)){// Something in this boundary's subtree already suspended. Switch to
16374// rendering the fallback children.
16375nextDidTimeout=true;workInProgress.effectTag&=~DidCapture;}else{// Attempting the main content
16376if(current===null||current.memoizedState!==null){// This is a new mount or this boundary is already showing a fallback state.
16377// Mark this subtree context as having at least one invisible parent that could
16378// handle the fallback state.
16379// Boundaries without fallbacks or should be avoided are not considered since
16380// they cannot handle preferred fallback states.
16381if(nextProps.fallback!==undefined&&nextProps.unstable_avoidThisFallback!==true){suspenseContext=addSubtreeSuspenseContext(suspenseContext,InvisibleParentSuspenseContext);}}}suspenseContext=setDefaultShallowSuspenseContext(suspenseContext);pushSuspenseContext(workInProgress,suspenseContext);// This next part is a bit confusing. If the children timeout, we switch to
16382// showing the fallback children in place of the "primary" children.
16383// However, we don't want to delete the primary children because then their
16384// state will be lost (both the React state and the host state, e.g.
16385// uncontrolled form inputs). Instead we keep them mounted and hide them.
16386// Both the fallback children AND the primary children are rendered at the
16387// same time. Once the primary children are un-suspended, we can delete
16388// the fallback children — don't need to preserve their state.
16389//
16390// The two sets of children are siblings in the host environment, but
16391// semantically, for purposes of reconciliation, they are two separate sets.
16392// So we store them using two fragment fibers.
16393//
16394// However, we want to avoid allocating extra fibers for every placeholder.
16395// They're only necessary when the children time out, because that's the
16396// only time when both sets are mounted.
16397//
16398// So, the extra fragment fibers are only used if the children time out.
16399// Otherwise, we render the primary children directly. This requires some
16400// custom reconciliation logic to preserve the state of the primary
16401// children. It's essentially a very basic form of re-parenting.
16402if(current===null){// If we're currently hydrating, try to hydrate this boundary.
16403// But only if this has a fallback.
16404if(nextProps.fallback!==undefined){tryToClaimNextHydratableInstance(workInProgress);// This could've been a dehydrated suspense component.
16405}// This is the initial mount. This branch is pretty simple because there's
16406// no previous state that needs to be preserved.
16407if(nextDidTimeout){// Mount separate fragments for primary and fallback children.
16408var nextFallbackChildren=nextProps.fallback;var primaryChildFragment=createFiberFromFragment(null,mode,NoWork,null);primaryChildFragment.return=workInProgress;if((workInProgress.mode&BlockingMode)===NoMode){// Outside of blocking mode, we commit the effects from the
16409// partially completed, timed-out tree, too.
16410var progressedState=workInProgress.memoizedState;var progressedPrimaryChild=progressedState!==null?workInProgress.child.child:workInProgress.child;primaryChildFragment.child=progressedPrimaryChild;var progressedChild=progressedPrimaryChild;while(progressedChild!==null){progressedChild.return=primaryChildFragment;progressedChild=progressedChild.sibling;}}var fallbackChildFragment=createFiberFromFragment(nextFallbackChildren,mode,renderExpirationTime,null);fallbackChildFragment.return=workInProgress;primaryChildFragment.sibling=fallbackChildFragment;// Skip the primary children, and continue working on the
16411// fallback children.
16412workInProgress.memoizedState=SUSPENDED_MARKER;workInProgress.child=primaryChildFragment;return fallbackChildFragment;}else{// Mount the primary children without an intermediate fragment fiber.
16413var nextPrimaryChildren=nextProps.children;workInProgress.memoizedState=null;return workInProgress.child=mountChildFibers(workInProgress,null,nextPrimaryChildren,renderExpirationTime);}}else{// This is an update. This branch is more complicated because we need to
16414// ensure the state of the primary children is preserved.
16415var prevState=current.memoizedState;if(prevState!==null){// wrapped in a fragment fiber.
16416var currentPrimaryChildFragment=current.child;var currentFallbackChildFragment=currentPrimaryChildFragment.sibling;if(nextDidTimeout){// Still timed out. Reuse the current primary children by cloning
16417// its fragment. We're going to skip over these entirely.
16418var _nextFallbackChildren2=nextProps.fallback;var _primaryChildFragment2=createWorkInProgress(currentPrimaryChildFragment,currentPrimaryChildFragment.pendingProps);_primaryChildFragment2.return=workInProgress;if((workInProgress.mode&BlockingMode)===NoMode){// Outside of blocking mode, we commit the effects from the
16419// partially completed, timed-out tree, too.
16420var _progressedState=workInProgress.memoizedState;var _progressedPrimaryChild=_progressedState!==null?workInProgress.child.child:workInProgress.child;if(_progressedPrimaryChild!==currentPrimaryChildFragment.child){_primaryChildFragment2.child=_progressedPrimaryChild;var _progressedChild2=_progressedPrimaryChild;while(_progressedChild2!==null){_progressedChild2.return=_primaryChildFragment2;_progressedChild2=_progressedChild2.sibling;}}}// Because primaryChildFragment is a new fiber that we're inserting as the
16421// parent of a new tree, we need to set its treeBaseDuration.
16422if(workInProgress.mode&ProfileMode){// treeBaseDuration is the sum of all the child tree base durations.
16423var _treeBaseDuration=0;var _hiddenChild=_primaryChildFragment2.child;while(_hiddenChild!==null){_treeBaseDuration+=_hiddenChild.treeBaseDuration;_hiddenChild=_hiddenChild.sibling;}_primaryChildFragment2.treeBaseDuration=_treeBaseDuration;}// Clone the fallback child fragment, too. These we'll continue
16424// working on.
16425var _fallbackChildFragment2=createWorkInProgress(currentFallbackChildFragment,_nextFallbackChildren2);_fallbackChildFragment2.return=workInProgress;_primaryChildFragment2.sibling=_fallbackChildFragment2;_primaryChildFragment2.childExpirationTime=NoWork;// Skip the primary children, and continue working on the
16426// fallback children.
16427workInProgress.memoizedState=SUSPENDED_MARKER;workInProgress.child=_primaryChildFragment2;return _fallbackChildFragment2;}else{// No longer suspended. Switch back to showing the primary children,
16428// and remove the intermediate fragment fiber.
16429var _nextPrimaryChildren=nextProps.children;var currentPrimaryChild=currentPrimaryChildFragment.child;var primaryChild=reconcileChildFibers(workInProgress,currentPrimaryChild,_nextPrimaryChildren,renderExpirationTime);// If this render doesn't suspend, we need to delete the fallback
16430// children. Wait until the complete phase, after we've confirmed the
16431// fallback is no longer needed.
16432// TODO: Would it be better to store the fallback fragment on
16433// the stateNode?
16434// Continue rendering the children, like we normally do.
16435workInProgress.memoizedState=null;return workInProgress.child=primaryChild;}}else{// The current tree has not already timed out. That means the primary
16436// children are not wrapped in a fragment fiber.
16437var _currentPrimaryChild=current.child;if(nextDidTimeout){// Timed out. Wrap the children in a fragment fiber to keep them
16438// separate from the fallback children.
16439var _nextFallbackChildren3=nextProps.fallback;var _primaryChildFragment3=createFiberFromFragment(// It shouldn't matter what the pending props are because we aren't
16440// going to render this fragment.
16441null,mode,NoWork,null);_primaryChildFragment3.return=workInProgress;_primaryChildFragment3.child=_currentPrimaryChild;if(_currentPrimaryChild!==null){_currentPrimaryChild.return=_primaryChildFragment3;}// Even though we're creating a new fiber, there are no new children,
16442// because we're reusing an already mounted tree. So we don't need to
16443// schedule a placement.
16444// primaryChildFragment.effectTag |= Placement;
16445if((workInProgress.mode&BlockingMode)===NoMode){// Outside of blocking mode, we commit the effects from the
16446// partially completed, timed-out tree, too.
16447var _progressedState2=workInProgress.memoizedState;var _progressedPrimaryChild2=_progressedState2!==null?workInProgress.child.child:workInProgress.child;_primaryChildFragment3.child=_progressedPrimaryChild2;var _progressedChild3=_progressedPrimaryChild2;while(_progressedChild3!==null){_progressedChild3.return=_primaryChildFragment3;_progressedChild3=_progressedChild3.sibling;}}// Because primaryChildFragment is a new fiber that we're inserting as the
16448// parent of a new tree, we need to set its treeBaseDuration.
16449if(workInProgress.mode&ProfileMode){// treeBaseDuration is the sum of all the child tree base durations.
16450var _treeBaseDuration2=0;var _hiddenChild2=_primaryChildFragment3.child;while(_hiddenChild2!==null){_treeBaseDuration2+=_hiddenChild2.treeBaseDuration;_hiddenChild2=_hiddenChild2.sibling;}_primaryChildFragment3.treeBaseDuration=_treeBaseDuration2;}// Create a fragment from the fallback children, too.
16451var _fallbackChildFragment3=createFiberFromFragment(_nextFallbackChildren3,mode,renderExpirationTime,null);_fallbackChildFragment3.return=workInProgress;_primaryChildFragment3.sibling=_fallbackChildFragment3;_fallbackChildFragment3.effectTag|=Placement;_primaryChildFragment3.childExpirationTime=NoWork;// Skip the primary children, and continue working on the
16452// fallback children.
16453workInProgress.memoizedState=SUSPENDED_MARKER;workInProgress.child=_primaryChildFragment3;return _fallbackChildFragment3;}else{// Still haven't timed out. Continue rendering the children, like we
16454// normally do.
16455workInProgress.memoizedState=null;var _nextPrimaryChildren2=nextProps.children;return workInProgress.child=reconcileChildFibers(workInProgress,_currentPrimaryChild,_nextPrimaryChildren2,renderExpirationTime);}}}}function scheduleWorkOnFiber(fiber,renderExpirationTime){if(fiber.expirationTime<renderExpirationTime){fiber.expirationTime=renderExpirationTime;}var alternate=fiber.alternate;if(alternate!==null&&alternate.expirationTime<renderExpirationTime){alternate.expirationTime=renderExpirationTime;}scheduleWorkOnParentPath(fiber.return,renderExpirationTime);}function propagateSuspenseContextChange(workInProgress,firstChild,renderExpirationTime){// Mark any Suspense boundaries with fallbacks as having work to do.
16456// If they were previously forced into fallbacks, they may now be able
16457// to unblock.
16458var node=firstChild;while(node!==null){if(node.tag===SuspenseComponent){var state=node.memoizedState;if(state!==null){scheduleWorkOnFiber(node,renderExpirationTime);}}else if(node.tag===SuspenseListComponent){// If the tail is hidden there might not be an Suspense boundaries
16459// to schedule work on. In this case we have to schedule it on the
16460// list itself.
16461// We don't have to traverse to the children of the list since
16462// the list will propagate the change when it rerenders.
16463scheduleWorkOnFiber(node,renderExpirationTime);}else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===workInProgress){return;}while(node.sibling===null){if(node.return===null||node.return===workInProgress){return;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}}function findLastContentRow(firstChild){// This is going to find the last row among these children that is already
16464// showing content on the screen, as opposed to being in fallback state or
16465// new. If a row has multiple Suspense boundaries, any of them being in the
16466// fallback state, counts as the whole row being in a fallback state.
16467// Note that the "rows" will be workInProgress, but any nested children
16468// will still be current since we haven't rendered them yet. The mounted
16469// order may not be the same as the new order. We use the new order.
16470var row=firstChild;var lastContentRow=null;while(row!==null){var currentRow=row.alternate;// New rows can't be content rows.
16471if(currentRow!==null&&findFirstSuspended(currentRow)===null){lastContentRow=row;}row=row.sibling;}return lastContentRow;}function validateRevealOrder(revealOrder){{if(revealOrder!==undefined&&revealOrder!=='forwards'&&revealOrder!=='backwards'&&revealOrder!=='together'&&!didWarnAboutRevealOrder[revealOrder]){didWarnAboutRevealOrder[revealOrder]=true;if(typeof revealOrder==='string'){switch(revealOrder.toLowerCase()){case'together':case'forwards':case'backwards':{error('"%s" is not a valid value for revealOrder on <SuspenseList />. '+'Use lowercase "%s" instead.',revealOrder,revealOrder.toLowerCase());break;}case'forward':case'backward':{error('"%s" is not a valid value for revealOrder on <SuspenseList />. '+'React uses the -s suffix in the spelling. Use "%ss" instead.',revealOrder,revealOrder.toLowerCase());break;}default:error('"%s" is not a supported revealOrder on <SuspenseList />. '+'Did you mean "together", "forwards" or "backwards"?',revealOrder);break;}}else{error('%s is not a supported value for revealOrder on <SuspenseList />. '+'Did you mean "together", "forwards" or "backwards"?',revealOrder);}}}}function validateTailOptions(tailMode,revealOrder){{if(tailMode!==undefined&&!didWarnAboutTailOptions[tailMode]){if(tailMode!=='collapsed'&&tailMode!=='hidden'){didWarnAboutTailOptions[tailMode]=true;error('"%s" is not a supported value for tail on <SuspenseList />. '+'Did you mean "collapsed" or "hidden"?',tailMode);}else if(revealOrder!=='forwards'&&revealOrder!=='backwards'){didWarnAboutTailOptions[tailMode]=true;error('<SuspenseList tail="%s" /> is only valid if revealOrder is '+'"forwards" or "backwards". '+'Did you mean to specify revealOrder="forwards"?',tailMode);}}}}function validateSuspenseListNestedChild(childSlot,index){{var isArray=Array.isArray(childSlot);var isIterable=!isArray&&typeof getIteratorFn(childSlot)==='function';if(isArray||isIterable){var type=isArray?'array':'iterable';error('A nested %s was passed to row #%s in <SuspenseList />. Wrap it in '+'an additional SuspenseList to configure its revealOrder: '+'<SuspenseList revealOrder=...> ... '+'<SuspenseList revealOrder=...>{%s}</SuspenseList> ... '+'</SuspenseList>',type,index,type);return false;}}return true;}function validateSuspenseListChildren(children,revealOrder){{if((revealOrder==='forwards'||revealOrder==='backwards')&&children!==undefined&&children!==null&&children!==false){if(Array.isArray(children)){for(var i=0;i<children.length;i++){if(!validateSuspenseListNestedChild(children[i],i)){return;}}}else{var iteratorFn=getIteratorFn(children);if(typeof iteratorFn==='function'){var childrenIterator=iteratorFn.call(children);if(childrenIterator){var step=childrenIterator.next();var _i=0;for(;!step.done;step=childrenIterator.next()){if(!validateSuspenseListNestedChild(step.value,_i)){return;}_i++;}}}else{error('A single row was passed to a <SuspenseList revealOrder="%s" />. '+'This is not useful since it needs multiple rows. '+'Did you mean to pass multiple children or an array?',revealOrder);}}}}}function initSuspenseListRenderState(workInProgress,isBackwards,tail,lastContentRow,tailMode,lastEffectBeforeRendering){var renderState=workInProgress.memoizedState;if(renderState===null){workInProgress.memoizedState={isBackwards:isBackwards,rendering:null,renderingStartTime:0,last:lastContentRow,tail:tail,tailExpiration:0,tailMode:tailMode,lastEffect:lastEffectBeforeRendering};}else{// We can reuse the existing object from previous renders.
16472renderState.isBackwards=isBackwards;renderState.rendering=null;renderState.renderingStartTime=0;renderState.last=lastContentRow;renderState.tail=tail;renderState.tailExpiration=0;renderState.tailMode=tailMode;renderState.lastEffect=lastEffectBeforeRendering;}}// This can end up rendering this component multiple passes.
16473// The first pass splits the children fibers into two sets. A head and tail.
16474// We first render the head. If anything is in fallback state, we do another
16475// pass through beginWork to rerender all children (including the tail) with
16476// the force suspend context. If the first render didn't have anything in
16477// in fallback state. Then we render each row in the tail one-by-one.
16478// That happens in the completeWork phase without going back to beginWork.
16479function updateSuspenseListComponent(current,workInProgress,renderExpirationTime){var nextProps=workInProgress.pendingProps;var revealOrder=nextProps.revealOrder;var tailMode=nextProps.tail;var newChildren=nextProps.children;validateRevealOrder(revealOrder);validateTailOptions(tailMode,revealOrder);validateSuspenseListChildren(newChildren,revealOrder);reconcileChildren(current,workInProgress,newChildren,renderExpirationTime);var suspenseContext=suspenseStackCursor.current;var shouldForceFallback=hasSuspenseContext(suspenseContext,ForceSuspenseFallback);if(shouldForceFallback){suspenseContext=setShallowSuspenseContext(suspenseContext,ForceSuspenseFallback);workInProgress.effectTag|=DidCapture;}else{var didSuspendBefore=current!==null&&(current.effectTag&DidCapture)!==NoEffect;if(didSuspendBefore){// If we previously forced a fallback, we need to schedule work
16480// on any nested boundaries to let them know to try to render
16481// again. This is the same as context updating.
16482propagateSuspenseContextChange(workInProgress,workInProgress.child,renderExpirationTime);}suspenseContext=setDefaultShallowSuspenseContext(suspenseContext);}pushSuspenseContext(workInProgress,suspenseContext);if((workInProgress.mode&BlockingMode)===NoMode){// Outside of blocking mode, SuspenseList doesn't work so we just
16483// use make it a noop by treating it as the default revealOrder.
16484workInProgress.memoizedState=null;}else{switch(revealOrder){case'forwards':{var lastContentRow=findLastContentRow(workInProgress.child);var tail;if(lastContentRow===null){// The whole list is part of the tail.
16485// TODO: We could fast path by just rendering the tail now.
16486tail=workInProgress.child;workInProgress.child=null;}else{// Disconnect the tail rows after the content row.
16487// We're going to render them separately later.
16488tail=lastContentRow.sibling;lastContentRow.sibling=null;}initSuspenseListRenderState(workInProgress,false,// isBackwards
16489tail,lastContentRow,tailMode,workInProgress.lastEffect);break;}case'backwards':{// We're going to find the first row that has existing content.
16490// At the same time we're going to reverse the list of everything
16491// we pass in the meantime. That's going to be our tail in reverse
16492// order.
16493var _tail=null;var row=workInProgress.child;workInProgress.child=null;while(row!==null){var currentRow=row.alternate;// New rows can't be content rows.
16494if(currentRow!==null&&findFirstSuspended(currentRow)===null){// This is the beginning of the main content.
16495workInProgress.child=row;break;}var nextRow=row.sibling;row.sibling=_tail;_tail=row;row=nextRow;}// TODO: If workInProgress.child is null, we can continue on the tail immediately.
16496initSuspenseListRenderState(workInProgress,true,// isBackwards
16497_tail,null,// last
16498tailMode,workInProgress.lastEffect);break;}case'together':{initSuspenseListRenderState(workInProgress,false,// isBackwards
16499null,// tail
16500null,// last
16501undefined,workInProgress.lastEffect);break;}default:{// The default reveal order is the same as not having
16502// a boundary.
16503workInProgress.memoizedState=null;}}}return workInProgress.child;}function updatePortalComponent(current,workInProgress,renderExpirationTime){pushHostContainer(workInProgress,workInProgress.stateNode.containerInfo);var nextChildren=workInProgress.pendingProps;if(current===null){// Portals are special because we don't append the children during mount
16504// but at commit. Therefore we need to track insertions which the normal
16505// flow doesn't do during mount. This doesn't happen at the root because
16506// the root always starts with a "current" with a null child.
16507// TODO: Consider unifying this with how the root works.
16508workInProgress.child=reconcileChildFibers(workInProgress,null,nextChildren,renderExpirationTime);}else{reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);}return workInProgress.child;}function updateContextProvider(current,workInProgress,renderExpirationTime){var providerType=workInProgress.type;var context=providerType._context;var newProps=workInProgress.pendingProps;var oldProps=workInProgress.memoizedProps;var newValue=newProps.value;{var providerPropTypes=workInProgress.type.propTypes;if(providerPropTypes){checkPropTypes(providerPropTypes,newProps,'prop','Context.Provider',getCurrentFiberStackInDev);}}pushProvider(workInProgress,newValue);if(oldProps!==null){var oldValue=oldProps.value;var changedBits=calculateChangedBits(context,newValue,oldValue);if(changedBits===0){// No change. Bailout early if children are the same.
16509if(oldProps.children===newProps.children&&!hasContextChanged()){return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}}else{// The context value changed. Search for matching consumers and schedule
16510// them to update.
16511propagateContextChange(workInProgress,context,changedBits,renderExpirationTime);}}var newChildren=newProps.children;reconcileChildren(current,workInProgress,newChildren,renderExpirationTime);return workInProgress.child;}var hasWarnedAboutUsingContextAsConsumer=false;function updateContextConsumer(current,workInProgress,renderExpirationTime){var context=workInProgress.type;// The logic below for Context differs depending on PROD or DEV mode. In
16512// DEV mode, we create a separate object for Context.Consumer that acts
16513// like a proxy to Context. This proxy object adds unnecessary code in PROD
16514// so we use the old behaviour (Context.Consumer references Context) to
16515// reduce size and overhead. The separate object references context via
16516// a property called "_context", which also gives us the ability to check
16517// in DEV mode if this property exists or not and warn if it does not.
16518{if(context._context===undefined){// This may be because it's a Context (rather than a Consumer).
16519// Or it may be because it's older React where they're the same thing.
16520// We only want to warn if we're sure it's a new React.
16521if(context!==context.Consumer){if(!hasWarnedAboutUsingContextAsConsumer){hasWarnedAboutUsingContextAsConsumer=true;error('Rendering <Context> directly is not supported and will be removed in '+'a future major release. Did you mean to render <Context.Consumer> instead?');}}}else{context=context._context;}}var newProps=workInProgress.pendingProps;var render=newProps.children;{if(typeof render!=='function'){error('A context consumer was rendered with multiple children, or a child '+"that isn't a function. A context consumer expects a single child "+'that is a function. If you did pass a function, make sure there '+'is no trailing or leading whitespace around it.');}}prepareToReadContext(workInProgress,renderExpirationTime);var newValue=readContext(context,newProps.unstable_observedBits);var newChildren;{ReactCurrentOwner$1.current=workInProgress;setIsRendering(true);newChildren=render(newValue);setIsRendering(false);}// React DevTools reads this flag.
16522workInProgress.effectTag|=PerformedWork;reconcileChildren(current,workInProgress,newChildren,renderExpirationTime);return workInProgress.child;}function markWorkInProgressReceivedUpdate(){didReceiveUpdate=true;}function bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime){cancelWorkTimer(workInProgress);if(current!==null){// Reuse previous dependencies
16523workInProgress.dependencies=current.dependencies;}{// Don't update "base" render times for bailouts.
16524stopProfilerTimerIfRunning();}var updateExpirationTime=workInProgress.expirationTime;if(updateExpirationTime!==NoWork){markUnprocessedUpdateTime(updateExpirationTime);}// Check if the children have any pending work.
16525var childExpirationTime=workInProgress.childExpirationTime;if(childExpirationTime<renderExpirationTime){// The children don't have any work either. We can skip them.
16526// TODO: Once we add back resuming, we should check if the children are
16527// a work-in-progress set. If so, we need to transfer their effects.
16528return null;}else{// This fiber doesn't have work, but its subtree does. Clone the child
16529// fibers and continue.
16530cloneChildFibers(current,workInProgress);return workInProgress.child;}}function remountFiber(current,oldWorkInProgress,newWorkInProgress){{var returnFiber=oldWorkInProgress.return;if(returnFiber===null){throw new Error('Cannot swap the root fiber.');}// Disconnect from the old current.
16531// It will get deleted.
16532current.alternate=null;oldWorkInProgress.alternate=null;// Connect to the new tree.
16533newWorkInProgress.index=oldWorkInProgress.index;newWorkInProgress.sibling=oldWorkInProgress.sibling;newWorkInProgress.return=oldWorkInProgress.return;newWorkInProgress.ref=oldWorkInProgress.ref;// Replace the child/sibling pointers above it.
16534if(oldWorkInProgress===returnFiber.child){returnFiber.child=newWorkInProgress;}else{var prevSibling=returnFiber.child;if(prevSibling===null){throw new Error('Expected parent to have a child.');}while(prevSibling.sibling!==oldWorkInProgress){prevSibling=prevSibling.sibling;if(prevSibling===null){throw new Error('Expected to find the previous sibling.');}}prevSibling.sibling=newWorkInProgress;}// Delete the old fiber and place the new one.
16535// Since the old fiber is disconnected, we have to schedule it manually.
16536var last=returnFiber.lastEffect;if(last!==null){last.nextEffect=current;returnFiber.lastEffect=current;}else{returnFiber.firstEffect=returnFiber.lastEffect=current;}current.nextEffect=null;current.effectTag=Deletion;newWorkInProgress.effectTag|=Placement;// Restart work from the new fiber.
16537return newWorkInProgress;}}function beginWork(current,workInProgress,renderExpirationTime){var updateExpirationTime=workInProgress.expirationTime;{if(workInProgress._debugNeedsRemount&&current!==null){// This will restart the begin phase with a new fiber.
16538return remountFiber(current,workInProgress,createFiberFromTypeAndProps(workInProgress.type,workInProgress.key,workInProgress.pendingProps,workInProgress._debugOwner||null,workInProgress.mode,workInProgress.expirationTime));}}if(current!==null){var oldProps=current.memoizedProps;var newProps=workInProgress.pendingProps;if(oldProps!==newProps||hasContextChanged()||// Force a re-render if the implementation changed due to hot reload:
16539workInProgress.type!==current.type){// If props or context changed, mark the fiber as having performed work.
16540// This may be unset if the props are determined to be equal later (memo).
16541didReceiveUpdate=true;}else if(updateExpirationTime<renderExpirationTime){didReceiveUpdate=false;// This fiber does not have any pending work. Bailout without entering
16542// the begin phase. There's still some bookkeeping we that needs to be done
16543// in this optimized path, mostly pushing stuff onto the stack.
16544switch(workInProgress.tag){case HostRoot:pushHostRootContext(workInProgress);resetHydrationState();break;case HostComponent:pushHostContext(workInProgress);if(workInProgress.mode&ConcurrentMode&&renderExpirationTime!==Never&&shouldDeprioritizeSubtree(workInProgress.type,newProps)){{markSpawnedWork(Never);}// Schedule this fiber to re-render at offscreen priority. Then bailout.
16545workInProgress.expirationTime=workInProgress.childExpirationTime=Never;return null;}break;case ClassComponent:{var Component=workInProgress.type;if(isContextProvider(Component)){pushContextProvider(workInProgress);}break;}case HostPortal:pushHostContainer(workInProgress,workInProgress.stateNode.containerInfo);break;case ContextProvider:{var newValue=workInProgress.memoizedProps.value;pushProvider(workInProgress,newValue);break;}case Profiler:{// Profiler should only call onRender when one of its descendants actually rendered.
16546var hasChildWork=workInProgress.childExpirationTime>=renderExpirationTime;if(hasChildWork){workInProgress.effectTag|=Update;}}break;case SuspenseComponent:{var state=workInProgress.memoizedState;if(state!==null){// whether to retry the primary children, or to skip over it and
16547// go straight to the fallback. Check the priority of the primary
16548// child fragment.
16549var primaryChildFragment=workInProgress.child;var primaryChildExpirationTime=primaryChildFragment.childExpirationTime;if(primaryChildExpirationTime!==NoWork&&primaryChildExpirationTime>=renderExpirationTime){// The primary children have pending work. Use the normal path
16550// to attempt to render the primary children again.
16551return updateSuspenseComponent(current,workInProgress,renderExpirationTime);}else{pushSuspenseContext(workInProgress,setDefaultShallowSuspenseContext(suspenseStackCursor.current));// The primary children do not have pending work with sufficient
16552// priority. Bailout.
16553var child=bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);if(child!==null){// The fallback children have pending work. Skip over the
16554// primary children and work on the fallback.
16555return child.sibling;}else{return null;}}}else{pushSuspenseContext(workInProgress,setDefaultShallowSuspenseContext(suspenseStackCursor.current));}break;}case SuspenseListComponent:{var didSuspendBefore=(current.effectTag&DidCapture)!==NoEffect;var _hasChildWork=workInProgress.childExpirationTime>=renderExpirationTime;if(didSuspendBefore){if(_hasChildWork){// If something was in fallback state last time, and we have all the
16556// same children then we're still in progressive loading state.
16557// Something might get unblocked by state updates or retries in the
16558// tree which will affect the tail. So we need to use the normal
16559// path to compute the correct tail.
16560return updateSuspenseListComponent(current,workInProgress,renderExpirationTime);}// If none of the children had any work, that means that none of
16561// them got retried so they'll still be blocked in the same way
16562// as before. We can fast bail out.
16563workInProgress.effectTag|=DidCapture;}// If nothing suspended before and we're rendering the same children,
16564// then the tail doesn't matter. Anything new that suspends will work
16565// in the "together" mode, so we can continue from the state we had.
16566var renderState=workInProgress.memoizedState;if(renderState!==null){// Reset to the "together" mode in case we've started a different
16567// update in the past but didn't complete it.
16568renderState.rendering=null;renderState.tail=null;}pushSuspenseContext(workInProgress,suspenseStackCursor.current);if(_hasChildWork){break;}else{// If none of the children had any work, that means that none of
16569// them got retried so they'll still be blocked in the same way
16570// as before. We can fast bail out.
16571return null;}}}return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}else{// An update was scheduled on this fiber, but there are no new props
16572// nor legacy context. Set this to false. If an update queue or context
16573// consumer produces a changed value, it will set this to true. Otherwise,
16574// the component will assume the children have not changed and bail out.
16575didReceiveUpdate=false;}}else{didReceiveUpdate=false;}// Before entering the begin phase, clear pending update priority.
16576// TODO: This assumes that we're about to evaluate the component and process
16577// the update queue. However, there's an exception: SimpleMemoComponent
16578// sometimes bails out later in the begin phase. This indicates that we should
16579// move this assignment out of the common path and into each branch.
16580workInProgress.expirationTime=NoWork;switch(workInProgress.tag){case IndeterminateComponent:{return mountIndeterminateComponent(current,workInProgress,workInProgress.type,renderExpirationTime);}case LazyComponent:{var elementType=workInProgress.elementType;return mountLazyComponent(current,workInProgress,elementType,updateExpirationTime,renderExpirationTime);}case FunctionComponent:{var _Component=workInProgress.type;var unresolvedProps=workInProgress.pendingProps;var resolvedProps=workInProgress.elementType===_Component?unresolvedProps:resolveDefaultProps(_Component,unresolvedProps);return updateFunctionComponent(current,workInProgress,_Component,resolvedProps,renderExpirationTime);}case ClassComponent:{var _Component2=workInProgress.type;var _unresolvedProps=workInProgress.pendingProps;var _resolvedProps=workInProgress.elementType===_Component2?_unresolvedProps:resolveDefaultProps(_Component2,_unresolvedProps);return updateClassComponent(current,workInProgress,_Component2,_resolvedProps,renderExpirationTime);}case HostRoot:return updateHostRoot(current,workInProgress,renderExpirationTime);case HostComponent:return updateHostComponent(current,workInProgress,renderExpirationTime);case HostText:return updateHostText(current,workInProgress);case SuspenseComponent:return updateSuspenseComponent(current,workInProgress,renderExpirationTime);case HostPortal:return updatePortalComponent(current,workInProgress,renderExpirationTime);case ForwardRef:{var type=workInProgress.type;var _unresolvedProps2=workInProgress.pendingProps;var _resolvedProps2=workInProgress.elementType===type?_unresolvedProps2:resolveDefaultProps(type,_unresolvedProps2);return updateForwardRef(current,workInProgress,type,_resolvedProps2,renderExpirationTime);}case Fragment:return updateFragment(current,workInProgress,renderExpirationTime);case Mode:return updateMode(current,workInProgress,renderExpirationTime);case Profiler:return updateProfiler(current,workInProgress,renderExpirationTime);case ContextProvider:return updateContextProvider(current,workInProgress,renderExpirationTime);case ContextConsumer:return updateContextConsumer(current,workInProgress,renderExpirationTime);case MemoComponent:{var _type2=workInProgress.type;var _unresolvedProps3=workInProgress.pendingProps;// Resolve outer props first, then resolve inner props.
16581var _resolvedProps3=resolveDefaultProps(_type2,_unresolvedProps3);{if(workInProgress.type!==workInProgress.elementType){var outerPropTypes=_type2.propTypes;if(outerPropTypes){checkPropTypes(outerPropTypes,_resolvedProps3,// Resolved for outer only
16582'prop',getComponentName(_type2),getCurrentFiberStackInDev);}}}_resolvedProps3=resolveDefaultProps(_type2.type,_resolvedProps3);return updateMemoComponent(current,workInProgress,_type2,_resolvedProps3,updateExpirationTime,renderExpirationTime);}case SimpleMemoComponent:{return updateSimpleMemoComponent(current,workInProgress,workInProgress.type,workInProgress.pendingProps,updateExpirationTime,renderExpirationTime);}case IncompleteClassComponent:{var _Component3=workInProgress.type;var _unresolvedProps4=workInProgress.pendingProps;var _resolvedProps4=workInProgress.elementType===_Component3?_unresolvedProps4:resolveDefaultProps(_Component3,_unresolvedProps4);return mountIncompleteClassComponent(current,workInProgress,_Component3,_resolvedProps4,renderExpirationTime);}case SuspenseListComponent:{return updateSuspenseListComponent(current,workInProgress,renderExpirationTime);}}{{throw Error("Unknown unit of work tag ("+workInProgress.tag+"). This error is likely caused by a bug in React. Please file an issue.");}}}function markUpdate(workInProgress){// Tag the fiber with an update effect. This turns a Placement into
16583// a PlacementAndUpdate.
16584workInProgress.effectTag|=Update;}function markRef$1(workInProgress){workInProgress.effectTag|=Ref;}var appendAllChildren;var updateHostContainer;var updateHostComponent$1;var updateHostText$1;{// Mutation mode
16585appendAllChildren=function(parent,workInProgress,needsVisibilityToggle,isHidden){// We only have the top Fiber that was created but we need recurse down its
16586// children to find all the terminal nodes.
16587var node=workInProgress.child;while(node!==null){if(node.tag===HostComponent||node.tag===HostText){appendInitialChild(parent,node.stateNode);}else if(node.tag===HostPortal);else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===workInProgress){return;}while(node.sibling===null){if(node.return===null||node.return===workInProgress){return;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}};updateHostContainer=function(workInProgress){// Noop
16588};updateHostComponent$1=function(current,workInProgress,type,newProps,rootContainerInstance){// If we have an alternate, that means this is an update and we need to
16589// schedule a side-effect to do the updates.
16590var oldProps=current.memoizedProps;if(oldProps===newProps){// In mutation mode, this is sufficient for a bailout because
16591// we won't touch this node even if children changed.
16592return;}// If we get updated because one of our children updated, we don't
16593// have newProps so we'll have to reuse them.
16594// TODO: Split the update API as separate for the props vs. children.
16595// Even better would be if children weren't special cased at all tho.
16596var instance=workInProgress.stateNode;var currentHostContext=getHostContext();// TODO: Experiencing an error where oldProps is null. Suggests a host
16597// component is hitting the resume path. Figure out why. Possibly
16598// related to `hidden`.
16599var updatePayload=prepareUpdate(instance,type,oldProps,newProps,rootContainerInstance,currentHostContext);// TODO: Type this specific to this type of component.
16600workInProgress.updateQueue=updatePayload;// If the update payload indicates that there is a change or if there
16601// is a new ref we mark this as an update. All the work is done in commitWork.
16602if(updatePayload){markUpdate(workInProgress);}};updateHostText$1=function(current,workInProgress,oldText,newText){// If the text differs, mark it as an update. All the work in done in commitWork.
16603if(oldText!==newText){markUpdate(workInProgress);}};}function cutOffTailIfNeeded(renderState,hasRenderedATailFallback){switch(renderState.tailMode){case'hidden':{// Any insertions at the end of the tail list after this point
16604// should be invisible. If there are already mounted boundaries
16605// anything before them are not considered for collapsing.
16606// Therefore we need to go through the whole tail to find if
16607// there are any.
16608var tailNode=renderState.tail;var lastTailNode=null;while(tailNode!==null){if(tailNode.alternate!==null){lastTailNode=tailNode;}tailNode=tailNode.sibling;}// Next we're simply going to delete all insertions after the
16609// last rendered item.
16610if(lastTailNode===null){// All remaining items in the tail are insertions.
16611renderState.tail=null;}else{// Detach the insertion after the last node that was already
16612// inserted.
16613lastTailNode.sibling=null;}break;}case'collapsed':{// Any insertions at the end of the tail list after this point
16614// should be invisible. If there are already mounted boundaries
16615// anything before them are not considered for collapsing.
16616// Therefore we need to go through the whole tail to find if
16617// there are any.
16618var _tailNode=renderState.tail;var _lastTailNode=null;while(_tailNode!==null){if(_tailNode.alternate!==null){_lastTailNode=_tailNode;}_tailNode=_tailNode.sibling;}// Next we're simply going to delete all insertions after the
16619// last rendered item.
16620if(_lastTailNode===null){// All remaining items in the tail are insertions.
16621if(!hasRenderedATailFallback&&renderState.tail!==null){// We suspended during the head. We want to show at least one
16622// row at the tail. So we'll keep on and cut off the rest.
16623renderState.tail.sibling=null;}else{renderState.tail=null;}}else{// Detach the insertion after the last node that was already
16624// inserted.
16625_lastTailNode.sibling=null;}break;}}}function completeWork(current,workInProgress,renderExpirationTime){var newProps=workInProgress.pendingProps;switch(workInProgress.tag){case IndeterminateComponent:case LazyComponent:case SimpleMemoComponent:case FunctionComponent:case ForwardRef:case Fragment:case Mode:case Profiler:case ContextConsumer:case MemoComponent:return null;case ClassComponent:{var Component=workInProgress.type;if(isContextProvider(Component)){popContext(workInProgress);}return null;}case HostRoot:{popHostContainer(workInProgress);popTopLevelContextObject(workInProgress);var fiberRoot=workInProgress.stateNode;if(fiberRoot.pendingContext){fiberRoot.context=fiberRoot.pendingContext;fiberRoot.pendingContext=null;}if(current===null||current.child===null){// If we hydrated, pop so that we can delete any remaining children
16626// that weren't hydrated.
16627var wasHydrated=popHydrationState(workInProgress);if(wasHydrated){// If we hydrated, then we'll need to schedule an update for
16628// the commit side-effects on the root.
16629markUpdate(workInProgress);}}updateHostContainer(workInProgress);return null;}case HostComponent:{popHostContext(workInProgress);var rootContainerInstance=getRootHostContainer();var type=workInProgress.type;if(current!==null&&workInProgress.stateNode!=null){updateHostComponent$1(current,workInProgress,type,newProps,rootContainerInstance);if(current.ref!==workInProgress.ref){markRef$1(workInProgress);}}else{if(!newProps){if(!(workInProgress.stateNode!==null)){{throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");}}// This can happen when we abort work.
16630return null;}var currentHostContext=getHostContext();// TODO: Move createInstance to beginWork and keep it on a context
16631// "stack" as the parent. Then append children as we go in beginWork
16632// or completeWork depending on whether we want to add them top->down or
16633// bottom->up. Top->down is faster in IE11.
16634var _wasHydrated=popHydrationState(workInProgress);if(_wasHydrated){// TODO: Move this and createInstance step into the beginPhase
16635// to consolidate.
16636if(prepareToHydrateHostInstance(workInProgress,rootContainerInstance,currentHostContext)){// If changes to the hydrated node need to be applied at the
16637// commit-phase we mark this as such.
16638markUpdate(workInProgress);}}else{var instance=createInstance(type,newProps,rootContainerInstance,currentHostContext,workInProgress);appendAllChildren(instance,workInProgress,false,false);// This needs to be set before we mount Flare event listeners
16639workInProgress.stateNode=instance;// (eg DOM renderer supports auto-focus for certain elements).
16640// Make sure such renderers get scheduled for later work.
16641if(finalizeInitialChildren(instance,type,newProps,rootContainerInstance)){markUpdate(workInProgress);}}if(workInProgress.ref!==null){// If there is a ref on a host node we need to schedule a callback
16642markRef$1(workInProgress);}}return null;}case HostText:{var newText=newProps;if(current&&workInProgress.stateNode!=null){var oldText=current.memoizedProps;// If we have an alternate, that means this is an update and we need
16643// to schedule a side-effect to do the updates.
16644updateHostText$1(current,workInProgress,oldText,newText);}else{if(typeof newText!=='string'){if(!(workInProgress.stateNode!==null)){{throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");}}// This can happen when we abort work.
16645}var _rootContainerInstance=getRootHostContainer();var _currentHostContext=getHostContext();var _wasHydrated2=popHydrationState(workInProgress);if(_wasHydrated2){if(prepareToHydrateHostTextInstance(workInProgress)){markUpdate(workInProgress);}}else{workInProgress.stateNode=createTextInstance(newText,_rootContainerInstance,_currentHostContext,workInProgress);}}return null;}case SuspenseComponent:{popSuspenseContext(workInProgress);var nextState=workInProgress.memoizedState;if((workInProgress.effectTag&DidCapture)!==NoEffect){// Something suspended. Re-render with the fallback children.
16646workInProgress.expirationTime=renderExpirationTime;// Do not reset the effect list.
16647return workInProgress;}var nextDidTimeout=nextState!==null;var prevDidTimeout=false;if(current===null){if(workInProgress.memoizedProps.fallback!==undefined){popHydrationState(workInProgress);}}else{var prevState=current.memoizedState;prevDidTimeout=prevState!==null;if(!nextDidTimeout&&prevState!==null){// We just switched from the fallback to the normal children.
16648// Delete the fallback.
16649// TODO: Would it be better to store the fallback fragment on
16650// the stateNode during the begin phase?
16651var currentFallbackChild=current.child.sibling;if(currentFallbackChild!==null){// Deletions go at the beginning of the return fiber's effect list
16652var first=workInProgress.firstEffect;if(first!==null){workInProgress.firstEffect=currentFallbackChild;currentFallbackChild.nextEffect=first;}else{workInProgress.firstEffect=workInProgress.lastEffect=currentFallbackChild;currentFallbackChild.nextEffect=null;}currentFallbackChild.effectTag=Deletion;}}}if(nextDidTimeout&&!prevDidTimeout){// If this subtreee is running in blocking mode we can suspend,
16653// otherwise we won't suspend.
16654// TODO: This will still suspend a synchronous tree if anything
16655// in the concurrent tree already suspended during this render.
16656// This is a known bug.
16657if((workInProgress.mode&BlockingMode)!==NoMode){// TODO: Move this back to throwException because this is too late
16658// if this is a large tree which is common for initial loads. We
16659// don't know if we should restart a render or not until we get
16660// this marker, and this is too late.
16661// If this render already had a ping or lower pri updates,
16662// and this is the first time we know we're going to suspend we
16663// should be able to immediately restart from within throwException.
16664var hasInvisibleChildContext=current===null&&workInProgress.memoizedProps.unstable_avoidThisFallback!==true;if(hasInvisibleChildContext||hasSuspenseContext(suspenseStackCursor.current,InvisibleParentSuspenseContext)){// If this was in an invisible tree or a new render, then showing
16665// this boundary is ok.
16666renderDidSuspend();}else{// Otherwise, we're going to have to hide content so we should
16667// suspend for longer if possible.
16668renderDidSuspendDelayIfPossible();}}}{// TODO: Only schedule updates if these values are non equal, i.e. it changed.
16669if(nextDidTimeout||prevDidTimeout){// If this boundary just timed out, schedule an effect to attach a
16670// retry listener to the promise. This flag is also used to hide the
16671// primary children. In mutation mode, we also need the flag to
16672// *unhide* children that were previously hidden, so check if this
16673// is currently timed out, too.
16674workInProgress.effectTag|=Update;}}return null;}case HostPortal:popHostContainer(workInProgress);updateHostContainer(workInProgress);return null;case ContextProvider:// Pop provider fiber
16675popProvider(workInProgress);return null;case IncompleteClassComponent:{// Same as class component case. I put it down here so that the tags are
16676// sequential to ensure this switch is compiled to a jump table.
16677var _Component=workInProgress.type;if(isContextProvider(_Component)){popContext(workInProgress);}return null;}case SuspenseListComponent:{popSuspenseContext(workInProgress);var renderState=workInProgress.memoizedState;if(renderState===null){// We're running in the default, "independent" mode.
16678// We don't do anything in this mode.
16679return null;}var didSuspendAlready=(workInProgress.effectTag&DidCapture)!==NoEffect;var renderedTail=renderState.rendering;if(renderedTail===null){// We just rendered the head.
16680if(!didSuspendAlready){// This is the first pass. We need to figure out if anything is still
16681// suspended in the rendered set.
16682// If new content unsuspended, but there's still some content that
16683// didn't. Then we need to do a second pass that forces everything
16684// to keep showing their fallbacks.
16685// We might be suspended if something in this render pass suspended, or
16686// something in the previous committed pass suspended. Otherwise,
16687// there's no chance so we can skip the expensive call to
16688// findFirstSuspended.
16689var cannotBeSuspended=renderHasNotSuspendedYet()&&(current===null||(current.effectTag&DidCapture)===NoEffect);if(!cannotBeSuspended){var row=workInProgress.child;while(row!==null){var suspended=findFirstSuspended(row);if(suspended!==null){didSuspendAlready=true;workInProgress.effectTag|=DidCapture;cutOffTailIfNeeded(renderState,false);// If this is a newly suspended tree, it might not get committed as
16690// part of the second pass. In that case nothing will subscribe to
16691// its thennables. Instead, we'll transfer its thennables to the
16692// SuspenseList so that it can retry if they resolve.
16693// There might be multiple of these in the list but since we're
16694// going to wait for all of them anyway, it doesn't really matter
16695// which ones gets to ping. In theory we could get clever and keep
16696// track of how many dependencies remain but it gets tricky because
16697// in the meantime, we can add/remove/change items and dependencies.
16698// We might bail out of the loop before finding any but that
16699// doesn't matter since that means that the other boundaries that
16700// we did find already has their listeners attached.
16701var newThennables=suspended.updateQueue;if(newThennables!==null){workInProgress.updateQueue=newThennables;workInProgress.effectTag|=Update;}// Rerender the whole list, but this time, we'll force fallbacks
16702// to stay in place.
16703// Reset the effect list before doing the second pass since that's now invalid.
16704if(renderState.lastEffect===null){workInProgress.firstEffect=null;}workInProgress.lastEffect=renderState.lastEffect;// Reset the child fibers to their original state.
16705resetChildFibers(workInProgress,renderExpirationTime);// Set up the Suspense Context to force suspense and immediately
16706// rerender the children.
16707pushSuspenseContext(workInProgress,setShallowSuspenseContext(suspenseStackCursor.current,ForceSuspenseFallback));return workInProgress.child;}row=row.sibling;}}}else{cutOffTailIfNeeded(renderState,false);}// Next we're going to render the tail.
16708}else{// Append the rendered row to the child list.
16709if(!didSuspendAlready){var _suspended=findFirstSuspended(renderedTail);if(_suspended!==null){workInProgress.effectTag|=DidCapture;didSuspendAlready=true;// Ensure we transfer the update queue to the parent so that it doesn't
16710// get lost if this row ends up dropped during a second pass.
16711var _newThennables=_suspended.updateQueue;if(_newThennables!==null){workInProgress.updateQueue=_newThennables;workInProgress.effectTag|=Update;}cutOffTailIfNeeded(renderState,true);// This might have been modified.
16712if(renderState.tail===null&&renderState.tailMode==='hidden'&&!renderedTail.alternate){// We need to delete the row we just rendered.
16713// Reset the effect list to what it was before we rendered this
16714// child. The nested children have already appended themselves.
16715var lastEffect=workInProgress.lastEffect=renderState.lastEffect;// Remove any effects that were appended after this point.
16716if(lastEffect!==null){lastEffect.nextEffect=null;}// We're done.
16717return null;}}else if(// The time it took to render last row is greater than time until
16718// the expiration.
16719now()*2-renderState.renderingStartTime>renderState.tailExpiration&&renderExpirationTime>Never){// We have now passed our CPU deadline and we'll just give up further
16720// attempts to render the main content and only render fallbacks.
16721// The assumption is that this is usually faster.
16722workInProgress.effectTag|=DidCapture;didSuspendAlready=true;cutOffTailIfNeeded(renderState,false);// Since nothing actually suspended, there will nothing to ping this
16723// to get it started back up to attempt the next item. If we can show
16724// them, then they really have the same priority as this render.
16725// So we'll pick it back up the very next render pass once we've had
16726// an opportunity to yield for paint.
16727var nextPriority=renderExpirationTime-1;workInProgress.expirationTime=workInProgress.childExpirationTime=nextPriority;{markSpawnedWork(nextPriority);}}}if(renderState.isBackwards){// The effect list of the backwards tail will have been added
16728// to the end. This breaks the guarantee that life-cycles fire in
16729// sibling order but that isn't a strong guarantee promised by React.
16730// Especially since these might also just pop in during future commits.
16731// Append to the beginning of the list.
16732renderedTail.sibling=workInProgress.child;workInProgress.child=renderedTail;}else{var previousSibling=renderState.last;if(previousSibling!==null){previousSibling.sibling=renderedTail;}else{workInProgress.child=renderedTail;}renderState.last=renderedTail;}}if(renderState.tail!==null){// We still have tail rows to render.
16733if(renderState.tailExpiration===0){// Heuristic for how long we're willing to spend rendering rows
16734// until we just give up and show what we have so far.
16735var TAIL_EXPIRATION_TIMEOUT_MS=500;renderState.tailExpiration=now()+TAIL_EXPIRATION_TIMEOUT_MS;// TODO: This is meant to mimic the train model or JND but this
16736// is a per component value. It should really be since the start
16737// of the total render or last commit. Consider using something like
16738// globalMostRecentFallbackTime. That doesn't account for being
16739// suspended for part of the time or when it's a new render.
16740// It should probably use a global start time value instead.
16741}// Pop a row.
16742var next=renderState.tail;renderState.rendering=next;renderState.tail=next.sibling;renderState.lastEffect=workInProgress.lastEffect;renderState.renderingStartTime=now();next.sibling=null;// Restore the context.
16743// TODO: We can probably just avoid popping it instead and only
16744// setting it the first time we go from not suspended to suspended.
16745var suspenseContext=suspenseStackCursor.current;if(didSuspendAlready){suspenseContext=setShallowSuspenseContext(suspenseContext,ForceSuspenseFallback);}else{suspenseContext=setDefaultShallowSuspenseContext(suspenseContext);}pushSuspenseContext(workInProgress,suspenseContext);// Do a pass over the next row.
16746return next;}return null;}}{{throw Error("Unknown unit of work tag ("+workInProgress.tag+"). This error is likely caused by a bug in React. Please file an issue.");}}}function unwindWork(workInProgress,renderExpirationTime){switch(workInProgress.tag){case ClassComponent:{var Component=workInProgress.type;if(isContextProvider(Component)){popContext(workInProgress);}var effectTag=workInProgress.effectTag;if(effectTag&ShouldCapture){workInProgress.effectTag=effectTag&~ShouldCapture|DidCapture;return workInProgress;}return null;}case HostRoot:{popHostContainer(workInProgress);popTopLevelContextObject(workInProgress);var _effectTag=workInProgress.effectTag;if(!((_effectTag&DidCapture)===NoEffect)){{throw Error("The root failed to unmount after an error. This is likely a bug in React. Please file an issue.");}}workInProgress.effectTag=_effectTag&~ShouldCapture|DidCapture;return workInProgress;}case HostComponent:{// TODO: popHydrationState
16747popHostContext(workInProgress);return null;}case SuspenseComponent:{popSuspenseContext(workInProgress);var _effectTag2=workInProgress.effectTag;if(_effectTag2&ShouldCapture){workInProgress.effectTag=_effectTag2&~ShouldCapture|DidCapture;// Captured a suspense effect. Re-render the boundary.
16748return workInProgress;}return null;}case SuspenseListComponent:{popSuspenseContext(workInProgress);// SuspenseList doesn't actually catch anything. It should've been
16749// caught by a nested boundary. If not, it should bubble through.
16750return null;}case HostPortal:popHostContainer(workInProgress);return null;case ContextProvider:popProvider(workInProgress);return null;default:return null;}}function unwindInterruptedWork(interruptedWork){switch(interruptedWork.tag){case ClassComponent:{var childContextTypes=interruptedWork.type.childContextTypes;if(childContextTypes!==null&&childContextTypes!==undefined){popContext(interruptedWork);}break;}case HostRoot:{popHostContainer(interruptedWork);popTopLevelContextObject(interruptedWork);break;}case HostComponent:{popHostContext(interruptedWork);break;}case HostPortal:popHostContainer(interruptedWork);break;case SuspenseComponent:popSuspenseContext(interruptedWork);break;case SuspenseListComponent:popSuspenseContext(interruptedWork);break;case ContextProvider:popProvider(interruptedWork);break;}}function createCapturedValue(value,source){// If the value is an error, call this function immediately after it is thrown
16751// so the stack is accurate.
16752return{value:value,source:source,stack:getStackByFiberInDevAndProd(source)};}function logCapturedError(capturedError){var error=capturedError.error;{var componentName=capturedError.componentName,componentStack=capturedError.componentStack,errorBoundaryName=capturedError.errorBoundaryName,errorBoundaryFound=capturedError.errorBoundaryFound,willRetry=capturedError.willRetry;// Browsers support silencing uncaught errors by calling
16753// `preventDefault()` in window `error` handler.
16754// We record this information as an expando on the error.
16755if(error!=null&&error._suppressLogging){if(errorBoundaryFound&&willRetry){// The error is recoverable and was silenced.
16756// Ignore it and don't print the stack addendum.
16757// This is handy for testing error boundaries without noise.
16758return;}// The error is fatal. Since the silencing might have
16759// been accidental, we'll surface it anyway.
16760// However, the browser would have silenced the original error
16761// so we'll print it first, and then print the stack addendum.
16762console['error'](error);// Don't transform to our wrapper
16763// For a more detailed description of this block, see:
16764// https://github.com/facebook/react/pull/13384
16765}var componentNameMessage=componentName?"The above error occurred in the <"+componentName+"> component:":'The above error occurred in one of your React components:';var errorBoundaryMessage;// errorBoundaryFound check is sufficient; errorBoundaryName check is to satisfy Flow.
16766if(errorBoundaryFound&&errorBoundaryName){if(willRetry){errorBoundaryMessage="React will try to recreate this component tree from scratch "+("using the error boundary you provided, "+errorBoundaryName+".");}else{errorBoundaryMessage="This error was initially handled by the error boundary "+errorBoundaryName+".\n"+"Recreating the tree from scratch failed so React will unmount the tree.";}}else{errorBoundaryMessage='Consider adding an error boundary to your tree to customize error handling behavior.\n'+'Visit https://fb.me/react-error-boundaries to learn more about error boundaries.';}var combinedMessage=""+componentNameMessage+componentStack+"\n\n"+(""+errorBoundaryMessage);// In development, we provide our own message with just the component stack.
16767// We don't include the original error message and JS stack because the browser
16768// has already printed it. Even if the application swallows the error, it is still
16769// displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.
16770console['error'](combinedMessage);// Don't transform to our wrapper
16771}}var didWarnAboutUndefinedSnapshotBeforeUpdate=null;{didWarnAboutUndefinedSnapshotBeforeUpdate=new Set();}var PossiblyWeakSet=typeof WeakSet==='function'?WeakSet:Set;function logError(boundary,errorInfo){var source=errorInfo.source;var stack=errorInfo.stack;if(stack===null&&source!==null){stack=getStackByFiberInDevAndProd(source);}var capturedError={componentName:source!==null?getComponentName(source.type):null,componentStack:stack!==null?stack:'',error:errorInfo.value,errorBoundary:null,errorBoundaryName:null,errorBoundaryFound:false,willRetry:false};if(boundary!==null&&boundary.tag===ClassComponent){capturedError.errorBoundary=boundary.stateNode;capturedError.errorBoundaryName=getComponentName(boundary.type);capturedError.errorBoundaryFound=true;capturedError.willRetry=true;}try{logCapturedError(capturedError);}catch(e){// This method must not throw, or React internal state will get messed up.
16772// If console.error is overridden, or logCapturedError() shows a dialog that throws,
16773// we want to report this error outside of the normal stack as a last resort.
16774// https://github.com/facebook/react/issues/13188
16775setTimeout(function(){throw e;});}}var callComponentWillUnmountWithTimer=function(current,instance){startPhaseTimer(current,'componentWillUnmount');instance.props=current.memoizedProps;instance.state=current.memoizedState;instance.componentWillUnmount();stopPhaseTimer();};// Capture errors so they don't interrupt unmounting.
16776function safelyCallComponentWillUnmount(current,instance){{invokeGuardedCallback(null,callComponentWillUnmountWithTimer,null,current,instance);if(hasCaughtError()){var unmountError=clearCaughtError();captureCommitPhaseError(current,unmountError);}}}function safelyDetachRef(current){var ref=current.ref;if(ref!==null){if(typeof ref==='function'){{invokeGuardedCallback(null,ref,null,null);if(hasCaughtError()){var refError=clearCaughtError();captureCommitPhaseError(current,refError);}}}else{ref.current=null;}}}function safelyCallDestroy(current,destroy){{invokeGuardedCallback(null,destroy,null);if(hasCaughtError()){var error=clearCaughtError();captureCommitPhaseError(current,error);}}}function commitBeforeMutationLifeCycles(current,finishedWork){switch(finishedWork.tag){case FunctionComponent:case ForwardRef:case SimpleMemoComponent:case Block:{return;}case ClassComponent:{if(finishedWork.effectTag&Snapshot){if(current!==null){var prevProps=current.memoizedProps;var prevState=current.memoizedState;startPhaseTimer(finishedWork,'getSnapshotBeforeUpdate');var instance=finishedWork.stateNode;// We could update instance props and state here,
16777// but instead we rely on them being set during last render.
16778// TODO: revisit this when we implement resuming.
16779{if(finishedWork.type===finishedWork.elementType&&!didWarnAboutReassigningProps){if(instance.props!==finishedWork.memoizedProps){error('Expected %s props to match memoized props before '+'getSnapshotBeforeUpdate. '+'This might either be because of a bug in React, or because '+'a component reassigns its own `this.props`. '+'Please file an issue.',getComponentName(finishedWork.type)||'instance');}if(instance.state!==finishedWork.memoizedState){error('Expected %s state to match memoized state before '+'getSnapshotBeforeUpdate. '+'This might either be because of a bug in React, or because '+'a component reassigns its own `this.props`. '+'Please file an issue.',getComponentName(finishedWork.type)||'instance');}}}var snapshot=instance.getSnapshotBeforeUpdate(finishedWork.elementType===finishedWork.type?prevProps:resolveDefaultProps(finishedWork.type,prevProps),prevState);{var didWarnSet=didWarnAboutUndefinedSnapshotBeforeUpdate;if(snapshot===undefined&&!didWarnSet.has(finishedWork.type)){didWarnSet.add(finishedWork.type);error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) '+'must be returned. You have returned undefined.',getComponentName(finishedWork.type));}}instance.__reactInternalSnapshotBeforeUpdate=snapshot;stopPhaseTimer();}}return;}case HostRoot:case HostComponent:case HostText:case HostPortal:case IncompleteClassComponent:// Nothing to do for these component types
16780return;}{{throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.");}}}function commitHookEffectListUnmount(tag,finishedWork){var updateQueue=finishedWork.updateQueue;var lastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){var firstEffect=lastEffect.next;var effect=firstEffect;do{if((effect.tag&tag)===tag){// Unmount
16781var destroy=effect.destroy;effect.destroy=undefined;if(destroy!==undefined){destroy();}}effect=effect.next;}while(effect!==firstEffect);}}function commitHookEffectListMount(tag,finishedWork){var updateQueue=finishedWork.updateQueue;var lastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){var firstEffect=lastEffect.next;var effect=firstEffect;do{if((effect.tag&tag)===tag){// Mount
16782var create=effect.create;effect.destroy=create();{var destroy=effect.destroy;if(destroy!==undefined&&typeof destroy!=='function'){var addendum=void 0;if(destroy===null){addendum=' You returned null. If your effect does not require clean '+'up, return undefined (or nothing).';}else if(typeof destroy.then==='function'){addendum='\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. '+'Instead, write the async function inside your effect '+'and call it immediately:\n\n'+'useEffect(() => {\n'+'  async function fetchData() {\n'+'    // You can await here\n'+'    const response = await MyAPI.getData(someId);\n'+'    // ...\n'+'  }\n'+'  fetchData();\n'+"}, [someId]); // Or [] if effect doesn't need props or state\n\n"+'Learn more about data fetching with Hooks: https://fb.me/react-hooks-data-fetching';}else{addendum=' You returned: '+destroy;}error('An effect function must not return anything besides a function, '+'which is used for clean-up.%s%s',addendum,getStackByFiberInDevAndProd(finishedWork));}}}effect=effect.next;}while(effect!==firstEffect);}}function commitPassiveHookEffects(finishedWork){if((finishedWork.effectTag&Passive)!==NoEffect){switch(finishedWork.tag){case FunctionComponent:case ForwardRef:case SimpleMemoComponent:case Block:{// TODO (#17945) We should call all passive destroy functions (for all fibers)
16783// before calling any create functions. The current approach only serializes
16784// these for a single fiber.
16785commitHookEffectListUnmount(Passive$1|HasEffect,finishedWork);commitHookEffectListMount(Passive$1|HasEffect,finishedWork);break;}}}}function commitLifeCycles(finishedRoot,current,finishedWork,committedExpirationTime){switch(finishedWork.tag){case FunctionComponent:case ForwardRef:case SimpleMemoComponent:case Block:{// At this point layout effects have already been destroyed (during mutation phase).
16786// This is done to prevent sibling component effects from interfering with each other,
16787// e.g. a destroy function in one component should never override a ref set
16788// by a create function in another component during the same commit.
16789commitHookEffectListMount(Layout|HasEffect,finishedWork);return;}case ClassComponent:{var instance=finishedWork.stateNode;if(finishedWork.effectTag&Update){if(current===null){startPhaseTimer(finishedWork,'componentDidMount');// We could update instance props and state here,
16790// but instead we rely on them being set during last render.
16791// TODO: revisit this when we implement resuming.
16792{if(finishedWork.type===finishedWork.elementType&&!didWarnAboutReassigningProps){if(instance.props!==finishedWork.memoizedProps){error('Expected %s props to match memoized props before '+'componentDidMount. '+'This might either be because of a bug in React, or because '+'a component reassigns its own `this.props`. '+'Please file an issue.',getComponentName(finishedWork.type)||'instance');}if(instance.state!==finishedWork.memoizedState){error('Expected %s state to match memoized state before '+'componentDidMount. '+'This might either be because of a bug in React, or because '+'a component reassigns its own `this.props`. '+'Please file an issue.',getComponentName(finishedWork.type)||'instance');}}}instance.componentDidMount();stopPhaseTimer();}else{var prevProps=finishedWork.elementType===finishedWork.type?current.memoizedProps:resolveDefaultProps(finishedWork.type,current.memoizedProps);var prevState=current.memoizedState;startPhaseTimer(finishedWork,'componentDidUpdate');// We could update instance props and state here,
16793// but instead we rely on them being set during last render.
16794// TODO: revisit this when we implement resuming.
16795{if(finishedWork.type===finishedWork.elementType&&!didWarnAboutReassigningProps){if(instance.props!==finishedWork.memoizedProps){error('Expected %s props to match memoized props before '+'componentDidUpdate. '+'This might either be because of a bug in React, or because '+'a component reassigns its own `this.props`. '+'Please file an issue.',getComponentName(finishedWork.type)||'instance');}if(instance.state!==finishedWork.memoizedState){error('Expected %s state to match memoized state before '+'componentDidUpdate. '+'This might either be because of a bug in React, or because '+'a component reassigns its own `this.props`. '+'Please file an issue.',getComponentName(finishedWork.type)||'instance');}}}instance.componentDidUpdate(prevProps,prevState,instance.__reactInternalSnapshotBeforeUpdate);stopPhaseTimer();}}var updateQueue=finishedWork.updateQueue;if(updateQueue!==null){{if(finishedWork.type===finishedWork.elementType&&!didWarnAboutReassigningProps){if(instance.props!==finishedWork.memoizedProps){error('Expected %s props to match memoized props before '+'processing the update queue. '+'This might either be because of a bug in React, or because '+'a component reassigns its own `this.props`. '+'Please file an issue.',getComponentName(finishedWork.type)||'instance');}if(instance.state!==finishedWork.memoizedState){error('Expected %s state to match memoized state before '+'processing the update queue. '+'This might either be because of a bug in React, or because '+'a component reassigns its own `this.props`. '+'Please file an issue.',getComponentName(finishedWork.type)||'instance');}}}// We could update instance props and state here,
16796// but instead we rely on them being set during last render.
16797// TODO: revisit this when we implement resuming.
16798commitUpdateQueue(finishedWork,updateQueue,instance);}return;}case HostRoot:{var _updateQueue=finishedWork.updateQueue;if(_updateQueue!==null){var _instance=null;if(finishedWork.child!==null){switch(finishedWork.child.tag){case HostComponent:_instance=getPublicInstance(finishedWork.child.stateNode);break;case ClassComponent:_instance=finishedWork.child.stateNode;break;}}commitUpdateQueue(finishedWork,_updateQueue,_instance);}return;}case HostComponent:{var _instance2=finishedWork.stateNode;// Renderers may schedule work to be done after host components are mounted
16799// (eg DOM renderer may schedule auto-focus for inputs and form controls).
16800// These effects should only be committed when components are first mounted,
16801// aka when there is no current/alternate.
16802if(current===null&&finishedWork.effectTag&Update){var type=finishedWork.type;var props=finishedWork.memoizedProps;commitMount(_instance2,type,props);}return;}case HostText:{// We have no life-cycles associated with text.
16803return;}case HostPortal:{// We have no life-cycles associated with portals.
16804return;}case Profiler:{{var onRender=finishedWork.memoizedProps.onRender;if(typeof onRender==='function'){{onRender(finishedWork.memoizedProps.id,current===null?'mount':'update',finishedWork.actualDuration,finishedWork.treeBaseDuration,finishedWork.actualStartTime,getCommitTime(),finishedRoot.memoizedInteractions);}}}return;}case SuspenseComponent:{commitSuspenseHydrationCallbacks(finishedRoot,finishedWork);return;}case SuspenseListComponent:case IncompleteClassComponent:case FundamentalComponent:case ScopeComponent:return;}{{throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.");}}}function hideOrUnhideAllChildren(finishedWork,isHidden){{// We only have the top Fiber that was inserted but we need to recurse down its
16805// children to find all the terminal nodes.
16806var node=finishedWork;while(true){if(node.tag===HostComponent){var instance=node.stateNode;if(isHidden){hideInstance(instance);}else{unhideInstance(node.stateNode,node.memoizedProps);}}else if(node.tag===HostText){var _instance3=node.stateNode;if(isHidden){hideTextInstance(_instance3);}else{unhideTextInstance(_instance3,node.memoizedProps);}}else if(node.tag===SuspenseComponent&&node.memoizedState!==null&&node.memoizedState.dehydrated===null){// Found a nested Suspense component that timed out. Skip over the
16807// primary child fragment, which should remain hidden.
16808var fallbackChildFragment=node.child.sibling;fallbackChildFragment.return=node;node=fallbackChildFragment;continue;}else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===finishedWork){return;}while(node.sibling===null){if(node.return===null||node.return===finishedWork){return;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}}}function commitAttachRef(finishedWork){var ref=finishedWork.ref;if(ref!==null){var instance=finishedWork.stateNode;var instanceToUse;switch(finishedWork.tag){case HostComponent:instanceToUse=getPublicInstance(instance);break;default:instanceToUse=instance;}// Moved outside to ensure DCE works with this flag
16809if(typeof ref==='function'){ref(instanceToUse);}else{{if(!ref.hasOwnProperty('current')){error('Unexpected ref object provided for %s. '+'Use either a ref-setter function or React.createRef().%s',getComponentName(finishedWork.type),getStackByFiberInDevAndProd(finishedWork));}}ref.current=instanceToUse;}}}function commitDetachRef(current){var currentRef=current.ref;if(currentRef!==null){if(typeof currentRef==='function'){currentRef(null);}else{currentRef.current=null;}}}// User-originating errors (lifecycles and refs) should not interrupt
16810// deletion, so don't let them throw. Host-originating errors should
16811// interrupt deletion, so it's okay
16812function commitUnmount(finishedRoot,current,renderPriorityLevel){onCommitUnmount(current);switch(current.tag){case FunctionComponent:case ForwardRef:case MemoComponent:case SimpleMemoComponent:case Block:{var updateQueue=current.updateQueue;if(updateQueue!==null){var lastEffect=updateQueue.lastEffect;if(lastEffect!==null){var firstEffect=lastEffect.next;{// When the owner fiber is deleted, the destroy function of a passive
16813// effect hook is called during the synchronous commit phase. This is
16814// a concession to implementation complexity. Calling it in the
16815// passive effect phase (like they usually are, when dependencies
16816// change during an update) would require either traversing the
16817// children of the deleted fiber again, or including unmount effects
16818// as part of the fiber effect list.
16819//
16820// Because this is during the sync commit phase, we need to change
16821// the priority.
16822//
16823// TODO: Reconsider this implementation trade off.
16824var priorityLevel=renderPriorityLevel>NormalPriority?NormalPriority:renderPriorityLevel;runWithPriority$1(priorityLevel,function(){var effect=firstEffect;do{var _destroy=effect.destroy;if(_destroy!==undefined){safelyCallDestroy(current,_destroy);}effect=effect.next;}while(effect!==firstEffect);});}}}return;}case ClassComponent:{safelyDetachRef(current);var instance=current.stateNode;if(typeof instance.componentWillUnmount==='function'){safelyCallComponentWillUnmount(current,instance);}return;}case HostComponent:{safelyDetachRef(current);return;}case HostPortal:{// TODO: this is recursive.
16825// We are also not using this parent because
16826// the portal will get pushed immediately.
16827{unmountHostComponents(finishedRoot,current,renderPriorityLevel);}return;}case FundamentalComponent:{return;}case DehydratedFragment:{return;}case ScopeComponent:{return;}}}function commitNestedUnmounts(finishedRoot,root,renderPriorityLevel){// While we're inside a removed host node we don't want to call
16828// removeChild on the inner nodes because they're removed by the top
16829// call anyway. We also want to call componentWillUnmount on all
16830// composites before this host node is removed from the tree. Therefore
16831// we do an inner loop while we're still inside the host node.
16832var node=root;while(true){commitUnmount(finishedRoot,node,renderPriorityLevel);// Visit children because they may contain more composite or host nodes.
16833// Skip portals because commitUnmount() currently visits them recursively.
16834if(node.child!==null&&// If we use mutation we drill down into portals using commitUnmount above.
16835// If we don't use mutation we drill down into portals here instead.
16836node.tag!==HostPortal){node.child.return=node;node=node.child;continue;}if(node===root){return;}while(node.sibling===null){if(node.return===null||node.return===root){return;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}}function detachFiber(current){var alternate=current.alternate;// Cut off the return pointers to disconnect it from the tree. Ideally, we
16837// should clear the child pointer of the parent alternate to let this
16838// get GC:ed but we don't know which for sure which parent is the current
16839// one so we'll settle for GC:ing the subtree of this child. This child
16840// itself will be GC:ed when the parent updates the next time.
16841current.return=null;current.child=null;current.memoizedState=null;current.updateQueue=null;current.dependencies=null;current.alternate=null;current.firstEffect=null;current.lastEffect=null;current.pendingProps=null;current.memoizedProps=null;current.stateNode=null;if(alternate!==null){detachFiber(alternate);}}function getHostParentFiber(fiber){var parent=fiber.return;while(parent!==null){if(isHostParent(parent)){return parent;}parent=parent.return;}{{throw Error("Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.");}}}function isHostParent(fiber){return fiber.tag===HostComponent||fiber.tag===HostRoot||fiber.tag===HostPortal;}function getHostSibling(fiber){// We're going to search forward into the tree until we find a sibling host
16842// node. Unfortunately, if multiple insertions are done in a row we have to
16843// search past them. This leads to exponential search for the next sibling.
16844// TODO: Find a more efficient way to do this.
16845var node=fiber;siblings:while(true){// If we didn't find anything, let's try the next sibling.
16846while(node.sibling===null){if(node.return===null||isHostParent(node.return)){// If we pop out of the root or hit the parent the fiber we are the
16847// last sibling.
16848return null;}node=node.return;}node.sibling.return=node.return;node=node.sibling;while(node.tag!==HostComponent&&node.tag!==HostText&&node.tag!==DehydratedFragment){// If it is not host node and, we might have a host node inside it.
16849// Try to search down until we find one.
16850if(node.effectTag&Placement){// If we don't have a child, try the siblings instead.
16851continue siblings;}// If we don't have a child, try the siblings instead.
16852// We also skip portals because they are not part of this host tree.
16853if(node.child===null||node.tag===HostPortal){continue siblings;}else{node.child.return=node;node=node.child;}}// Check if this host node is stable or about to be placed.
16854if(!(node.effectTag&Placement)){// Found it!
16855return node.stateNode;}}}function commitPlacement(finishedWork){var parentFiber=getHostParentFiber(finishedWork);// Note: these two variables *must* always be updated together.
16856var parent;var isContainer;var parentStateNode=parentFiber.stateNode;switch(parentFiber.tag){case HostComponent:parent=parentStateNode;isContainer=false;break;case HostRoot:parent=parentStateNode.containerInfo;isContainer=true;break;case HostPortal:parent=parentStateNode.containerInfo;isContainer=true;break;case FundamentalComponent:// eslint-disable-next-line-no-fallthrough
16857default:{{throw Error("Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.");}}}if(parentFiber.effectTag&ContentReset){// Reset the text content of the parent before doing any insertions
16858resetTextContent(parent);// Clear ContentReset from the effect tag
16859parentFiber.effectTag&=~ContentReset;}var before=getHostSibling(finishedWork);// We only have the top Fiber that was inserted but we need to recurse down its
16860// children to find all the terminal nodes.
16861if(isContainer){insertOrAppendPlacementNodeIntoContainer(finishedWork,before,parent);}else{insertOrAppendPlacementNode(finishedWork,before,parent);}}function insertOrAppendPlacementNodeIntoContainer(node,before,parent){var tag=node.tag;var isHost=tag===HostComponent||tag===HostText;if(isHost||enableFundamentalAPI){var stateNode=isHost?node.stateNode:node.stateNode.instance;if(before){insertInContainerBefore(parent,stateNode,before);}else{appendChildToContainer(parent,stateNode);}}else if(tag===HostPortal);else{var child=node.child;if(child!==null){insertOrAppendPlacementNodeIntoContainer(child,before,parent);var sibling=child.sibling;while(sibling!==null){insertOrAppendPlacementNodeIntoContainer(sibling,before,parent);sibling=sibling.sibling;}}}}function insertOrAppendPlacementNode(node,before,parent){var tag=node.tag;var isHost=tag===HostComponent||tag===HostText;if(isHost||enableFundamentalAPI){var stateNode=isHost?node.stateNode:node.stateNode.instance;if(before){insertBefore(parent,stateNode,before);}else{appendChild(parent,stateNode);}}else if(tag===HostPortal);else{var child=node.child;if(child!==null){insertOrAppendPlacementNode(child,before,parent);var sibling=child.sibling;while(sibling!==null){insertOrAppendPlacementNode(sibling,before,parent);sibling=sibling.sibling;}}}}function unmountHostComponents(finishedRoot,current,renderPriorityLevel){// We only have the top Fiber that was deleted but we need to recurse down its
16862// children to find all the terminal nodes.
16863var node=current;// Each iteration, currentParent is populated with node's host parent if not
16864// currentParentIsValid.
16865var currentParentIsValid=false;// Note: these two variables *must* always be updated together.
16866var currentParent;var currentParentIsContainer;while(true){if(!currentParentIsValid){var parent=node.return;findParent:while(true){if(!(parent!==null)){{throw Error("Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.");}}var parentStateNode=parent.stateNode;switch(parent.tag){case HostComponent:currentParent=parentStateNode;currentParentIsContainer=false;break findParent;case HostRoot:currentParent=parentStateNode.containerInfo;currentParentIsContainer=true;break findParent;case HostPortal:currentParent=parentStateNode.containerInfo;currentParentIsContainer=true;break findParent;}parent=parent.return;}currentParentIsValid=true;}if(node.tag===HostComponent||node.tag===HostText){commitNestedUnmounts(finishedRoot,node,renderPriorityLevel);// After all the children have unmounted, it is now safe to remove the
16867// node from the tree.
16868if(currentParentIsContainer){removeChildFromContainer(currentParent,node.stateNode);}else{removeChild(currentParent,node.stateNode);}// Don't visit children because we already visited them.
16869}else if(node.tag===HostPortal){if(node.child!==null){// When we go into a portal, it becomes the parent to remove from.
16870// We will reassign it back when we pop the portal on the way up.
16871currentParent=node.stateNode.containerInfo;currentParentIsContainer=true;// Visit children because portals might contain host components.
16872node.child.return=node;node=node.child;continue;}}else{commitUnmount(finishedRoot,node,renderPriorityLevel);// Visit children because we may find more host components below.
16873if(node.child!==null){node.child.return=node;node=node.child;continue;}}if(node===current){return;}while(node.sibling===null){if(node.return===null||node.return===current){return;}node=node.return;if(node.tag===HostPortal){// When we go out of the portal, we need to restore the parent.
16874// Since we don't keep a stack of them, we will search for it.
16875currentParentIsValid=false;}}node.sibling.return=node.return;node=node.sibling;}}function commitDeletion(finishedRoot,current,renderPriorityLevel){{// Recursively delete all host nodes from the parent.
16876// Detach refs and call componentWillUnmount() on the whole subtree.
16877unmountHostComponents(finishedRoot,current,renderPriorityLevel);}detachFiber(current);}function commitWork(current,finishedWork){switch(finishedWork.tag){case FunctionComponent:case ForwardRef:case MemoComponent:case SimpleMemoComponent:case Block:{// Layout effects are destroyed during the mutation phase so that all
16878// destroy functions for all fibers are called before any create functions.
16879// This prevents sibling component effects from interfering with each other,
16880// e.g. a destroy function in one component should never override a ref set
16881// by a create function in another component during the same commit.
16882commitHookEffectListUnmount(Layout|HasEffect,finishedWork);return;}case ClassComponent:{return;}case HostComponent:{var instance=finishedWork.stateNode;if(instance!=null){// Commit the work prepared earlier.
16883var newProps=finishedWork.memoizedProps;// For hydration we reuse the update path but we treat the oldProps
16884// as the newProps. The updatePayload will contain the real change in
16885// this case.
16886var oldProps=current!==null?current.memoizedProps:newProps;var type=finishedWork.type;// TODO: Type the updateQueue to be specific to host components.
16887var updatePayload=finishedWork.updateQueue;finishedWork.updateQueue=null;if(updatePayload!==null){commitUpdate(instance,updatePayload,type,oldProps,newProps);}}return;}case HostText:{if(!(finishedWork.stateNode!==null)){{throw Error("This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.");}}var textInstance=finishedWork.stateNode;var newText=finishedWork.memoizedProps;// For hydration we reuse the update path but we treat the oldProps
16888// as the newProps. The updatePayload will contain the real change in
16889// this case.
16890var oldText=current!==null?current.memoizedProps:newText;commitTextUpdate(textInstance,oldText,newText);return;}case HostRoot:{{var _root=finishedWork.stateNode;if(_root.hydrate){// We've just hydrated. No need to hydrate again.
16891_root.hydrate=false;commitHydratedContainer(_root.containerInfo);}}return;}case Profiler:{return;}case SuspenseComponent:{commitSuspenseComponent(finishedWork);attachSuspenseRetryListeners(finishedWork);return;}case SuspenseListComponent:{attachSuspenseRetryListeners(finishedWork);return;}case IncompleteClassComponent:{return;}}{{throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.");}}}function commitSuspenseComponent(finishedWork){var newState=finishedWork.memoizedState;var newDidTimeout;var primaryChildParent=finishedWork;if(newState===null){newDidTimeout=false;}else{newDidTimeout=true;primaryChildParent=finishedWork.child;markCommitTimeOfFallback();}if(primaryChildParent!==null){hideOrUnhideAllChildren(primaryChildParent,newDidTimeout);}}function commitSuspenseHydrationCallbacks(finishedRoot,finishedWork){var newState=finishedWork.memoizedState;if(newState===null){var current=finishedWork.alternate;if(current!==null){var prevState=current.memoizedState;if(prevState!==null){var suspenseInstance=prevState.dehydrated;if(suspenseInstance!==null){commitHydratedSuspenseInstance(suspenseInstance);}}}}}function attachSuspenseRetryListeners(finishedWork){// If this boundary just timed out, then it will have a set of thenables.
16892// For each thenable, attach a listener so that when it resolves, React
16893// attempts to re-render the boundary in the primary (pre-timeout) state.
16894var thenables=finishedWork.updateQueue;if(thenables!==null){finishedWork.updateQueue=null;var retryCache=finishedWork.stateNode;if(retryCache===null){retryCache=finishedWork.stateNode=new PossiblyWeakSet();}thenables.forEach(function(thenable){// Memoize using the boundary fiber to prevent redundant listeners.
16895var retry=resolveRetryThenable.bind(null,finishedWork,thenable);if(!retryCache.has(thenable)){{if(thenable.__reactDoNotTraceInteractions!==true){retry=tracing.unstable_wrap(retry);}}retryCache.add(thenable);thenable.then(retry,retry);}});}}function commitResetTextContent(current){resetTextContent(current.stateNode);}var PossiblyWeakMap$1=typeof WeakMap==='function'?WeakMap:Map;function createRootErrorUpdate(fiber,errorInfo,expirationTime){var update=createUpdate(expirationTime,null);// Unmount the root by rendering null.
16896update.tag=CaptureUpdate;// Caution: React DevTools currently depends on this property
16897// being called "element".
16898update.payload={element:null};var error=errorInfo.value;update.callback=function(){onUncaughtError(error);logError(fiber,errorInfo);};return update;}function createClassErrorUpdate(fiber,errorInfo,expirationTime){var update=createUpdate(expirationTime,null);update.tag=CaptureUpdate;var getDerivedStateFromError=fiber.type.getDerivedStateFromError;if(typeof getDerivedStateFromError==='function'){var error$1=errorInfo.value;update.payload=function(){logError(fiber,errorInfo);return getDerivedStateFromError(error$1);};}var inst=fiber.stateNode;if(inst!==null&&typeof inst.componentDidCatch==='function'){update.callback=function callback(){{markFailedErrorBoundaryForHotReloading(fiber);}if(typeof getDerivedStateFromError!=='function'){// To preserve the preexisting retry behavior of error boundaries,
16899// we keep track of which ones already failed during this batch.
16900// This gets reset before we yield back to the browser.
16901// TODO: Warn in strict mode if getDerivedStateFromError is
16902// not defined.
16903markLegacyErrorBoundaryAsFailed(this);// Only log here if componentDidCatch is the only error boundary method defined
16904logError(fiber,errorInfo);}var error$1=errorInfo.value;var stack=errorInfo.stack;this.componentDidCatch(error$1,{componentStack:stack!==null?stack:''});{if(typeof getDerivedStateFromError!=='function'){// If componentDidCatch is the only error boundary method defined,
16905// then it needs to call setState to recover from errors.
16906// If no state update is scheduled then the boundary will swallow the error.
16907if(fiber.expirationTime!==Sync){error('%s: Error boundaries should implement getDerivedStateFromError(). '+'In that method, return a state update to display an error message or fallback UI.',getComponentName(fiber.type)||'Unknown');}}}};}else{update.callback=function(){markFailedErrorBoundaryForHotReloading(fiber);};}return update;}function attachPingListener(root,renderExpirationTime,thenable){// Attach a listener to the promise to "ping" the root and retry. But
16908// only if one does not already exist for the current render expiration
16909// time (which acts like a "thread ID" here).
16910var pingCache=root.pingCache;var threadIDs;if(pingCache===null){pingCache=root.pingCache=new PossiblyWeakMap$1();threadIDs=new Set();pingCache.set(thenable,threadIDs);}else{threadIDs=pingCache.get(thenable);if(threadIDs===undefined){threadIDs=new Set();pingCache.set(thenable,threadIDs);}}if(!threadIDs.has(renderExpirationTime)){// Memoize using the thread ID to prevent redundant listeners.
16911threadIDs.add(renderExpirationTime);var ping=pingSuspendedRoot.bind(null,root,thenable,renderExpirationTime);thenable.then(ping,ping);}}function throwException(root,returnFiber,sourceFiber,value,renderExpirationTime){// The source fiber did not complete.
16912sourceFiber.effectTag|=Incomplete;// Its effect list is no longer valid.
16913sourceFiber.firstEffect=sourceFiber.lastEffect=null;if(value!==null&&typeof value==='object'&&typeof value.then==='function'){// This is a thenable.
16914var thenable=value;if((sourceFiber.mode&BlockingMode)===NoMode){// Reset the memoizedState to what it was before we attempted
16915// to render it.
16916var currentSource=sourceFiber.alternate;if(currentSource){sourceFiber.updateQueue=currentSource.updateQueue;sourceFiber.memoizedState=currentSource.memoizedState;sourceFiber.expirationTime=currentSource.expirationTime;}else{sourceFiber.updateQueue=null;sourceFiber.memoizedState=null;}}var hasInvisibleParentBoundary=hasSuspenseContext(suspenseStackCursor.current,InvisibleParentSuspenseContext);// Schedule the nearest Suspense to re-render the timed out view.
16917var _workInProgress=returnFiber;do{if(_workInProgress.tag===SuspenseComponent&&shouldCaptureSuspense(_workInProgress,hasInvisibleParentBoundary)){// Found the nearest boundary.
16918// Stash the promise on the boundary fiber. If the boundary times out, we'll
16919// attach another listener to flip the boundary back to its normal state.
16920var thenables=_workInProgress.updateQueue;if(thenables===null){var updateQueue=new Set();updateQueue.add(thenable);_workInProgress.updateQueue=updateQueue;}else{thenables.add(thenable);}// If the boundary is outside of blocking mode, we should *not*
16921// suspend the commit. Pretend as if the suspended component rendered
16922// null and keep rendering. In the commit phase, we'll schedule a
16923// subsequent synchronous update to re-render the Suspense.
16924//
16925// Note: It doesn't matter whether the component that suspended was
16926// inside a blocking mode tree. If the Suspense is outside of it, we
16927// should *not* suspend the commit.
16928if((_workInProgress.mode&BlockingMode)===NoMode){_workInProgress.effectTag|=DidCapture;// We're going to commit this fiber even though it didn't complete.
16929// But we shouldn't call any lifecycle methods or callbacks. Remove
16930// all lifecycle effect tags.
16931sourceFiber.effectTag&=~(LifecycleEffectMask|Incomplete);if(sourceFiber.tag===ClassComponent){var currentSourceFiber=sourceFiber.alternate;if(currentSourceFiber===null){// This is a new mount. Change the tag so it's not mistaken for a
16932// completed class component. For example, we should not call
16933// componentWillUnmount if it is deleted.
16934sourceFiber.tag=IncompleteClassComponent;}else{// When we try rendering again, we should not reuse the current fiber,
16935// since it's known to be in an inconsistent state. Use a force update to
16936// prevent a bail out.
16937var update=createUpdate(Sync,null);update.tag=ForceUpdate;enqueueUpdate(sourceFiber,update);}}// The source fiber did not complete. Mark it with Sync priority to
16938// indicate that it still has pending work.
16939sourceFiber.expirationTime=Sync;// Exit without suspending.
16940return;}// Confirmed that the boundary is in a concurrent mode tree. Continue
16941// with the normal suspend path.
16942//
16943// After this we'll use a set of heuristics to determine whether this
16944// render pass will run to completion or restart or "suspend" the commit.
16945// The actual logic for this is spread out in different places.
16946//
16947// This first principle is that if we're going to suspend when we complete
16948// a root, then we should also restart if we get an update or ping that
16949// might unsuspend it, and vice versa. The only reason to suspend is
16950// because you think you might want to restart before committing. However,
16951// it doesn't make sense to restart only while in the period we're suspended.
16952//
16953// Restarting too aggressively is also not good because it starves out any
16954// intermediate loading state. So we use heuristics to determine when.
16955// Suspense Heuristics
16956//
16957// If nothing threw a Promise or all the same fallbacks are already showing,
16958// then don't suspend/restart.
16959//
16960// If this is an initial render of a new tree of Suspense boundaries and
16961// those trigger a fallback, then don't suspend/restart. We want to ensure
16962// that we can show the initial loading state as quickly as possible.
16963//
16964// If we hit a "Delayed" case, such as when we'd switch from content back into
16965// a fallback, then we should always suspend/restart. SuspenseConfig applies to
16966// this case. If none is defined, JND is used instead.
16967//
16968// If we're already showing a fallback and it gets "retried", allowing us to show
16969// another level, but there's still an inner boundary that would show a fallback,
16970// then we suspend/restart for 500ms since the last time we showed a fallback
16971// anywhere in the tree. This effectively throttles progressive loading into a
16972// consistent train of commits. This also gives us an opportunity to restart to
16973// get to the completed state slightly earlier.
16974//
16975// If there's ambiguity due to batching it's resolved in preference of:
16976// 1) "delayed", 2) "initial render", 3) "retry".
16977//
16978// We want to ensure that a "busy" state doesn't get force committed. We want to
16979// ensure that new initial loading states can commit as soon as possible.
16980attachPingListener(root,renderExpirationTime,thenable);_workInProgress.effectTag|=ShouldCapture;_workInProgress.expirationTime=renderExpirationTime;return;}// This boundary already captured during this render. Continue to the next
16981// boundary.
16982_workInProgress=_workInProgress.return;}while(_workInProgress!==null);// No boundary was found. Fallthrough to error mode.
16983// TODO: Use invariant so the message is stripped in prod?
16984value=new Error((getComponentName(sourceFiber.type)||'A React component')+' suspended while rendering, but no fallback UI was specified.\n'+'\n'+'Add a <Suspense fallback=...> component higher in the tree to '+'provide a loading indicator or placeholder to display.'+getStackByFiberInDevAndProd(sourceFiber));}// We didn't find a boundary that could handle this type of exception. Start
16985// over and traverse parent path again, this time treating the exception
16986// as an error.
16987renderDidError();value=createCapturedValue(value,sourceFiber);var workInProgress=returnFiber;do{switch(workInProgress.tag){case HostRoot:{var _errorInfo=value;workInProgress.effectTag|=ShouldCapture;workInProgress.expirationTime=renderExpirationTime;var _update=createRootErrorUpdate(workInProgress,_errorInfo,renderExpirationTime);enqueueCapturedUpdate(workInProgress,_update);return;}case ClassComponent:// Capture and retry
16988var errorInfo=value;var ctor=workInProgress.type;var instance=workInProgress.stateNode;if((workInProgress.effectTag&DidCapture)===NoEffect&&(typeof ctor.getDerivedStateFromError==='function'||instance!==null&&typeof instance.componentDidCatch==='function'&&!isAlreadyFailedLegacyErrorBoundary(instance))){workInProgress.effectTag|=ShouldCapture;workInProgress.expirationTime=renderExpirationTime;// Schedule the error boundary to re-render using updated state
16989var _update2=createClassErrorUpdate(workInProgress,errorInfo,renderExpirationTime);enqueueCapturedUpdate(workInProgress,_update2);return;}break;}workInProgress=workInProgress.return;}while(workInProgress!==null);}var ceil=Math.ceil;var ReactCurrentDispatcher$1=ReactSharedInternals.ReactCurrentDispatcher,ReactCurrentOwner$2=ReactSharedInternals.ReactCurrentOwner,IsSomeRendererActing=ReactSharedInternals.IsSomeRendererActing;var NoContext=/*                    */0;var BatchedContext=/*               */1;var EventContext=/*                 */2;var DiscreteEventContext=/*         */4;var LegacyUnbatchedContext=/*       */8;var RenderContext=/*                */16;var CommitContext=/*                */32;var RootIncomplete=0;var RootFatalErrored=1;var RootErrored=2;var RootSuspended=3;var RootSuspendedWithDelay=4;var RootCompleted=5;// Describes where we are in the React execution stack
16990var executionContext=NoContext;// The root we're working on
16991var workInProgressRoot=null;// The fiber we're working on
16992var workInProgress=null;// The expiration time we're rendering
16993var renderExpirationTime$1=NoWork;// Whether to root completed, errored, suspended, etc.
16994var workInProgressRootExitStatus=RootIncomplete;// A fatal error, if one is thrown
16995var workInProgressRootFatalError=null;// Most recent event time among processed updates during this render.
16996// This is conceptually a time stamp but expressed in terms of an ExpirationTime
16997// because we deal mostly with expiration times in the hot path, so this avoids
16998// the conversion happening in the hot path.
16999var workInProgressRootLatestProcessedExpirationTime=Sync;var workInProgressRootLatestSuspenseTimeout=Sync;var workInProgressRootCanSuspendUsingConfig=null;// The work left over by components that were visited during this render. Only
17000// includes unprocessed updates, not work in bailed out children.
17001var workInProgressRootNextUnprocessedUpdateTime=NoWork;// If we're pinged while rendering we don't always restart immediately.
17002// This flag determines if it might be worthwhile to restart if an opportunity
17003// happens latere.
17004var workInProgressRootHasPendingPing=false;// The most recent time we committed a fallback. This lets us ensure a train
17005// model where we don't commit new loading states in too quick succession.
17006var globalMostRecentFallbackTime=0;var FALLBACK_THROTTLE_MS=500;var nextEffect=null;var hasUncaughtError=false;var firstUncaughtError=null;var legacyErrorBoundariesThatAlreadyFailed=null;var rootDoesHavePassiveEffects=false;var rootWithPendingPassiveEffects=null;var pendingPassiveEffectsRenderPriority=NoPriority;var pendingPassiveEffectsExpirationTime=NoWork;var rootsWithPendingDiscreteUpdates=null;// Use these to prevent an infinite loop of nested updates
17007var NESTED_UPDATE_LIMIT=50;var nestedUpdateCount=0;var rootWithNestedUpdates=null;var NESTED_PASSIVE_UPDATE_LIMIT=50;var nestedPassiveUpdateCount=0;var interruptedBy=null;// Marks the need to reschedule pending interactions at these expiration times
17008// during the commit phase. This enables them to be traced across components
17009// that spawn new work during render. E.g. hidden boundaries, suspended SSR
17010// hydration or SuspenseList.
17011var spawnedWorkDuringRender=null;// Expiration times are computed by adding to the current time (the start
17012// time). However, if two updates are scheduled within the same event, we
17013// should treat their start times as simultaneous, even if the actual clock
17014// time has advanced between the first and second call.
17015// In other words, because expiration times determine how updates are batched,
17016// we want all updates of like priority that occur within the same event to
17017// receive the same expiration time. Otherwise we get tearing.
17018var currentEventTime=NoWork;function requestCurrentTimeForUpdate(){if((executionContext&(RenderContext|CommitContext))!==NoContext){// We're inside React, so it's fine to read the actual time.
17019return msToExpirationTime(now());}// We're not inside React, so we may be in the middle of a browser event.
17020if(currentEventTime!==NoWork){// Use the same start time for all updates until we enter React again.
17021return currentEventTime;}// This is the first update since React yielded. Compute a new start time.
17022currentEventTime=msToExpirationTime(now());return currentEventTime;}function getCurrentTime(){return msToExpirationTime(now());}function computeExpirationForFiber(currentTime,fiber,suspenseConfig){var mode=fiber.mode;if((mode&BlockingMode)===NoMode){return Sync;}var priorityLevel=getCurrentPriorityLevel();if((mode&ConcurrentMode)===NoMode){return priorityLevel===ImmediatePriority?Sync:Batched;}if((executionContext&RenderContext)!==NoContext){// Use whatever time we're already rendering
17023// TODO: Should there be a way to opt out, like with `runWithPriority`?
17024return renderExpirationTime$1;}var expirationTime;if(suspenseConfig!==null){// Compute an expiration time based on the Suspense timeout.
17025expirationTime=computeSuspenseExpiration(currentTime,suspenseConfig.timeoutMs|0||LOW_PRIORITY_EXPIRATION);}else{// Compute an expiration time based on the Scheduler priority.
17026switch(priorityLevel){case ImmediatePriority:expirationTime=Sync;break;case UserBlockingPriority$1:// TODO: Rename this to computeUserBlockingExpiration
17027expirationTime=computeInteractiveExpiration(currentTime);break;case NormalPriority:case LowPriority:// TODO: Handle LowPriority
17028// TODO: Rename this to... something better.
17029expirationTime=computeAsyncExpiration(currentTime);break;case IdlePriority:expirationTime=Idle;break;default:{{throw Error("Expected a valid priority level");}}}}// If we're in the middle of rendering a tree, do not update at the same
17030// expiration time that is already rendering.
17031// TODO: We shouldn't have to do this if the update is on a different root.
17032// Refactor computeExpirationForFiber + scheduleUpdate so we have access to
17033// the root when we check for this condition.
17034if(workInProgressRoot!==null&&expirationTime===renderExpirationTime$1){// This is a trick to move this update into a separate batch
17035expirationTime-=1;}return expirationTime;}function scheduleUpdateOnFiber(fiber,expirationTime){checkForNestedUpdates();warnAboutRenderPhaseUpdatesInDEV(fiber);var root=markUpdateTimeFromFiberToRoot(fiber,expirationTime);if(root===null){warnAboutUpdateOnUnmountedFiberInDEV(fiber);return;}checkForInterruption(fiber,expirationTime);recordScheduleUpdate();// TODO: computeExpirationForFiber also reads the priority. Pass the
17036// priority as an argument to that function and this one.
17037var priorityLevel=getCurrentPriorityLevel();if(expirationTime===Sync){if(// Check if we're inside unbatchedUpdates
17038(executionContext&LegacyUnbatchedContext)!==NoContext&&// Check if we're not already rendering
17039(executionContext&(RenderContext|CommitContext))===NoContext){// Register pending interactions on the root to avoid losing traced interaction data.
17040schedulePendingInteractions(root,expirationTime);// This is a legacy edge case. The initial mount of a ReactDOM.render-ed
17041// root inside of batchedUpdates should be synchronous, but layout updates
17042// should be deferred until the end of the batch.
17043performSyncWorkOnRoot(root);}else{ensureRootIsScheduled(root);schedulePendingInteractions(root,expirationTime);if(executionContext===NoContext){// Flush the synchronous work now, unless we're already working or inside
17044// a batch. This is intentionally inside scheduleUpdateOnFiber instead of
17045// scheduleCallbackForFiber to preserve the ability to schedule a callback
17046// without immediately flushing it. We only do this for user-initiated
17047// updates, to preserve historical behavior of legacy mode.
17048flushSyncCallbackQueue();}}}else{ensureRootIsScheduled(root);schedulePendingInteractions(root,expirationTime);}if((executionContext&DiscreteEventContext)!==NoContext&&(// Only updates at user-blocking priority or greater are considered
17049// discrete, even inside a discrete event.
17050priorityLevel===UserBlockingPriority$1||priorityLevel===ImmediatePriority)){// This is the result of a discrete event. Track the lowest priority
17051// discrete update per root so we can flush them early, if needed.
17052if(rootsWithPendingDiscreteUpdates===null){rootsWithPendingDiscreteUpdates=new Map([[root,expirationTime]]);}else{var lastDiscreteTime=rootsWithPendingDiscreteUpdates.get(root);if(lastDiscreteTime===undefined||lastDiscreteTime>expirationTime){rootsWithPendingDiscreteUpdates.set(root,expirationTime);}}}}var scheduleWork=scheduleUpdateOnFiber;// This is split into a separate function so we can mark a fiber with pending
17053// work without treating it as a typical update that originates from an event;
17054// e.g. retrying a Suspense boundary isn't an update, but it does schedule work
17055// on a fiber.
17056function markUpdateTimeFromFiberToRoot(fiber,expirationTime){// Update the source fiber's expiration time
17057if(fiber.expirationTime<expirationTime){fiber.expirationTime=expirationTime;}var alternate=fiber.alternate;if(alternate!==null&&alternate.expirationTime<expirationTime){alternate.expirationTime=expirationTime;}// Walk the parent path to the root and update the child expiration time.
17058var node=fiber.return;var root=null;if(node===null&&fiber.tag===HostRoot){root=fiber.stateNode;}else{while(node!==null){alternate=node.alternate;if(node.childExpirationTime<expirationTime){node.childExpirationTime=expirationTime;if(alternate!==null&&alternate.childExpirationTime<expirationTime){alternate.childExpirationTime=expirationTime;}}else if(alternate!==null&&alternate.childExpirationTime<expirationTime){alternate.childExpirationTime=expirationTime;}if(node.return===null&&node.tag===HostRoot){root=node.stateNode;break;}node=node.return;}}if(root!==null){if(workInProgressRoot===root){// Received an update to a tree that's in the middle of rendering. Mark
17059// that's unprocessed work on this root.
17060markUnprocessedUpdateTime(expirationTime);if(workInProgressRootExitStatus===RootSuspendedWithDelay){// The root already suspended with a delay, which means this render
17061// definitely won't finish. Since we have a new update, let's mark it as
17062// suspended now, right before marking the incoming update. This has the
17063// effect of interrupting the current render and switching to the update.
17064// TODO: This happens to work when receiving an update during the render
17065// phase, because of the trick inside computeExpirationForFiber to
17066// subtract 1 from `renderExpirationTime` to move it into a
17067// separate bucket. But we should probably model it with an exception,
17068// using the same mechanism we use to force hydration of a subtree.
17069// TODO: This does not account for low pri updates that were already
17070// scheduled before the root started rendering. Need to track the next
17071// pending expiration time (perhaps by backtracking the return path) and
17072// then trigger a restart in the `renderDidSuspendDelayIfPossible` path.
17073markRootSuspendedAtTime(root,renderExpirationTime$1);}}// Mark that the root has a pending update.
17074markRootUpdatedAtTime(root,expirationTime);}return root;}function getNextRootExpirationTimeToWorkOn(root){// Determines the next expiration time that the root should render, taking
17075// into account levels that may be suspended, or levels that may have
17076// received a ping.
17077var lastExpiredTime=root.lastExpiredTime;if(lastExpiredTime!==NoWork){return lastExpiredTime;}// "Pending" refers to any update that hasn't committed yet, including if it
17078// suspended. The "suspended" range is therefore a subset.
17079var firstPendingTime=root.firstPendingTime;if(!isRootSuspendedAtTime(root,firstPendingTime)){// The highest priority pending time is not suspended. Let's work on that.
17080return firstPendingTime;}// If the first pending time is suspended, check if there's a lower priority
17081// pending level that we know about. Or check if we received a ping. Work
17082// on whichever is higher priority.
17083var lastPingedTime=root.lastPingedTime;var nextKnownPendingLevel=root.nextKnownPendingLevel;var nextLevel=lastPingedTime>nextKnownPendingLevel?lastPingedTime:nextKnownPendingLevel;if(nextLevel<=Idle&&firstPendingTime!==nextLevel){// Don't work on Idle/Never priority unless everything else is committed.
17084return NoWork;}return nextLevel;}// Use this function to schedule a task for a root. There's only one task per
17085// root; if a task was already scheduled, we'll check to make sure the
17086// expiration time of the existing task is the same as the expiration time of
17087// the next level that the root has work on. This function is called on every
17088// update, and right before exiting a task.
17089function ensureRootIsScheduled(root){var lastExpiredTime=root.lastExpiredTime;if(lastExpiredTime!==NoWork){// Special case: Expired work should flush synchronously.
17090root.callbackExpirationTime=Sync;root.callbackPriority=ImmediatePriority;root.callbackNode=scheduleSyncCallback(performSyncWorkOnRoot.bind(null,root));return;}var expirationTime=getNextRootExpirationTimeToWorkOn(root);var existingCallbackNode=root.callbackNode;if(expirationTime===NoWork){// There's nothing to work on.
17091if(existingCallbackNode!==null){root.callbackNode=null;root.callbackExpirationTime=NoWork;root.callbackPriority=NoPriority;}return;}// TODO: If this is an update, we already read the current time. Pass the
17092// time as an argument.
17093var currentTime=requestCurrentTimeForUpdate();var priorityLevel=inferPriorityFromExpirationTime(currentTime,expirationTime);// If there's an existing render task, confirm it has the correct priority and
17094// expiration time. Otherwise, we'll cancel it and schedule a new one.
17095if(existingCallbackNode!==null){var existingCallbackPriority=root.callbackPriority;var existingCallbackExpirationTime=root.callbackExpirationTime;if(// Callback must have the exact same expiration time.
17096existingCallbackExpirationTime===expirationTime&&// Callback must have greater or equal priority.
17097existingCallbackPriority>=priorityLevel){// Existing callback is sufficient.
17098return;}// Need to schedule a new task.
17099// TODO: Instead of scheduling a new task, we should be able to change the
17100// priority of the existing one.
17101cancelCallback(existingCallbackNode);}root.callbackExpirationTime=expirationTime;root.callbackPriority=priorityLevel;var callbackNode;if(expirationTime===Sync){// Sync React callbacks are scheduled on a special internal queue
17102callbackNode=scheduleSyncCallback(performSyncWorkOnRoot.bind(null,root));}else{callbackNode=scheduleCallback(priorityLevel,performConcurrentWorkOnRoot.bind(null,root),// Compute a task timeout based on the expiration time. This also affects
17103// ordering because tasks are processed in timeout order.
17104{timeout:expirationTimeToMs(expirationTime)-now()});}root.callbackNode=callbackNode;}// This is the entry point for every concurrent task, i.e. anything that
17105// goes through Scheduler.
17106function performConcurrentWorkOnRoot(root,didTimeout){// Since we know we're in a React event, we can clear the current
17107// event time. The next update will compute a new event time.
17108currentEventTime=NoWork;if(didTimeout){// The render task took too long to complete. Mark the current time as
17109// expired to synchronously render all expired work in a single batch.
17110var currentTime=requestCurrentTimeForUpdate();markRootExpiredAtTime(root,currentTime);// This will schedule a synchronous callback.
17111ensureRootIsScheduled(root);return null;}// Determine the next expiration time to work on, using the fields stored
17112// on the root.
17113var expirationTime=getNextRootExpirationTimeToWorkOn(root);if(expirationTime!==NoWork){var originalCallbackNode=root.callbackNode;if(!((executionContext&(RenderContext|CommitContext))===NoContext)){{throw Error("Should not already be working.");}}flushPassiveEffects();// If the root or expiration time have changed, throw out the existing stack
17114// and prepare a fresh one. Otherwise we'll continue where we left off.
17115if(root!==workInProgressRoot||expirationTime!==renderExpirationTime$1){prepareFreshStack(root,expirationTime);startWorkOnPendingInteractions(root,expirationTime);}// If we have a work-in-progress fiber, it means there's still work to do
17116// in this root.
17117if(workInProgress!==null){var prevExecutionContext=executionContext;executionContext|=RenderContext;var prevDispatcher=pushDispatcher();var prevInteractions=pushInteractions(root);startWorkLoopTimer(workInProgress);do{try{workLoopConcurrent();break;}catch(thrownValue){handleError(root,thrownValue);}}while(true);resetContextDependencies();executionContext=prevExecutionContext;popDispatcher(prevDispatcher);{popInteractions(prevInteractions);}if(workInProgressRootExitStatus===RootFatalErrored){var fatalError=workInProgressRootFatalError;stopInterruptedWorkLoopTimer();prepareFreshStack(root,expirationTime);markRootSuspendedAtTime(root,expirationTime);ensureRootIsScheduled(root);throw fatalError;}if(workInProgress!==null){// There's still work left over. Exit without committing.
17118stopInterruptedWorkLoopTimer();}else{// We now have a consistent tree. The next step is either to commit it,
17119// or, if something suspended, wait to commit it after a timeout.
17120stopFinishedWorkLoopTimer();var finishedWork=root.finishedWork=root.current.alternate;root.finishedExpirationTime=expirationTime;finishConcurrentRender(root,finishedWork,workInProgressRootExitStatus,expirationTime);}ensureRootIsScheduled(root);if(root.callbackNode===originalCallbackNode){// The task node scheduled for this root is the same one that's
17121// currently executed. Need to return a continuation.
17122return performConcurrentWorkOnRoot.bind(null,root);}}}return null;}function finishConcurrentRender(root,finishedWork,exitStatus,expirationTime){// Set this to null to indicate there's no in-progress render.
17123workInProgressRoot=null;switch(exitStatus){case RootIncomplete:case RootFatalErrored:{{{throw Error("Root did not complete. This is a bug in React.");}}}// Flow knows about invariant, so it complains if I add a break
17124// statement, but eslint doesn't know about invariant, so it complains
17125// if I do. eslint-disable-next-line no-fallthrough
17126case RootErrored:{// If this was an async render, the error may have happened due to
17127// a mutation in a concurrent event. Try rendering one more time,
17128// synchronously, to see if the error goes away. If there are
17129// lower priority updates, let's include those, too, in case they
17130// fix the inconsistency. Render at Idle to include all updates.
17131// If it was Idle or Never or some not-yet-invented time, render
17132// at that time.
17133markRootExpiredAtTime(root,expirationTime>Idle?Idle:expirationTime);// We assume that this second render pass will be synchronous
17134// and therefore not hit this path again.
17135break;}case RootSuspended:{markRootSuspendedAtTime(root,expirationTime);var lastSuspendedTime=root.lastSuspendedTime;if(expirationTime===lastSuspendedTime){root.nextKnownPendingLevel=getRemainingExpirationTime(finishedWork);}// We have an acceptable loading state. We need to figure out if we
17136// should immediately commit it or wait a bit.
17137// If we have processed new updates during this render, we may now
17138// have a new loading state ready. We want to ensure that we commit
17139// that as soon as possible.
17140var hasNotProcessedNewUpdates=workInProgressRootLatestProcessedExpirationTime===Sync;if(hasNotProcessedNewUpdates&&// do not delay if we're inside an act() scope
17141!IsThisRendererActing.current){// If we have not processed any new updates during this pass, then
17142// this is either a retry of an existing fallback state or a
17143// hidden tree. Hidden trees shouldn't be batched with other work
17144// and after that's fixed it can only be a retry. We're going to
17145// throttle committing retries so that we don't show too many
17146// loading states too quickly.
17147var msUntilTimeout=globalMostRecentFallbackTime+FALLBACK_THROTTLE_MS-now();// Don't bother with a very short suspense time.
17148if(msUntilTimeout>10){if(workInProgressRootHasPendingPing){var lastPingedTime=root.lastPingedTime;if(lastPingedTime===NoWork||lastPingedTime>=expirationTime){// This render was pinged but we didn't get to restart
17149// earlier so try restarting now instead.
17150root.lastPingedTime=expirationTime;prepareFreshStack(root,expirationTime);break;}}var nextTime=getNextRootExpirationTimeToWorkOn(root);if(nextTime!==NoWork&&nextTime!==expirationTime){// There's additional work on this root.
17151break;}if(lastSuspendedTime!==NoWork&&lastSuspendedTime!==expirationTime){// We should prefer to render the fallback of at the last
17152// suspended level. Ping the last suspended level to try
17153// rendering it again.
17154root.lastPingedTime=lastSuspendedTime;break;}// The render is suspended, it hasn't timed out, and there's no
17155// lower priority work to do. Instead of committing the fallback
17156// immediately, wait for more data to arrive.
17157root.timeoutHandle=scheduleTimeout(commitRoot.bind(null,root),msUntilTimeout);break;}}// The work expired. Commit immediately.
17158commitRoot(root);break;}case RootSuspendedWithDelay:{markRootSuspendedAtTime(root,expirationTime);var _lastSuspendedTime=root.lastSuspendedTime;if(expirationTime===_lastSuspendedTime){root.nextKnownPendingLevel=getRemainingExpirationTime(finishedWork);}if(// do not delay if we're inside an act() scope
17159!IsThisRendererActing.current){// We're suspended in a state that should be avoided. We'll try to
17160// avoid committing it for as long as the timeouts let us.
17161if(workInProgressRootHasPendingPing){var _lastPingedTime=root.lastPingedTime;if(_lastPingedTime===NoWork||_lastPingedTime>=expirationTime){// This render was pinged but we didn't get to restart earlier
17162// so try restarting now instead.
17163root.lastPingedTime=expirationTime;prepareFreshStack(root,expirationTime);break;}}var _nextTime=getNextRootExpirationTimeToWorkOn(root);if(_nextTime!==NoWork&&_nextTime!==expirationTime){// There's additional work on this root.
17164break;}if(_lastSuspendedTime!==NoWork&&_lastSuspendedTime!==expirationTime){// We should prefer to render the fallback of at the last
17165// suspended level. Ping the last suspended level to try
17166// rendering it again.
17167root.lastPingedTime=_lastSuspendedTime;break;}var _msUntilTimeout;if(workInProgressRootLatestSuspenseTimeout!==Sync){// We have processed a suspense config whose expiration time we
17168// can use as the timeout.
17169_msUntilTimeout=expirationTimeToMs(workInProgressRootLatestSuspenseTimeout)-now();}else if(workInProgressRootLatestProcessedExpirationTime===Sync){// This should never normally happen because only new updates
17170// cause delayed states, so we should have processed something.
17171// However, this could also happen in an offscreen tree.
17172_msUntilTimeout=0;}else{// If we don't have a suspense config, we're going to use a
17173// heuristic to determine how long we can suspend.
17174var eventTimeMs=inferTimeFromExpirationTime(workInProgressRootLatestProcessedExpirationTime);var currentTimeMs=now();var timeUntilExpirationMs=expirationTimeToMs(expirationTime)-currentTimeMs;var timeElapsed=currentTimeMs-eventTimeMs;if(timeElapsed<0){// We get this wrong some time since we estimate the time.
17175timeElapsed=0;}_msUntilTimeout=jnd(timeElapsed)-timeElapsed;// Clamp the timeout to the expiration time. TODO: Once the
17176// event time is exact instead of inferred from expiration time
17177// we don't need this.
17178if(timeUntilExpirationMs<_msUntilTimeout){_msUntilTimeout=timeUntilExpirationMs;}}// Don't bother with a very short suspense time.
17179if(_msUntilTimeout>10){// The render is suspended, it hasn't timed out, and there's no
17180// lower priority work to do. Instead of committing the fallback
17181// immediately, wait for more data to arrive.
17182root.timeoutHandle=scheduleTimeout(commitRoot.bind(null,root),_msUntilTimeout);break;}}// The work expired. Commit immediately.
17183commitRoot(root);break;}case RootCompleted:{// The work completed. Ready to commit.
17184if(// do not delay if we're inside an act() scope
17185!IsThisRendererActing.current&&workInProgressRootLatestProcessedExpirationTime!==Sync&&workInProgressRootCanSuspendUsingConfig!==null){// If we have exceeded the minimum loading delay, which probably
17186// means we have shown a spinner already, we might have to suspend
17187// a bit longer to ensure that the spinner is shown for
17188// enough time.
17189var _msUntilTimeout2=computeMsUntilSuspenseLoadingDelay(workInProgressRootLatestProcessedExpirationTime,expirationTime,workInProgressRootCanSuspendUsingConfig);if(_msUntilTimeout2>10){markRootSuspendedAtTime(root,expirationTime);root.timeoutHandle=scheduleTimeout(commitRoot.bind(null,root),_msUntilTimeout2);break;}}commitRoot(root);break;}default:{{{throw Error("Unknown root exit status.");}}}}}// This is the entry point for synchronous tasks that don't go
17190// through Scheduler
17191function performSyncWorkOnRoot(root){// Check if there's expired work on this root. Otherwise, render at Sync.
17192var lastExpiredTime=root.lastExpiredTime;var expirationTime=lastExpiredTime!==NoWork?lastExpiredTime:Sync;if(!((executionContext&(RenderContext|CommitContext))===NoContext)){{throw Error("Should not already be working.");}}flushPassiveEffects();// If the root or expiration time have changed, throw out the existing stack
17193// and prepare a fresh one. Otherwise we'll continue where we left off.
17194if(root!==workInProgressRoot||expirationTime!==renderExpirationTime$1){prepareFreshStack(root,expirationTime);startWorkOnPendingInteractions(root,expirationTime);}// If we have a work-in-progress fiber, it means there's still work to do
17195// in this root.
17196if(workInProgress!==null){var prevExecutionContext=executionContext;executionContext|=RenderContext;var prevDispatcher=pushDispatcher();var prevInteractions=pushInteractions(root);startWorkLoopTimer(workInProgress);do{try{workLoopSync();break;}catch(thrownValue){handleError(root,thrownValue);}}while(true);resetContextDependencies();executionContext=prevExecutionContext;popDispatcher(prevDispatcher);{popInteractions(prevInteractions);}if(workInProgressRootExitStatus===RootFatalErrored){var fatalError=workInProgressRootFatalError;stopInterruptedWorkLoopTimer();prepareFreshStack(root,expirationTime);markRootSuspendedAtTime(root,expirationTime);ensureRootIsScheduled(root);throw fatalError;}if(workInProgress!==null){// This is a sync render, so we should have finished the whole tree.
17197{{throw Error("Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.");}}}else{// We now have a consistent tree. Because this is a sync render, we
17198// will commit it even if something suspended.
17199stopFinishedWorkLoopTimer();root.finishedWork=root.current.alternate;root.finishedExpirationTime=expirationTime;finishSyncRender(root);}// Before exiting, make sure there's a callback scheduled for the next
17200// pending level.
17201ensureRootIsScheduled(root);}return null;}function finishSyncRender(root){// Set this to null to indicate there's no in-progress render.
17202workInProgressRoot=null;commitRoot(root);}function flushDiscreteUpdates(){// TODO: Should be able to flush inside batchedUpdates, but not inside `act`.
17203// However, `act` uses `batchedUpdates`, so there's no way to distinguish
17204// those two cases. Need to fix this before exposing flushDiscreteUpdates
17205// as a public API.
17206if((executionContext&(BatchedContext|RenderContext|CommitContext))!==NoContext){{if((executionContext&RenderContext)!==NoContext){error('unstable_flushDiscreteUpdates: Cannot flush updates when React is '+'already rendering.');}}// We're already rendering, so we can't synchronously flush pending work.
17207// This is probably a nested event dispatch triggered by a lifecycle/effect,
17208// like `el.focus()`. Exit.
17209return;}flushPendingDiscreteUpdates();// If the discrete updates scheduled passive effects, flush them now so that
17210// they fire before the next serial event.
17211flushPassiveEffects();}function syncUpdates(fn,a,b,c){return runWithPriority$1(ImmediatePriority,fn.bind(null,a,b,c));}function flushPendingDiscreteUpdates(){if(rootsWithPendingDiscreteUpdates!==null){// For each root with pending discrete updates, schedule a callback to
17212// immediately flush them.
17213var roots=rootsWithPendingDiscreteUpdates;rootsWithPendingDiscreteUpdates=null;roots.forEach(function(expirationTime,root){markRootExpiredAtTime(root,expirationTime);ensureRootIsScheduled(root);});// Now flush the immediate queue.
17214flushSyncCallbackQueue();}}function batchedUpdates$1(fn,a){var prevExecutionContext=executionContext;executionContext|=BatchedContext;try{return fn(a);}finally{executionContext=prevExecutionContext;if(executionContext===NoContext){// Flush the immediate callbacks that were scheduled during this batch
17215flushSyncCallbackQueue();}}}function batchedEventUpdates$1(fn,a){var prevExecutionContext=executionContext;executionContext|=EventContext;try{return fn(a);}finally{executionContext=prevExecutionContext;if(executionContext===NoContext){// Flush the immediate callbacks that were scheduled during this batch
17216flushSyncCallbackQueue();}}}function discreteUpdates$1(fn,a,b,c,d){var prevExecutionContext=executionContext;executionContext|=DiscreteEventContext;try{// Should this
17217return runWithPriority$1(UserBlockingPriority$1,fn.bind(null,a,b,c,d));}finally{executionContext=prevExecutionContext;if(executionContext===NoContext){// Flush the immediate callbacks that were scheduled during this batch
17218flushSyncCallbackQueue();}}}function unbatchedUpdates(fn,a){var prevExecutionContext=executionContext;executionContext&=~BatchedContext;executionContext|=LegacyUnbatchedContext;try{return fn(a);}finally{executionContext=prevExecutionContext;if(executionContext===NoContext){// Flush the immediate callbacks that were scheduled during this batch
17219flushSyncCallbackQueue();}}}function flushSync(fn,a){if((executionContext&(RenderContext|CommitContext))!==NoContext){{{throw Error("flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering.");}}}var prevExecutionContext=executionContext;executionContext|=BatchedContext;try{return runWithPriority$1(ImmediatePriority,fn.bind(null,a));}finally{executionContext=prevExecutionContext;// Flush the immediate callbacks that were scheduled during this batch.
17220// Note that this will happen even if batchedUpdates is higher up
17221// the stack.
17222flushSyncCallbackQueue();}}function prepareFreshStack(root,expirationTime){root.finishedWork=null;root.finishedExpirationTime=NoWork;var timeoutHandle=root.timeoutHandle;if(timeoutHandle!==noTimeout){// The root previous suspended and scheduled a timeout to commit a fallback
17223// state. Now that we have additional work, cancel the timeout.
17224root.timeoutHandle=noTimeout;// $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above
17225cancelTimeout(timeoutHandle);}if(workInProgress!==null){var interruptedWork=workInProgress.return;while(interruptedWork!==null){unwindInterruptedWork(interruptedWork);interruptedWork=interruptedWork.return;}}workInProgressRoot=root;workInProgress=createWorkInProgress(root.current,null);renderExpirationTime$1=expirationTime;workInProgressRootExitStatus=RootIncomplete;workInProgressRootFatalError=null;workInProgressRootLatestProcessedExpirationTime=Sync;workInProgressRootLatestSuspenseTimeout=Sync;workInProgressRootCanSuspendUsingConfig=null;workInProgressRootNextUnprocessedUpdateTime=NoWork;workInProgressRootHasPendingPing=false;{spawnedWorkDuringRender=null;}{ReactStrictModeWarnings.discardPendingWarnings();}}function handleError(root,thrownValue){do{try{// Reset module-level state that was set during the render phase.
17226resetContextDependencies();resetHooksAfterThrow();resetCurrentFiber();if(workInProgress===null||workInProgress.return===null){// Expected to be working on a non-root fiber. This is a fatal error
17227// because there's no ancestor that can handle it; the root is
17228// supposed to capture all errors that weren't caught by an error
17229// boundary.
17230workInProgressRootExitStatus=RootFatalErrored;workInProgressRootFatalError=thrownValue;// Set `workInProgress` to null. This represents advancing to the next
17231// sibling, or the parent if there are no siblings. But since the root
17232// has no siblings nor a parent, we set it to null. Usually this is
17233// handled by `completeUnitOfWork` or `unwindWork`, but since we're
17234// interntionally not calling those, we need set it here.
17235// TODO: Consider calling `unwindWork` to pop the contexts.
17236workInProgress=null;return null;}if(enableProfilerTimer&&workInProgress.mode&ProfileMode){// Record the time spent rendering before an error was thrown. This
17237// avoids inaccurate Profiler durations in the case of a
17238// suspended render.
17239stopProfilerTimerIfRunningAndRecordDelta(workInProgress,true);}throwException(root,workInProgress.return,workInProgress,thrownValue,renderExpirationTime$1);workInProgress=completeUnitOfWork(workInProgress);}catch(yetAnotherThrownValue){// Something in the return path also threw.
17240thrownValue=yetAnotherThrownValue;continue;}// Return to the normal work loop.
17241return;}while(true);}function pushDispatcher(root){var prevDispatcher=ReactCurrentDispatcher$1.current;ReactCurrentDispatcher$1.current=ContextOnlyDispatcher;if(prevDispatcher===null){// The React isomorphic package does not include a default dispatcher.
17242// Instead the first renderer will lazily attach one, in order to give
17243// nicer error messages.
17244return ContextOnlyDispatcher;}else{return prevDispatcher;}}function popDispatcher(prevDispatcher){ReactCurrentDispatcher$1.current=prevDispatcher;}function pushInteractions(root){{var prevInteractions=tracing.__interactionsRef.current;tracing.__interactionsRef.current=root.memoizedInteractions;return prevInteractions;}}function popInteractions(prevInteractions){{tracing.__interactionsRef.current=prevInteractions;}}function markCommitTimeOfFallback(){globalMostRecentFallbackTime=now();}function markRenderEventTimeAndConfig(expirationTime,suspenseConfig){if(expirationTime<workInProgressRootLatestProcessedExpirationTime&&expirationTime>Idle){workInProgressRootLatestProcessedExpirationTime=expirationTime;}if(suspenseConfig!==null){if(expirationTime<workInProgressRootLatestSuspenseTimeout&&expirationTime>Idle){workInProgressRootLatestSuspenseTimeout=expirationTime;// Most of the time we only have one config and getting wrong is not bad.
17245workInProgressRootCanSuspendUsingConfig=suspenseConfig;}}}function markUnprocessedUpdateTime(expirationTime){if(expirationTime>workInProgressRootNextUnprocessedUpdateTime){workInProgressRootNextUnprocessedUpdateTime=expirationTime;}}function renderDidSuspend(){if(workInProgressRootExitStatus===RootIncomplete){workInProgressRootExitStatus=RootSuspended;}}function renderDidSuspendDelayIfPossible(){if(workInProgressRootExitStatus===RootIncomplete||workInProgressRootExitStatus===RootSuspended){workInProgressRootExitStatus=RootSuspendedWithDelay;}// Check if there's a lower priority update somewhere else in the tree.
17246if(workInProgressRootNextUnprocessedUpdateTime!==NoWork&&workInProgressRoot!==null){// Mark the current render as suspended, and then mark that there's a
17247// pending update.
17248// TODO: This should immediately interrupt the current render, instead
17249// of waiting until the next time we yield.
17250markRootSuspendedAtTime(workInProgressRoot,renderExpirationTime$1);markRootUpdatedAtTime(workInProgressRoot,workInProgressRootNextUnprocessedUpdateTime);}}function renderDidError(){if(workInProgressRootExitStatus!==RootCompleted){workInProgressRootExitStatus=RootErrored;}}// Called during render to determine if anything has suspended.
17251// Returns false if we're not sure.
17252function renderHasNotSuspendedYet(){// If something errored or completed, we can't really be sure,
17253// so those are false.
17254return workInProgressRootExitStatus===RootIncomplete;}function inferTimeFromExpirationTime(expirationTime){// We don't know exactly when the update was scheduled, but we can infer an
17255// approximate start time from the expiration time.
17256var earliestExpirationTimeMs=expirationTimeToMs(expirationTime);return earliestExpirationTimeMs-LOW_PRIORITY_EXPIRATION;}function inferTimeFromExpirationTimeWithSuspenseConfig(expirationTime,suspenseConfig){// We don't know exactly when the update was scheduled, but we can infer an
17257// approximate start time from the expiration time by subtracting the timeout
17258// that was added to the event time.
17259var earliestExpirationTimeMs=expirationTimeToMs(expirationTime);return earliestExpirationTimeMs-(suspenseConfig.timeoutMs|0||LOW_PRIORITY_EXPIRATION);}// The work loop is an extremely hot path. Tell Closure not to inline it.
17260/** @noinline */function workLoopSync(){// Already timed out, so perform work without checking if we need to yield.
17261while(workInProgress!==null){workInProgress=performUnitOfWork(workInProgress);}}/** @noinline */function workLoopConcurrent(){// Perform work until Scheduler asks us to yield
17262while(workInProgress!==null&&!shouldYield()){workInProgress=performUnitOfWork(workInProgress);}}function performUnitOfWork(unitOfWork){// The current, flushed, state of this fiber is the alternate. Ideally
17263// nothing should rely on this, but relying on it here means that we don't
17264// need an additional field on the work in progress.
17265var current=unitOfWork.alternate;startWorkTimer(unitOfWork);setCurrentFiber(unitOfWork);var next;if((unitOfWork.mode&ProfileMode)!==NoMode){startProfilerTimer(unitOfWork);next=beginWork$1(current,unitOfWork,renderExpirationTime$1);stopProfilerTimerIfRunningAndRecordDelta(unitOfWork,true);}else{next=beginWork$1(current,unitOfWork,renderExpirationTime$1);}resetCurrentFiber();unitOfWork.memoizedProps=unitOfWork.pendingProps;if(next===null){// If this doesn't spawn new work, complete the current work.
17266next=completeUnitOfWork(unitOfWork);}ReactCurrentOwner$2.current=null;return next;}function completeUnitOfWork(unitOfWork){// Attempt to complete the current unit of work, then move to the next
17267// sibling. If there are no more siblings, return to the parent fiber.
17268workInProgress=unitOfWork;do{// The current, flushed, state of this fiber is the alternate. Ideally
17269// nothing should rely on this, but relying on it here means that we don't
17270// need an additional field on the work in progress.
17271var current=workInProgress.alternate;var returnFiber=workInProgress.return;// Check if the work completed or if something threw.
17272if((workInProgress.effectTag&Incomplete)===NoEffect){setCurrentFiber(workInProgress);var next=void 0;if((workInProgress.mode&ProfileMode)===NoMode){next=completeWork(current,workInProgress,renderExpirationTime$1);}else{startProfilerTimer(workInProgress);next=completeWork(current,workInProgress,renderExpirationTime$1);// Update render duration assuming we didn't error.
17273stopProfilerTimerIfRunningAndRecordDelta(workInProgress,false);}stopWorkTimer(workInProgress);resetCurrentFiber();resetChildExpirationTime(workInProgress);if(next!==null){// Completing this fiber spawned new work. Work on that next.
17274return next;}if(returnFiber!==null&&// Do not append effects to parents if a sibling failed to complete
17275(returnFiber.effectTag&Incomplete)===NoEffect){// Append all the effects of the subtree and this fiber onto the effect
17276// list of the parent. The completion order of the children affects the
17277// side-effect order.
17278if(returnFiber.firstEffect===null){returnFiber.firstEffect=workInProgress.firstEffect;}if(workInProgress.lastEffect!==null){if(returnFiber.lastEffect!==null){returnFiber.lastEffect.nextEffect=workInProgress.firstEffect;}returnFiber.lastEffect=workInProgress.lastEffect;}// If this fiber had side-effects, we append it AFTER the children's
17279// side-effects. We can perform certain side-effects earlier if needed,
17280// by doing multiple passes over the effect list. We don't want to
17281// schedule our own side-effect on our own list because if end up
17282// reusing children we'll schedule this effect onto itself since we're
17283// at the end.
17284var effectTag=workInProgress.effectTag;// Skip both NoWork and PerformedWork tags when creating the effect
17285// list. PerformedWork effect is read by React DevTools but shouldn't be
17286// committed.
17287if(effectTag>PerformedWork){if(returnFiber.lastEffect!==null){returnFiber.lastEffect.nextEffect=workInProgress;}else{returnFiber.firstEffect=workInProgress;}returnFiber.lastEffect=workInProgress;}}}else{// This fiber did not complete because something threw. Pop values off
17288// the stack without entering the complete phase. If this is a boundary,
17289// capture values if possible.
17290var _next=unwindWork(workInProgress);// Because this fiber did not complete, don't reset its expiration time.
17291if((workInProgress.mode&ProfileMode)!==NoMode){// Record the render duration for the fiber that errored.
17292stopProfilerTimerIfRunningAndRecordDelta(workInProgress,false);// Include the time spent working on failed children before continuing.
17293var actualDuration=workInProgress.actualDuration;var child=workInProgress.child;while(child!==null){actualDuration+=child.actualDuration;child=child.sibling;}workInProgress.actualDuration=actualDuration;}if(_next!==null){// If completing this work spawned new work, do that next. We'll come
17294// back here again.
17295// Since we're restarting, remove anything that is not a host effect
17296// from the effect tag.
17297// TODO: The name stopFailedWorkTimer is misleading because Suspense
17298// also captures and restarts.
17299stopFailedWorkTimer(workInProgress);_next.effectTag&=HostEffectMask;return _next;}stopWorkTimer(workInProgress);if(returnFiber!==null){// Mark the parent fiber as incomplete and clear its effect list.
17300returnFiber.firstEffect=returnFiber.lastEffect=null;returnFiber.effectTag|=Incomplete;}}var siblingFiber=workInProgress.sibling;if(siblingFiber!==null){// If there is more work to do in this returnFiber, do that next.
17301return siblingFiber;}// Otherwise, return to the parent
17302workInProgress=returnFiber;}while(workInProgress!==null);// We've reached the root.
17303if(workInProgressRootExitStatus===RootIncomplete){workInProgressRootExitStatus=RootCompleted;}return null;}function getRemainingExpirationTime(fiber){var updateExpirationTime=fiber.expirationTime;var childExpirationTime=fiber.childExpirationTime;return updateExpirationTime>childExpirationTime?updateExpirationTime:childExpirationTime;}function resetChildExpirationTime(completedWork){if(renderExpirationTime$1!==Never&&completedWork.childExpirationTime===Never){// The children of this component are hidden. Don't bubble their
17304// expiration times.
17305return;}var newChildExpirationTime=NoWork;// Bubble up the earliest expiration time.
17306if((completedWork.mode&ProfileMode)!==NoMode){// In profiling mode, resetChildExpirationTime is also used to reset
17307// profiler durations.
17308var actualDuration=completedWork.actualDuration;var treeBaseDuration=completedWork.selfBaseDuration;// When a fiber is cloned, its actualDuration is reset to 0. This value will
17309// only be updated if work is done on the fiber (i.e. it doesn't bailout).
17310// When work is done, it should bubble to the parent's actualDuration. If
17311// the fiber has not been cloned though, (meaning no work was done), then
17312// this value will reflect the amount of time spent working on a previous
17313// render. In that case it should not bubble. We determine whether it was
17314// cloned by comparing the child pointer.
17315var shouldBubbleActualDurations=completedWork.alternate===null||completedWork.child!==completedWork.alternate.child;var child=completedWork.child;while(child!==null){var childUpdateExpirationTime=child.expirationTime;var childChildExpirationTime=child.childExpirationTime;if(childUpdateExpirationTime>newChildExpirationTime){newChildExpirationTime=childUpdateExpirationTime;}if(childChildExpirationTime>newChildExpirationTime){newChildExpirationTime=childChildExpirationTime;}if(shouldBubbleActualDurations){actualDuration+=child.actualDuration;}treeBaseDuration+=child.treeBaseDuration;child=child.sibling;}completedWork.actualDuration=actualDuration;completedWork.treeBaseDuration=treeBaseDuration;}else{var _child=completedWork.child;while(_child!==null){var _childUpdateExpirationTime=_child.expirationTime;var _childChildExpirationTime=_child.childExpirationTime;if(_childUpdateExpirationTime>newChildExpirationTime){newChildExpirationTime=_childUpdateExpirationTime;}if(_childChildExpirationTime>newChildExpirationTime){newChildExpirationTime=_childChildExpirationTime;}_child=_child.sibling;}}completedWork.childExpirationTime=newChildExpirationTime;}function commitRoot(root){var renderPriorityLevel=getCurrentPriorityLevel();runWithPriority$1(ImmediatePriority,commitRootImpl.bind(null,root,renderPriorityLevel));return null;}function commitRootImpl(root,renderPriorityLevel){do{// `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which
17316// means `flushPassiveEffects` will sometimes result in additional
17317// passive effects. So we need to keep flushing in a loop until there are
17318// no more pending effects.
17319// TODO: Might be better if `flushPassiveEffects` did not automatically
17320// flush synchronous work at the end, to avoid factoring hazards like this.
17321flushPassiveEffects();}while(rootWithPendingPassiveEffects!==null);flushRenderPhaseStrictModeWarningsInDEV();if(!((executionContext&(RenderContext|CommitContext))===NoContext)){{throw Error("Should not already be working.");}}var finishedWork=root.finishedWork;var expirationTime=root.finishedExpirationTime;if(finishedWork===null){return null;}root.finishedWork=null;root.finishedExpirationTime=NoWork;if(!(finishedWork!==root.current)){{throw Error("Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.");}}// commitRoot never returns a continuation; it always finishes synchronously.
17322// So we can clear these now to allow a new callback to be scheduled.
17323root.callbackNode=null;root.callbackExpirationTime=NoWork;root.callbackPriority=NoPriority;root.nextKnownPendingLevel=NoWork;startCommitTimer();// Update the first and last pending times on this root. The new first
17324// pending time is whatever is left on the root fiber.
17325var remainingExpirationTimeBeforeCommit=getRemainingExpirationTime(finishedWork);markRootFinishedAtTime(root,expirationTime,remainingExpirationTimeBeforeCommit);if(root===workInProgressRoot){// We can reset these now that they are finished.
17326workInProgressRoot=null;workInProgress=null;renderExpirationTime$1=NoWork;}// This indicates that the last root we worked on is not the same one that
17327// we're committing now. This most commonly happens when a suspended root
17328// times out.
17329// Get the list of effects.
17330var firstEffect;if(finishedWork.effectTag>PerformedWork){// A fiber's effect list consists only of its children, not itself. So if
17331// the root has an effect, we need to add it to the end of the list. The
17332// resulting list is the set that would belong to the root's parent, if it
17333// had one; that is, all the effects in the tree including the root.
17334if(finishedWork.lastEffect!==null){finishedWork.lastEffect.nextEffect=finishedWork;firstEffect=finishedWork.firstEffect;}else{firstEffect=finishedWork;}}else{// There is no effect on the root.
17335firstEffect=finishedWork.firstEffect;}if(firstEffect!==null){var prevExecutionContext=executionContext;executionContext|=CommitContext;var prevInteractions=pushInteractions(root);// Reset this to null before calling lifecycles
17336ReactCurrentOwner$2.current=null;// The commit phase is broken into several sub-phases. We do a separate pass
17337// of the effect list for each phase: all mutation effects come before all
17338// layout effects, and so on.
17339// The first phase a "before mutation" phase. We use this phase to read the
17340// state of the host tree right before we mutate it. This is where
17341// getSnapshotBeforeUpdate is called.
17342startCommitSnapshotEffectsTimer();prepareForCommit(root.containerInfo);nextEffect=firstEffect;do{{invokeGuardedCallback(null,commitBeforeMutationEffects,null);if(hasCaughtError()){if(!(nextEffect!==null)){{throw Error("Should be working on an effect.");}}var error=clearCaughtError();captureCommitPhaseError(nextEffect,error);nextEffect=nextEffect.nextEffect;}}}while(nextEffect!==null);stopCommitSnapshotEffectsTimer();{// Mark the current commit time to be shared by all Profilers in this
17343// batch. This enables them to be grouped later.
17344recordCommitTime();}// The next phase is the mutation phase, where we mutate the host tree.
17345startCommitHostEffectsTimer();nextEffect=firstEffect;do{{invokeGuardedCallback(null,commitMutationEffects,null,root,renderPriorityLevel);if(hasCaughtError()){if(!(nextEffect!==null)){{throw Error("Should be working on an effect.");}}var _error=clearCaughtError();captureCommitPhaseError(nextEffect,_error);nextEffect=nextEffect.nextEffect;}}}while(nextEffect!==null);stopCommitHostEffectsTimer();resetAfterCommit(root.containerInfo);// The work-in-progress tree is now the current tree. This must come after
17346// the mutation phase, so that the previous tree is still current during
17347// componentWillUnmount, but before the layout phase, so that the finished
17348// work is current during componentDidMount/Update.
17349root.current=finishedWork;// The next phase is the layout phase, where we call effects that read
17350// the host tree after it's been mutated. The idiomatic use case for this is
17351// layout, but class component lifecycles also fire here for legacy reasons.
17352startCommitLifeCyclesTimer();nextEffect=firstEffect;do{{invokeGuardedCallback(null,commitLayoutEffects,null,root,expirationTime);if(hasCaughtError()){if(!(nextEffect!==null)){{throw Error("Should be working on an effect.");}}var _error2=clearCaughtError();captureCommitPhaseError(nextEffect,_error2);nextEffect=nextEffect.nextEffect;}}}while(nextEffect!==null);stopCommitLifeCyclesTimer();nextEffect=null;// Tell Scheduler to yield at the end of the frame, so the browser has an
17353// opportunity to paint.
17354requestPaint();{popInteractions(prevInteractions);}executionContext=prevExecutionContext;}else{// No effects.
17355root.current=finishedWork;// Measure these anyway so the flamegraph explicitly shows that there were
17356// no effects.
17357// TODO: Maybe there's a better way to report this.
17358startCommitSnapshotEffectsTimer();stopCommitSnapshotEffectsTimer();{recordCommitTime();}startCommitHostEffectsTimer();stopCommitHostEffectsTimer();startCommitLifeCyclesTimer();stopCommitLifeCyclesTimer();}stopCommitTimer();var rootDidHavePassiveEffects=rootDoesHavePassiveEffects;if(rootDoesHavePassiveEffects){// This commit has passive effects. Stash a reference to them. But don't
17359// schedule a callback until after flushing layout work.
17360rootDoesHavePassiveEffects=false;rootWithPendingPassiveEffects=root;pendingPassiveEffectsExpirationTime=expirationTime;pendingPassiveEffectsRenderPriority=renderPriorityLevel;}else{// We are done with the effect chain at this point so let's clear the
17361// nextEffect pointers to assist with GC. If we have passive effects, we'll
17362// clear this in flushPassiveEffects.
17363nextEffect=firstEffect;while(nextEffect!==null){var nextNextEffect=nextEffect.nextEffect;nextEffect.nextEffect=null;nextEffect=nextNextEffect;}}// Check if there's remaining work on this root
17364var remainingExpirationTime=root.firstPendingTime;if(remainingExpirationTime!==NoWork){{if(spawnedWorkDuringRender!==null){var expirationTimes=spawnedWorkDuringRender;spawnedWorkDuringRender=null;for(var i=0;i<expirationTimes.length;i++){scheduleInteractions(root,expirationTimes[i],root.memoizedInteractions);}}schedulePendingInteractions(root,remainingExpirationTime);}}else{// If there's no remaining work, we can clear the set of already failed
17365// error boundaries.
17366legacyErrorBoundariesThatAlreadyFailed=null;}{if(!rootDidHavePassiveEffects){// If there are no passive effects, then we can complete the pending interactions.
17367// Otherwise, we'll wait until after the passive effects are flushed.
17368// Wait to do this until after remaining work has been scheduled,
17369// so that we don't prematurely signal complete for interactions when there's e.g. hidden work.
17370finishPendingInteractions(root,expirationTime);}}if(remainingExpirationTime===Sync){// Count the number of times the root synchronously re-renders without
17371// finishing. If there are too many, it indicates an infinite update loop.
17372if(root===rootWithNestedUpdates){nestedUpdateCount++;}else{nestedUpdateCount=0;rootWithNestedUpdates=root;}}else{nestedUpdateCount=0;}onCommitRoot(finishedWork.stateNode,expirationTime);// Always call this before exiting `commitRoot`, to ensure that any
17373// additional work on this root is scheduled.
17374ensureRootIsScheduled(root);if(hasUncaughtError){hasUncaughtError=false;var _error3=firstUncaughtError;firstUncaughtError=null;throw _error3;}if((executionContext&LegacyUnbatchedContext)!==NoContext){// This is a legacy edge case. We just committed the initial mount of
17375// a ReactDOM.render-ed root inside of batchedUpdates. The commit fired
17376// synchronously, but layout updates should be deferred until the end
17377// of the batch.
17378return null;}// If layout work was scheduled, flush it now.
17379flushSyncCallbackQueue();return null;}function commitBeforeMutationEffects(){while(nextEffect!==null){var effectTag=nextEffect.effectTag;if((effectTag&Snapshot)!==NoEffect){setCurrentFiber(nextEffect);recordEffect();var current=nextEffect.alternate;commitBeforeMutationLifeCycles(current,nextEffect);resetCurrentFiber();}if((effectTag&Passive)!==NoEffect){// If there are passive effects, schedule a callback to flush at
17380// the earliest opportunity.
17381if(!rootDoesHavePassiveEffects){rootDoesHavePassiveEffects=true;scheduleCallback(NormalPriority,function(){flushPassiveEffects();return null;});}}nextEffect=nextEffect.nextEffect;}}function commitMutationEffects(root,renderPriorityLevel){// TODO: Should probably move the bulk of this function to commitWork.
17382while(nextEffect!==null){setCurrentFiber(nextEffect);var effectTag=nextEffect.effectTag;if(effectTag&ContentReset){commitResetTextContent(nextEffect);}if(effectTag&Ref){var current=nextEffect.alternate;if(current!==null){commitDetachRef(current);}}// The following switch statement is only concerned about placement,
17383// updates, and deletions. To avoid needing to add a case for every possible
17384// bitmap value, we remove the secondary effects from the effect tag and
17385// switch on that value.
17386var primaryEffectTag=effectTag&(Placement|Update|Deletion|Hydrating);switch(primaryEffectTag){case Placement:{commitPlacement(nextEffect);// Clear the "placement" from effect tag so that we know that this is
17387// inserted, before any life-cycles like componentDidMount gets called.
17388// TODO: findDOMNode doesn't rely on this any more but isMounted does
17389// and isMounted is deprecated anyway so we should be able to kill this.
17390nextEffect.effectTag&=~Placement;break;}case PlacementAndUpdate:{// Placement
17391commitPlacement(nextEffect);// Clear the "placement" from effect tag so that we know that this is
17392// inserted, before any life-cycles like componentDidMount gets called.
17393nextEffect.effectTag&=~Placement;// Update
17394var _current=nextEffect.alternate;commitWork(_current,nextEffect);break;}case Hydrating:{nextEffect.effectTag&=~Hydrating;break;}case HydratingAndUpdate:{nextEffect.effectTag&=~Hydrating;// Update
17395var _current2=nextEffect.alternate;commitWork(_current2,nextEffect);break;}case Update:{var _current3=nextEffect.alternate;commitWork(_current3,nextEffect);break;}case Deletion:{commitDeletion(root,nextEffect,renderPriorityLevel);break;}}// TODO: Only record a mutation effect if primaryEffectTag is non-zero.
17396recordEffect();resetCurrentFiber();nextEffect=nextEffect.nextEffect;}}function commitLayoutEffects(root,committedExpirationTime){// TODO: Should probably move the bulk of this function to commitWork.
17397while(nextEffect!==null){setCurrentFiber(nextEffect);var effectTag=nextEffect.effectTag;if(effectTag&(Update|Callback)){recordEffect();var current=nextEffect.alternate;commitLifeCycles(root,current,nextEffect);}if(effectTag&Ref){recordEffect();commitAttachRef(nextEffect);}resetCurrentFiber();nextEffect=nextEffect.nextEffect;}}function flushPassiveEffects(){if(pendingPassiveEffectsRenderPriority!==NoPriority){var priorityLevel=pendingPassiveEffectsRenderPriority>NormalPriority?NormalPriority:pendingPassiveEffectsRenderPriority;pendingPassiveEffectsRenderPriority=NoPriority;return runWithPriority$1(priorityLevel,flushPassiveEffectsImpl);}}function flushPassiveEffectsImpl(){if(rootWithPendingPassiveEffects===null){return false;}var root=rootWithPendingPassiveEffects;var expirationTime=pendingPassiveEffectsExpirationTime;rootWithPendingPassiveEffects=null;pendingPassiveEffectsExpirationTime=NoWork;if(!((executionContext&(RenderContext|CommitContext))===NoContext)){{throw Error("Cannot flush passive effects while already rendering.");}}var prevExecutionContext=executionContext;executionContext|=CommitContext;var prevInteractions=pushInteractions(root);{// Note: This currently assumes there are no passive effects on the root fiber
17398// because the root is not part of its own effect list.
17399// This could change in the future.
17400var _effect2=root.current.firstEffect;while(_effect2!==null){{setCurrentFiber(_effect2);invokeGuardedCallback(null,commitPassiveHookEffects,null,_effect2);if(hasCaughtError()){if(!(_effect2!==null)){{throw Error("Should be working on an effect.");}}var _error5=clearCaughtError();captureCommitPhaseError(_effect2,_error5);}resetCurrentFiber();}var nextNextEffect=_effect2.nextEffect;// Remove nextEffect pointer to assist GC
17401_effect2.nextEffect=null;_effect2=nextNextEffect;}}{popInteractions(prevInteractions);finishPendingInteractions(root,expirationTime);}executionContext=prevExecutionContext;flushSyncCallbackQueue();// If additional passive effects were scheduled, increment a counter. If this
17402// exceeds the limit, we'll fire a warning.
17403nestedPassiveUpdateCount=rootWithPendingPassiveEffects===null?0:nestedPassiveUpdateCount+1;return true;}function isAlreadyFailedLegacyErrorBoundary(instance){return legacyErrorBoundariesThatAlreadyFailed!==null&&legacyErrorBoundariesThatAlreadyFailed.has(instance);}function markLegacyErrorBoundaryAsFailed(instance){if(legacyErrorBoundariesThatAlreadyFailed===null){legacyErrorBoundariesThatAlreadyFailed=new Set([instance]);}else{legacyErrorBoundariesThatAlreadyFailed.add(instance);}}function prepareToThrowUncaughtError(error){if(!hasUncaughtError){hasUncaughtError=true;firstUncaughtError=error;}}var onUncaughtError=prepareToThrowUncaughtError;function captureCommitPhaseErrorOnRoot(rootFiber,sourceFiber,error){var errorInfo=createCapturedValue(error,sourceFiber);var update=createRootErrorUpdate(rootFiber,errorInfo,Sync);enqueueUpdate(rootFiber,update);var root=markUpdateTimeFromFiberToRoot(rootFiber,Sync);if(root!==null){ensureRootIsScheduled(root);schedulePendingInteractions(root,Sync);}}function captureCommitPhaseError(sourceFiber,error){if(sourceFiber.tag===HostRoot){// Error was thrown at the root. There is no parent, so the root
17404// itself should capture it.
17405captureCommitPhaseErrorOnRoot(sourceFiber,sourceFiber,error);return;}var fiber=sourceFiber.return;while(fiber!==null){if(fiber.tag===HostRoot){captureCommitPhaseErrorOnRoot(fiber,sourceFiber,error);return;}else if(fiber.tag===ClassComponent){var ctor=fiber.type;var instance=fiber.stateNode;if(typeof ctor.getDerivedStateFromError==='function'||typeof instance.componentDidCatch==='function'&&!isAlreadyFailedLegacyErrorBoundary(instance)){var errorInfo=createCapturedValue(error,sourceFiber);var update=createClassErrorUpdate(fiber,errorInfo,// TODO: This is always sync
17406Sync);enqueueUpdate(fiber,update);var root=markUpdateTimeFromFiberToRoot(fiber,Sync);if(root!==null){ensureRootIsScheduled(root);schedulePendingInteractions(root,Sync);}return;}}fiber=fiber.return;}}function pingSuspendedRoot(root,thenable,suspendedTime){var pingCache=root.pingCache;if(pingCache!==null){// The thenable resolved, so we no longer need to memoize, because it will
17407// never be thrown again.
17408pingCache.delete(thenable);}if(workInProgressRoot===root&&renderExpirationTime$1===suspendedTime){// Received a ping at the same priority level at which we're currently
17409// rendering. We might want to restart this render. This should mirror
17410// the logic of whether or not a root suspends once it completes.
17411// TODO: If we're rendering sync either due to Sync, Batched or expired,
17412// we should probably never restart.
17413// If we're suspended with delay, we'll always suspend so we can always
17414// restart. If we're suspended without any updates, it might be a retry.
17415// If it's early in the retry we can restart. We can't know for sure
17416// whether we'll eventually process an update during this render pass,
17417// but it's somewhat unlikely that we get to a ping before that, since
17418// getting to the root most update is usually very fast.
17419if(workInProgressRootExitStatus===RootSuspendedWithDelay||workInProgressRootExitStatus===RootSuspended&&workInProgressRootLatestProcessedExpirationTime===Sync&&now()-globalMostRecentFallbackTime<FALLBACK_THROTTLE_MS){// Restart from the root. Don't need to schedule a ping because
17420// we're already working on this tree.
17421prepareFreshStack(root,renderExpirationTime$1);}else{// Even though we can't restart right now, we might get an
17422// opportunity later. So we mark this render as having a ping.
17423workInProgressRootHasPendingPing=true;}return;}if(!isRootSuspendedAtTime(root,suspendedTime)){// The root is no longer suspended at this time.
17424return;}var lastPingedTime=root.lastPingedTime;if(lastPingedTime!==NoWork&&lastPingedTime<suspendedTime){// There's already a lower priority ping scheduled.
17425return;}// Mark the time at which this ping was scheduled.
17426root.lastPingedTime=suspendedTime;ensureRootIsScheduled(root);schedulePendingInteractions(root,suspendedTime);}function retryTimedOutBoundary(boundaryFiber,retryTime){// The boundary fiber (a Suspense component or SuspenseList component)
17427// previously was rendered in its fallback state. One of the promises that
17428// suspended it has resolved, which means at least part of the tree was
17429// likely unblocked. Try rendering again, at a new expiration time.
17430if(retryTime===NoWork){var suspenseConfig=null;// Retries don't carry over the already committed update.
17431var currentTime=requestCurrentTimeForUpdate();retryTime=computeExpirationForFiber(currentTime,boundaryFiber,suspenseConfig);}// TODO: Special case idle priority?
17432var root=markUpdateTimeFromFiberToRoot(boundaryFiber,retryTime);if(root!==null){ensureRootIsScheduled(root);schedulePendingInteractions(root,retryTime);}}function resolveRetryThenable(boundaryFiber,thenable){var retryTime=NoWork;// Default
17433var retryCache;{retryCache=boundaryFiber.stateNode;}if(retryCache!==null){// The thenable resolved, so we no longer need to memoize, because it will
17434// never be thrown again.
17435retryCache.delete(thenable);}retryTimedOutBoundary(boundaryFiber,retryTime);}// Computes the next Just Noticeable Difference (JND) boundary.
17436// The theory is that a person can't tell the difference between small differences in time.
17437// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable
17438// difference in the experience. However, waiting for longer might mean that we can avoid
17439// showing an intermediate loading state. The longer we have already waited, the harder it
17440// is to tell small differences in time. Therefore, the longer we've already waited,
17441// the longer we can wait additionally. At some point we have to give up though.
17442// We pick a train model where the next boundary commits at a consistent schedule.
17443// These particular numbers are vague estimates. We expect to adjust them based on research.
17444function jnd(timeElapsed){return timeElapsed<120?120:timeElapsed<480?480:timeElapsed<1080?1080:timeElapsed<1920?1920:timeElapsed<3000?3000:timeElapsed<4320?4320:ceil(timeElapsed/1960)*1960;}function computeMsUntilSuspenseLoadingDelay(mostRecentEventTime,committedExpirationTime,suspenseConfig){var busyMinDurationMs=suspenseConfig.busyMinDurationMs|0;if(busyMinDurationMs<=0){return 0;}var busyDelayMs=suspenseConfig.busyDelayMs|0;// Compute the time until this render pass would expire.
17445var currentTimeMs=now();var eventTimeMs=inferTimeFromExpirationTimeWithSuspenseConfig(mostRecentEventTime,suspenseConfig);var timeElapsed=currentTimeMs-eventTimeMs;if(timeElapsed<=busyDelayMs){// If we haven't yet waited longer than the initial delay, we don't
17446// have to wait any additional time.
17447return 0;}var msUntilTimeout=busyDelayMs+busyMinDurationMs-timeElapsed;// This is the value that is passed to `setTimeout`.
17448return msUntilTimeout;}function checkForNestedUpdates(){if(nestedUpdateCount>NESTED_UPDATE_LIMIT){nestedUpdateCount=0;rootWithNestedUpdates=null;{{throw Error("Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.");}}}{if(nestedPassiveUpdateCount>NESTED_PASSIVE_UPDATE_LIMIT){nestedPassiveUpdateCount=0;error('Maximum update depth exceeded. This can happen when a component '+"calls setState inside useEffect, but useEffect either doesn't "+'have a dependency array, or one of the dependencies changes on '+'every render.');}}}function flushRenderPhaseStrictModeWarningsInDEV(){{ReactStrictModeWarnings.flushLegacyContextWarning();{ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();}}}function stopFinishedWorkLoopTimer(){var didCompleteRoot=true;stopWorkLoopTimer(interruptedBy,didCompleteRoot);interruptedBy=null;}function stopInterruptedWorkLoopTimer(){// TODO: Track which fiber caused the interruption.
17449var didCompleteRoot=false;stopWorkLoopTimer(interruptedBy,didCompleteRoot);interruptedBy=null;}function checkForInterruption(fiberThatReceivedUpdate,updateExpirationTime){if(workInProgressRoot!==null&&updateExpirationTime>renderExpirationTime$1){interruptedBy=fiberThatReceivedUpdate;}}var didWarnStateUpdateForUnmountedComponent=null;function warnAboutUpdateOnUnmountedFiberInDEV(fiber){{var tag=fiber.tag;if(tag!==HostRoot&&tag!==ClassComponent&&tag!==FunctionComponent&&tag!==ForwardRef&&tag!==MemoComponent&&tag!==SimpleMemoComponent&&tag!==Block){// Only warn for user-defined components, not internal ones like Suspense.
17450return;}// the problematic code almost always lies inside that component.
17451var componentName=getComponentName(fiber.type)||'ReactComponent';if(didWarnStateUpdateForUnmountedComponent!==null){if(didWarnStateUpdateForUnmountedComponent.has(componentName)){return;}didWarnStateUpdateForUnmountedComponent.add(componentName);}else{didWarnStateUpdateForUnmountedComponent=new Set([componentName]);}error("Can't perform a React state update on an unmounted component. This "+'is a no-op, but it indicates a memory leak in your application. To '+'fix, cancel all subscriptions and asynchronous tasks in %s.%s',tag===ClassComponent?'the componentWillUnmount method':'a useEffect cleanup function',getStackByFiberInDevAndProd(fiber));}}var beginWork$1;{var dummyFiber=null;beginWork$1=function(current,unitOfWork,expirationTime){// If a component throws an error, we replay it again in a synchronously
17452// dispatched event, so that the debugger will treat it as an uncaught
17453// error See ReactErrorUtils for more information.
17454// Before entering the begin phase, copy the work-in-progress onto a dummy
17455// fiber. If beginWork throws, we'll use this to reset the state.
17456var originalWorkInProgressCopy=assignFiberPropertiesInDEV(dummyFiber,unitOfWork);try{return beginWork(current,unitOfWork,expirationTime);}catch(originalError){if(originalError!==null&&typeof originalError==='object'&&typeof originalError.then==='function'){// Don't replay promises. Treat everything else like an error.
17457throw originalError;}// Keep this code in sync with handleError; any changes here must have
17458// corresponding changes there.
17459resetContextDependencies();resetHooksAfterThrow();// Don't reset current debug fiber, since we're about to work on the
17460// same fiber again.
17461// Unwind the failed stack frame
17462unwindInterruptedWork(unitOfWork);// Restore the original properties of the fiber.
17463assignFiberPropertiesInDEV(unitOfWork,originalWorkInProgressCopy);if(unitOfWork.mode&ProfileMode){// Reset the profiler timer.
17464startProfilerTimer(unitOfWork);}// Run beginWork again.
17465invokeGuardedCallback(null,beginWork,null,current,unitOfWork,expirationTime);if(hasCaughtError()){var replayError=clearCaughtError();// `invokeGuardedCallback` sometimes sets an expando `_suppressLogging`.
17466// Rethrow this error instead of the original one.
17467throw replayError;}else{// This branch is reachable if the render phase is impure.
17468throw originalError;}}};}var didWarnAboutUpdateInRender=false;var didWarnAboutUpdateInRenderForAnotherComponent;{didWarnAboutUpdateInRenderForAnotherComponent=new Set();}function warnAboutRenderPhaseUpdatesInDEV(fiber){{if(isRendering&&(executionContext&RenderContext)!==NoContext){switch(fiber.tag){case FunctionComponent:case ForwardRef:case SimpleMemoComponent:{var renderingComponentName=workInProgress&&getComponentName(workInProgress.type)||'Unknown';// Dedupe by the rendering component because it's the one that needs to be fixed.
17469var dedupeKey=renderingComponentName;if(!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)){didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);var setStateComponentName=getComponentName(fiber.type)||'Unknown';error('Cannot update a component (`%s`) while rendering a '+'different component (`%s`). To locate the bad setState() call inside `%s`, '+'follow the stack trace as described in https://fb.me/setstate-in-render',setStateComponentName,renderingComponentName,renderingComponentName);}break;}case ClassComponent:{if(!didWarnAboutUpdateInRender){error('Cannot update during an existing state transition (such as '+'within `render`). Render methods should be a pure '+'function of props and state.');didWarnAboutUpdateInRender=true;}break;}}}}}// a 'shared' variable that changes when act() opens/closes in tests.
17470var IsThisRendererActing={current:false};function warnIfNotScopedWithMatchingAct(fiber){{if(IsSomeRendererActing.current===true&&IsThisRendererActing.current!==true){error("It looks like you're using the wrong act() around your test interactions.\n"+'Be sure to use the matching version of act() corresponding to your renderer:\n\n'+'// for react-dom:\n'+"import {act} from 'react-dom/test-utils';\n"+'// ...\n'+'act(() => ...);\n\n'+'// for react-test-renderer:\n'+"import TestRenderer from 'react-test-renderer';\n"+'const {act} = TestRenderer;\n'+'// ...\n'+'act(() => ...);'+'%s',getStackByFiberInDevAndProd(fiber));}}}function warnIfNotCurrentlyActingEffectsInDEV(fiber){{if((fiber.mode&StrictMode)!==NoMode&&IsSomeRendererActing.current===false&&IsThisRendererActing.current===false){error('An update to %s ran an effect, but was not wrapped in act(...).\n\n'+'When testing, code that causes React state updates should be '+'wrapped into act(...):\n\n'+'act(() => {\n'+'  /* fire events that update state */\n'+'});\n'+'/* assert on the output */\n\n'+"This ensures that you're testing the behavior the user would see "+'in the browser.'+' Learn more at https://fb.me/react-wrap-tests-with-act'+'%s',getComponentName(fiber.type),getStackByFiberInDevAndProd(fiber));}}}function warnIfNotCurrentlyActingUpdatesInDEV(fiber){{if(executionContext===NoContext&&IsSomeRendererActing.current===false&&IsThisRendererActing.current===false){error('An update to %s inside a test was not wrapped in act(...).\n\n'+'When testing, code that causes React state updates should be '+'wrapped into act(...):\n\n'+'act(() => {\n'+'  /* fire events that update state */\n'+'});\n'+'/* assert on the output */\n\n'+"This ensures that you're testing the behavior the user would see "+'in the browser.'+' Learn more at https://fb.me/react-wrap-tests-with-act'+'%s',getComponentName(fiber.type),getStackByFiberInDevAndProd(fiber));}}}var warnIfNotCurrentlyActingUpdatesInDev=warnIfNotCurrentlyActingUpdatesInDEV;// In tests, we want to enforce a mocked scheduler.
17471var didWarnAboutUnmockedScheduler=false;// TODO Before we release concurrent mode, revisit this and decide whether a mocked
17472// scheduler is the actual recommendation. The alternative could be a testing build,
17473// a new lib, or whatever; we dunno just yet. This message is for early adopters
17474// to get their tests right.
17475function warnIfUnmockedScheduler(fiber){{if(didWarnAboutUnmockedScheduler===false&&Scheduler.unstable_flushAllWithoutAsserting===undefined){if(fiber.mode&BlockingMode||fiber.mode&ConcurrentMode){didWarnAboutUnmockedScheduler=true;error('In Concurrent or Sync modes, the "scheduler" module needs to be mocked '+'to guarantee consistent behaviour across tests and browsers. '+'For example, with jest: \n'+"jest.mock('scheduler', () => require('scheduler/unstable_mock'));\n\n"+'For more info, visit https://fb.me/react-mock-scheduler');}}}}function computeThreadID(root,expirationTime){// Interaction threads are unique per root and expiration time.
17476return expirationTime*1000+root.interactionThreadID;}function markSpawnedWork(expirationTime){if(spawnedWorkDuringRender===null){spawnedWorkDuringRender=[expirationTime];}else{spawnedWorkDuringRender.push(expirationTime);}}function scheduleInteractions(root,expirationTime,interactions){if(interactions.size>0){var pendingInteractionMap=root.pendingInteractionMap;var pendingInteractions=pendingInteractionMap.get(expirationTime);if(pendingInteractions!=null){interactions.forEach(function(interaction){if(!pendingInteractions.has(interaction)){// Update the pending async work count for previously unscheduled interaction.
17477interaction.__count++;}pendingInteractions.add(interaction);});}else{pendingInteractionMap.set(expirationTime,new Set(interactions));// Update the pending async work count for the current interactions.
17478interactions.forEach(function(interaction){interaction.__count++;});}var subscriber=tracing.__subscriberRef.current;if(subscriber!==null){var threadID=computeThreadID(root,expirationTime);subscriber.onWorkScheduled(interactions,threadID);}}}function schedulePendingInteractions(root,expirationTime){scheduleInteractions(root,expirationTime,tracing.__interactionsRef.current);}function startWorkOnPendingInteractions(root,expirationTime){// we can accurately attribute time spent working on it, And so that cascading
17479// work triggered during the render phase will be associated with it.
17480var interactions=new Set();root.pendingInteractionMap.forEach(function(scheduledInteractions,scheduledExpirationTime){if(scheduledExpirationTime>=expirationTime){scheduledInteractions.forEach(function(interaction){return interactions.add(interaction);});}});// Store the current set of interactions on the FiberRoot for a few reasons:
17481// We can re-use it in hot functions like performConcurrentWorkOnRoot()
17482// without having to recalculate it. We will also use it in commitWork() to
17483// pass to any Profiler onRender() hooks. This also provides DevTools with a
17484// way to access it when the onCommitRoot() hook is called.
17485root.memoizedInteractions=interactions;if(interactions.size>0){var subscriber=tracing.__subscriberRef.current;if(subscriber!==null){var threadID=computeThreadID(root,expirationTime);try{subscriber.onWorkStarted(interactions,threadID);}catch(error){// If the subscriber throws, rethrow it in a separate task
17486scheduleCallback(ImmediatePriority,function(){throw error;});}}}}function finishPendingInteractions(root,committedExpirationTime){var earliestRemainingTimeAfterCommit=root.firstPendingTime;var subscriber;try{subscriber=tracing.__subscriberRef.current;if(subscriber!==null&&root.memoizedInteractions.size>0){var threadID=computeThreadID(root,committedExpirationTime);subscriber.onWorkStopped(root.memoizedInteractions,threadID);}}catch(error){// If the subscriber throws, rethrow it in a separate task
17487scheduleCallback(ImmediatePriority,function(){throw error;});}finally{// Clear completed interactions from the pending Map.
17488// Unless the render was suspended or cascading work was scheduled,
17489// In which case– leave pending interactions until the subsequent render.
17490var pendingInteractionMap=root.pendingInteractionMap;pendingInteractionMap.forEach(function(scheduledInteractions,scheduledExpirationTime){// Only decrement the pending interaction count if we're done.
17491// If there's still work at the current priority,
17492// That indicates that we are waiting for suspense data.
17493if(scheduledExpirationTime>earliestRemainingTimeAfterCommit){pendingInteractionMap.delete(scheduledExpirationTime);scheduledInteractions.forEach(function(interaction){interaction.__count--;if(subscriber!==null&&interaction.__count===0){try{subscriber.onInteractionScheduledWorkCompleted(interaction);}catch(error){// If the subscriber throws, rethrow it in a separate task
17494scheduleCallback(ImmediatePriority,function(){throw error;});}}});}});}}var onScheduleFiberRoot=null;var onCommitFiberRoot=null;var onCommitFiberUnmount=null;var hasLoggedError=false;var isDevToolsPresent=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__!=='undefined';function injectInternals(internals){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__==='undefined'){// No DevTools
17495return false;}var hook=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(hook.isDisabled){// This isn't a real property on the hook, but it can be set to opt out
17496// of DevTools integration and associated warnings and logs.
17497// https://github.com/facebook/react/issues/3877
17498return true;}if(!hook.supportsFiber){{error('The installed version of React DevTools is too old and will not work '+'with the current version of React. Please update React DevTools. '+'https://fb.me/react-devtools');}// DevTools exists, even though it doesn't support Fiber.
17499return true;}try{var rendererID=hook.inject(internals);// We have successfully injected, so now it is safe to set up hooks.
17500if(true){// Only used by Fast Refresh
17501if(typeof hook.onScheduleFiberRoot==='function'){onScheduleFiberRoot=function(root,children){try{hook.onScheduleFiberRoot(rendererID,root,children);}catch(err){if( true&&!hasLoggedError){hasLoggedError=true;error('React instrumentation encountered an error: %s',err);}}};}}onCommitFiberRoot=function(root,expirationTime){try{var didError=(root.current.effectTag&DidCapture)===DidCapture;if(enableProfilerTimer){var currentTime=getCurrentTime();var priorityLevel=inferPriorityFromExpirationTime(currentTime,expirationTime);hook.onCommitFiberRoot(rendererID,root,priorityLevel,didError);}else{hook.onCommitFiberRoot(rendererID,root,undefined,didError);}}catch(err){if(true){if(!hasLoggedError){hasLoggedError=true;error('React instrumentation encountered an error: %s',err);}}}};onCommitFiberUnmount=function(fiber){try{hook.onCommitFiberUnmount(rendererID,fiber);}catch(err){if(true){if(!hasLoggedError){hasLoggedError=true;error('React instrumentation encountered an error: %s',err);}}}};}catch(err){// Catch all errors because it is unsafe to throw during initialization.
17502{error('React instrumentation encountered an error: %s.',err);}}// DevTools exists
17503return true;}function onScheduleRoot(root,children){if(typeof onScheduleFiberRoot==='function'){onScheduleFiberRoot(root,children);}}function onCommitRoot(root,expirationTime){if(typeof onCommitFiberRoot==='function'){onCommitFiberRoot(root,expirationTime);}}function onCommitUnmount(fiber){if(typeof onCommitFiberUnmount==='function'){onCommitFiberUnmount(fiber);}}var hasBadMapPolyfill;{hasBadMapPolyfill=false;try{var nonExtensibleObject=Object.preventExtensions({});var testMap=new Map([[nonExtensibleObject,null]]);var testSet=new Set([nonExtensibleObject]);// This is necessary for Rollup to not consider these unused.
17504// https://github.com/rollup/rollup/issues/1771
17505// TODO: we can remove these if Rollup fixes the bug.
17506testMap.set(0,0);testSet.add(0);}catch(e){// TODO: Consider warning about bad polyfills
17507hasBadMapPolyfill=true;}}var debugCounter=1;function FiberNode(tag,pendingProps,key,mode){// Instance
17508this.tag=tag;this.key=key;this.elementType=null;this.type=null;this.stateNode=null;// Fiber
17509this.return=null;this.child=null;this.sibling=null;this.index=0;this.ref=null;this.pendingProps=pendingProps;this.memoizedProps=null;this.updateQueue=null;this.memoizedState=null;this.dependencies=null;this.mode=mode;// Effects
17510this.effectTag=NoEffect;this.nextEffect=null;this.firstEffect=null;this.lastEffect=null;this.expirationTime=NoWork;this.childExpirationTime=NoWork;this.alternate=null;{// Note: The following is done to avoid a v8 performance cliff.
17511//
17512// Initializing the fields below to smis and later updating them with
17513// double values will cause Fibers to end up having separate shapes.
17514// This behavior/bug has something to do with Object.preventExtension().
17515// Fortunately this only impacts DEV builds.
17516// Unfortunately it makes React unusably slow for some applications.
17517// To work around this, initialize the fields below with doubles.
17518//
17519// Learn more about this here:
17520// https://github.com/facebook/react/issues/14365
17521// https://bugs.chromium.org/p/v8/issues/detail?id=8538
17522this.actualDuration=Number.NaN;this.actualStartTime=Number.NaN;this.selfBaseDuration=Number.NaN;this.treeBaseDuration=Number.NaN;// It's okay to replace the initial doubles with smis after initialization.
17523// This won't trigger the performance cliff mentioned above,
17524// and it simplifies other profiler code (including DevTools).
17525this.actualDuration=0;this.actualStartTime=-1;this.selfBaseDuration=0;this.treeBaseDuration=0;}// This is normally DEV-only except www when it adds listeners.
17526// TODO: remove the User Timing integration in favor of Root Events.
17527{this._debugID=debugCounter++;this._debugIsCurrentlyTiming=false;}{this._debugSource=null;this._debugOwner=null;this._debugNeedsRemount=false;this._debugHookTypes=null;if(!hasBadMapPolyfill&&typeof Object.preventExtensions==='function'){Object.preventExtensions(this);}}}// This is a constructor function, rather than a POJO constructor, still
17528// please ensure we do the following:
17529// 1) Nobody should add any instance methods on this. Instance methods can be
17530//    more difficult to predict when they get optimized and they are almost
17531//    never inlined properly in static compilers.
17532// 2) Nobody should rely on `instanceof Fiber` for type testing. We should
17533//    always know when it is a fiber.
17534// 3) We might want to experiment with using numeric keys since they are easier
17535//    to optimize in a non-JIT environment.
17536// 4) We can easily go from a constructor to a createFiber object literal if that
17537//    is faster.
17538// 5) It should be easy to port this to a C struct and keep a C implementation
17539//    compatible.
17540var createFiber=function(tag,pendingProps,key,mode){// $FlowFixMe: the shapes are exact here but Flow doesn't like constructors
17541return new FiberNode(tag,pendingProps,key,mode);};function shouldConstruct(Component){var prototype=Component.prototype;return!!(prototype&&prototype.isReactComponent);}function isSimpleFunctionComponent(type){return typeof type==='function'&&!shouldConstruct(type)&&type.defaultProps===undefined;}function resolveLazyComponentTag(Component){if(typeof Component==='function'){return shouldConstruct(Component)?ClassComponent:FunctionComponent;}else if(Component!==undefined&&Component!==null){var $$typeof=Component.$$typeof;if($$typeof===REACT_FORWARD_REF_TYPE){return ForwardRef;}if($$typeof===REACT_MEMO_TYPE){return MemoComponent;}}return IndeterminateComponent;}// This is used to create an alternate fiber to do work on.
17542function createWorkInProgress(current,pendingProps){var workInProgress=current.alternate;if(workInProgress===null){// We use a double buffering pooling technique because we know that we'll
17543// only ever need at most two versions of a tree. We pool the "other" unused
17544// node that we're free to reuse. This is lazily created to avoid allocating
17545// extra objects for things that are never updated. It also allow us to
17546// reclaim the extra memory if needed.
17547workInProgress=createFiber(current.tag,pendingProps,current.key,current.mode);workInProgress.elementType=current.elementType;workInProgress.type=current.type;workInProgress.stateNode=current.stateNode;{// DEV-only fields
17548{workInProgress._debugID=current._debugID;}workInProgress._debugSource=current._debugSource;workInProgress._debugOwner=current._debugOwner;workInProgress._debugHookTypes=current._debugHookTypes;}workInProgress.alternate=current;current.alternate=workInProgress;}else{workInProgress.pendingProps=pendingProps;// We already have an alternate.
17549// Reset the effect tag.
17550workInProgress.effectTag=NoEffect;// The effect list is no longer valid.
17551workInProgress.nextEffect=null;workInProgress.firstEffect=null;workInProgress.lastEffect=null;{// We intentionally reset, rather than copy, actualDuration & actualStartTime.
17552// This prevents time from endlessly accumulating in new commits.
17553// This has the downside of resetting values for different priority renders,
17554// But works for yielding (the common case) and should support resuming.
17555workInProgress.actualDuration=0;workInProgress.actualStartTime=-1;}}workInProgress.childExpirationTime=current.childExpirationTime;workInProgress.expirationTime=current.expirationTime;workInProgress.child=current.child;workInProgress.memoizedProps=current.memoizedProps;workInProgress.memoizedState=current.memoizedState;workInProgress.updateQueue=current.updateQueue;// Clone the dependencies object. This is mutated during the render phase, so
17556// it cannot be shared with the current fiber.
17557var currentDependencies=current.dependencies;workInProgress.dependencies=currentDependencies===null?null:{expirationTime:currentDependencies.expirationTime,firstContext:currentDependencies.firstContext,responders:currentDependencies.responders};// These will be overridden during the parent's reconciliation
17558workInProgress.sibling=current.sibling;workInProgress.index=current.index;workInProgress.ref=current.ref;{workInProgress.selfBaseDuration=current.selfBaseDuration;workInProgress.treeBaseDuration=current.treeBaseDuration;}{workInProgress._debugNeedsRemount=current._debugNeedsRemount;switch(workInProgress.tag){case IndeterminateComponent:case FunctionComponent:case SimpleMemoComponent:workInProgress.type=resolveFunctionForHotReloading(current.type);break;case ClassComponent:workInProgress.type=resolveClassForHotReloading(current.type);break;case ForwardRef:workInProgress.type=resolveForwardRefForHotReloading(current.type);break;}}return workInProgress;}// Used to reuse a Fiber for a second pass.
17559function resetWorkInProgress(workInProgress,renderExpirationTime){// This resets the Fiber to what createFiber or createWorkInProgress would
17560// have set the values to before during the first pass. Ideally this wouldn't
17561// be necessary but unfortunately many code paths reads from the workInProgress
17562// when they should be reading from current and writing to workInProgress.
17563// We assume pendingProps, index, key, ref, return are still untouched to
17564// avoid doing another reconciliation.
17565// Reset the effect tag but keep any Placement tags, since that's something
17566// that child fiber is setting, not the reconciliation.
17567workInProgress.effectTag&=Placement;// The effect list is no longer valid.
17568workInProgress.nextEffect=null;workInProgress.firstEffect=null;workInProgress.lastEffect=null;var current=workInProgress.alternate;if(current===null){// Reset to createFiber's initial values.
17569workInProgress.childExpirationTime=NoWork;workInProgress.expirationTime=renderExpirationTime;workInProgress.child=null;workInProgress.memoizedProps=null;workInProgress.memoizedState=null;workInProgress.updateQueue=null;workInProgress.dependencies=null;{// Note: We don't reset the actualTime counts. It's useful to accumulate
17570// actual time across multiple render passes.
17571workInProgress.selfBaseDuration=0;workInProgress.treeBaseDuration=0;}}else{// Reset to the cloned values that createWorkInProgress would've.
17572workInProgress.childExpirationTime=current.childExpirationTime;workInProgress.expirationTime=current.expirationTime;workInProgress.child=current.child;workInProgress.memoizedProps=current.memoizedProps;workInProgress.memoizedState=current.memoizedState;workInProgress.updateQueue=current.updateQueue;// Clone the dependencies object. This is mutated during the render phase, so
17573// it cannot be shared with the current fiber.
17574var currentDependencies=current.dependencies;workInProgress.dependencies=currentDependencies===null?null:{expirationTime:currentDependencies.expirationTime,firstContext:currentDependencies.firstContext,responders:currentDependencies.responders};{// Note: We don't reset the actualTime counts. It's useful to accumulate
17575// actual time across multiple render passes.
17576workInProgress.selfBaseDuration=current.selfBaseDuration;workInProgress.treeBaseDuration=current.treeBaseDuration;}}return workInProgress;}function createHostRootFiber(tag){var mode;if(tag===ConcurrentRoot){mode=ConcurrentMode|BlockingMode|StrictMode;}else if(tag===BlockingRoot){mode=BlockingMode|StrictMode;}else{mode=NoMode;}if(isDevToolsPresent){// Always collect profile timings when DevTools are present.
17577// This enables DevTools to start capturing timing at any point–
17578// Without some nodes in the tree having empty base times.
17579mode|=ProfileMode;}return createFiber(HostRoot,null,null,mode);}function createFiberFromTypeAndProps(type,// React$ElementType
17580key,pendingProps,owner,mode,expirationTime){var fiber;var fiberTag=IndeterminateComponent;// The resolved type is set if we know what the final type will be. I.e. it's not lazy.
17581var resolvedType=type;if(typeof type==='function'){if(shouldConstruct(type)){fiberTag=ClassComponent;{resolvedType=resolveClassForHotReloading(resolvedType);}}else{{resolvedType=resolveFunctionForHotReloading(resolvedType);}}}else if(typeof type==='string'){fiberTag=HostComponent;}else{getTag:switch(type){case REACT_FRAGMENT_TYPE:return createFiberFromFragment(pendingProps.children,mode,expirationTime,key);case REACT_CONCURRENT_MODE_TYPE:fiberTag=Mode;mode|=ConcurrentMode|BlockingMode|StrictMode;break;case REACT_STRICT_MODE_TYPE:fiberTag=Mode;mode|=StrictMode;break;case REACT_PROFILER_TYPE:return createFiberFromProfiler(pendingProps,mode,expirationTime,key);case REACT_SUSPENSE_TYPE:return createFiberFromSuspense(pendingProps,mode,expirationTime,key);case REACT_SUSPENSE_LIST_TYPE:return createFiberFromSuspenseList(pendingProps,mode,expirationTime,key);default:{if(typeof type==='object'&&type!==null){switch(type.$$typeof){case REACT_PROVIDER_TYPE:fiberTag=ContextProvider;break getTag;case REACT_CONTEXT_TYPE:// This is a consumer
17582fiberTag=ContextConsumer;break getTag;case REACT_FORWARD_REF_TYPE:fiberTag=ForwardRef;{resolvedType=resolveForwardRefForHotReloading(resolvedType);}break getTag;case REACT_MEMO_TYPE:fiberTag=MemoComponent;break getTag;case REACT_LAZY_TYPE:fiberTag=LazyComponent;resolvedType=null;break getTag;case REACT_BLOCK_TYPE:fiberTag=Block;break getTag;}}var info='';{if(type===undefined||typeof type==='object'&&type!==null&&Object.keys(type).length===0){info+=' You likely forgot to export your component from the file '+"it's defined in, or you might have mixed up default and "+'named imports.';}var ownerName=owner?getComponentName(owner.type):null;if(ownerName){info+='\n\nCheck the render method of `'+ownerName+'`.';}}{{throw Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+(type==null?type:typeof type)+"."+info);}}}}}fiber=createFiber(fiberTag,pendingProps,key,mode);fiber.elementType=type;fiber.type=resolvedType;fiber.expirationTime=expirationTime;return fiber;}function createFiberFromElement(element,mode,expirationTime){var owner=null;{owner=element._owner;}var type=element.type;var key=element.key;var pendingProps=element.props;var fiber=createFiberFromTypeAndProps(type,key,pendingProps,owner,mode,expirationTime);{fiber._debugSource=element._source;fiber._debugOwner=element._owner;}return fiber;}function createFiberFromFragment(elements,mode,expirationTime,key){var fiber=createFiber(Fragment,elements,key,mode);fiber.expirationTime=expirationTime;return fiber;}function createFiberFromProfiler(pendingProps,mode,expirationTime,key){{if(typeof pendingProps.id!=='string'||typeof pendingProps.onRender!=='function'){error('Profiler must specify an "id" string and "onRender" function as props');}}var fiber=createFiber(Profiler,pendingProps,key,mode|ProfileMode);// TODO: The Profiler fiber shouldn't have a type. It has a tag.
17583fiber.elementType=REACT_PROFILER_TYPE;fiber.type=REACT_PROFILER_TYPE;fiber.expirationTime=expirationTime;return fiber;}function createFiberFromSuspense(pendingProps,mode,expirationTime,key){var fiber=createFiber(SuspenseComponent,pendingProps,key,mode);// TODO: The SuspenseComponent fiber shouldn't have a type. It has a tag.
17584// This needs to be fixed in getComponentName so that it relies on the tag
17585// instead.
17586fiber.type=REACT_SUSPENSE_TYPE;fiber.elementType=REACT_SUSPENSE_TYPE;fiber.expirationTime=expirationTime;return fiber;}function createFiberFromSuspenseList(pendingProps,mode,expirationTime,key){var fiber=createFiber(SuspenseListComponent,pendingProps,key,mode);{// TODO: The SuspenseListComponent fiber shouldn't have a type. It has a tag.
17587// This needs to be fixed in getComponentName so that it relies on the tag
17588// instead.
17589fiber.type=REACT_SUSPENSE_LIST_TYPE;}fiber.elementType=REACT_SUSPENSE_LIST_TYPE;fiber.expirationTime=expirationTime;return fiber;}function createFiberFromText(content,mode,expirationTime){var fiber=createFiber(HostText,content,null,mode);fiber.expirationTime=expirationTime;return fiber;}function createFiberFromHostInstanceForDeletion(){var fiber=createFiber(HostComponent,null,null,NoMode);// TODO: These should not need a type.
17590fiber.elementType='DELETED';fiber.type='DELETED';return fiber;}function createFiberFromPortal(portal,mode,expirationTime){var pendingProps=portal.children!==null?portal.children:[];var fiber=createFiber(HostPortal,pendingProps,portal.key,mode);fiber.expirationTime=expirationTime;fiber.stateNode={containerInfo:portal.containerInfo,pendingChildren:null,// Used by persistent updates
17591implementation:portal.implementation};return fiber;}// Used for stashing WIP properties to replay failed work in DEV.
17592function assignFiberPropertiesInDEV(target,source){if(target===null){// This Fiber's initial properties will always be overwritten.
17593// We only use a Fiber to ensure the same hidden class so DEV isn't slow.
17594target=createFiber(IndeterminateComponent,null,null,NoMode);}// This is intentionally written as a list of all properties.
17595// We tried to use Object.assign() instead but this is called in
17596// the hottest path, and Object.assign() was too slow:
17597// https://github.com/facebook/react/issues/12502
17598// This code is DEV-only so size is not a concern.
17599target.tag=source.tag;target.key=source.key;target.elementType=source.elementType;target.type=source.type;target.stateNode=source.stateNode;target.return=source.return;target.child=source.child;target.sibling=source.sibling;target.index=source.index;target.ref=source.ref;target.pendingProps=source.pendingProps;target.memoizedProps=source.memoizedProps;target.updateQueue=source.updateQueue;target.memoizedState=source.memoizedState;target.dependencies=source.dependencies;target.mode=source.mode;target.effectTag=source.effectTag;target.nextEffect=source.nextEffect;target.firstEffect=source.firstEffect;target.lastEffect=source.lastEffect;target.expirationTime=source.expirationTime;target.childExpirationTime=source.childExpirationTime;target.alternate=source.alternate;{target.actualDuration=source.actualDuration;target.actualStartTime=source.actualStartTime;target.selfBaseDuration=source.selfBaseDuration;target.treeBaseDuration=source.treeBaseDuration;}{target._debugID=source._debugID;}target._debugSource=source._debugSource;target._debugOwner=source._debugOwner;target._debugIsCurrentlyTiming=source._debugIsCurrentlyTiming;target._debugNeedsRemount=source._debugNeedsRemount;target._debugHookTypes=source._debugHookTypes;return target;}function FiberRootNode(containerInfo,tag,hydrate){this.tag=tag;this.current=null;this.containerInfo=containerInfo;this.pendingChildren=null;this.pingCache=null;this.finishedExpirationTime=NoWork;this.finishedWork=null;this.timeoutHandle=noTimeout;this.context=null;this.pendingContext=null;this.hydrate=hydrate;this.callbackNode=null;this.callbackPriority=NoPriority;this.firstPendingTime=NoWork;this.firstSuspendedTime=NoWork;this.lastSuspendedTime=NoWork;this.nextKnownPendingLevel=NoWork;this.lastPingedTime=NoWork;this.lastExpiredTime=NoWork;{this.interactionThreadID=tracing.unstable_getThreadID();this.memoizedInteractions=new Set();this.pendingInteractionMap=new Map();}}function createFiberRoot(containerInfo,tag,hydrate,hydrationCallbacks){var root=new FiberRootNode(containerInfo,tag,hydrate);// stateNode is any.
17600var uninitializedFiber=createHostRootFiber(tag);root.current=uninitializedFiber;uninitializedFiber.stateNode=root;initializeUpdateQueue(uninitializedFiber);return root;}function isRootSuspendedAtTime(root,expirationTime){var firstSuspendedTime=root.firstSuspendedTime;var lastSuspendedTime=root.lastSuspendedTime;return firstSuspendedTime!==NoWork&&firstSuspendedTime>=expirationTime&&lastSuspendedTime<=expirationTime;}function markRootSuspendedAtTime(root,expirationTime){var firstSuspendedTime=root.firstSuspendedTime;var lastSuspendedTime=root.lastSuspendedTime;if(firstSuspendedTime<expirationTime){root.firstSuspendedTime=expirationTime;}if(lastSuspendedTime>expirationTime||firstSuspendedTime===NoWork){root.lastSuspendedTime=expirationTime;}if(expirationTime<=root.lastPingedTime){root.lastPingedTime=NoWork;}if(expirationTime<=root.lastExpiredTime){root.lastExpiredTime=NoWork;}}function markRootUpdatedAtTime(root,expirationTime){// Update the range of pending times
17601var firstPendingTime=root.firstPendingTime;if(expirationTime>firstPendingTime){root.firstPendingTime=expirationTime;}// Update the range of suspended times. Treat everything lower priority or
17602// equal to this update as unsuspended.
17603var firstSuspendedTime=root.firstSuspendedTime;if(firstSuspendedTime!==NoWork){if(expirationTime>=firstSuspendedTime){// The entire suspended range is now unsuspended.
17604root.firstSuspendedTime=root.lastSuspendedTime=root.nextKnownPendingLevel=NoWork;}else if(expirationTime>=root.lastSuspendedTime){root.lastSuspendedTime=expirationTime+1;}// This is a pending level. Check if it's higher priority than the next
17605// known pending level.
17606if(expirationTime>root.nextKnownPendingLevel){root.nextKnownPendingLevel=expirationTime;}}}function markRootFinishedAtTime(root,finishedExpirationTime,remainingExpirationTime){// Update the range of pending times
17607root.firstPendingTime=remainingExpirationTime;// Update the range of suspended times. Treat everything higher priority or
17608// equal to this update as unsuspended.
17609if(finishedExpirationTime<=root.lastSuspendedTime){// The entire suspended range is now unsuspended.
17610root.firstSuspendedTime=root.lastSuspendedTime=root.nextKnownPendingLevel=NoWork;}else if(finishedExpirationTime<=root.firstSuspendedTime){// Part of the suspended range is now unsuspended. Narrow the range to
17611// include everything between the unsuspended time (non-inclusive) and the
17612// last suspended time.
17613root.firstSuspendedTime=finishedExpirationTime-1;}if(finishedExpirationTime<=root.lastPingedTime){// Clear the pinged time
17614root.lastPingedTime=NoWork;}if(finishedExpirationTime<=root.lastExpiredTime){// Clear the expired time
17615root.lastExpiredTime=NoWork;}}function markRootExpiredAtTime(root,expirationTime){var lastExpiredTime=root.lastExpiredTime;if(lastExpiredTime===NoWork||lastExpiredTime>expirationTime){root.lastExpiredTime=expirationTime;}}var didWarnAboutNestedUpdates;var didWarnAboutFindNodeInStrictMode;{didWarnAboutNestedUpdates=false;didWarnAboutFindNodeInStrictMode={};}function getContextForSubtree(parentComponent){if(!parentComponent){return emptyContextObject;}var fiber=get(parentComponent);var parentContext=findCurrentUnmaskedContext(fiber);if(fiber.tag===ClassComponent){var Component=fiber.type;if(isContextProvider(Component)){return processChildContext(fiber,Component,parentContext);}}return parentContext;}function findHostInstanceWithWarning(component,methodName){{var fiber=get(component);if(fiber===undefined){if(typeof component.render==='function'){{{throw Error("Unable to find node on an unmounted component.");}}}else{{{throw Error("Argument appears to not be a ReactComponent. Keys: "+Object.keys(component));}}}}var hostFiber=findCurrentHostFiber(fiber);if(hostFiber===null){return null;}if(hostFiber.mode&StrictMode){var componentName=getComponentName(fiber.type)||'Component';if(!didWarnAboutFindNodeInStrictMode[componentName]){didWarnAboutFindNodeInStrictMode[componentName]=true;if(fiber.mode&StrictMode){error('%s is deprecated in StrictMode. '+'%s was passed an instance of %s which is inside StrictMode. '+'Instead, add a ref directly to the element you want to reference. '+'Learn more about using refs safely here: '+'https://fb.me/react-strict-mode-find-node%s',methodName,methodName,componentName,getStackByFiberInDevAndProd(hostFiber));}else{error('%s is deprecated in StrictMode. '+'%s was passed an instance of %s which renders StrictMode children. '+'Instead, add a ref directly to the element you want to reference. '+'Learn more about using refs safely here: '+'https://fb.me/react-strict-mode-find-node%s',methodName,methodName,componentName,getStackByFiberInDevAndProd(hostFiber));}}}return hostFiber.stateNode;}}function createContainer(containerInfo,tag,hydrate,hydrationCallbacks){return createFiberRoot(containerInfo,tag,hydrate);}function updateContainer(element,container,parentComponent,callback){{onScheduleRoot(container,element);}var current$1=container.current;var currentTime=requestCurrentTimeForUpdate();{// $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
17616if('undefined'!==typeof jest){warnIfUnmockedScheduler(current$1);warnIfNotScopedWithMatchingAct(current$1);}}var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,current$1,suspenseConfig);var context=getContextForSubtree(parentComponent);if(container.context===null){container.context=context;}else{container.pendingContext=context;}{if(isRendering&&current!==null&&!didWarnAboutNestedUpdates){didWarnAboutNestedUpdates=true;error('Render methods should be a pure function of props and state; '+'triggering nested component updates from render is not allowed. '+'If necessary, trigger nested updates in componentDidUpdate.\n\n'+'Check the render method of %s.',getComponentName(current.type)||'Unknown');}}var update=createUpdate(expirationTime,suspenseConfig);// Caution: React DevTools currently depends on this property
17617// being called "element".
17618update.payload={element:element};callback=callback===undefined?null:callback;if(callback!==null){{if(typeof callback!=='function'){error('render(...): Expected the last optional `callback` argument to be a '+'function. Instead received: %s.',callback);}}update.callback=callback;}enqueueUpdate(current$1,update);scheduleWork(current$1,expirationTime);return expirationTime;}function getPublicRootInstance(container){var containerFiber=container.current;if(!containerFiber.child){return null;}switch(containerFiber.child.tag){case HostComponent:return getPublicInstance(containerFiber.child.stateNode);default:return containerFiber.child.stateNode;}}function markRetryTimeImpl(fiber,retryTime){var suspenseState=fiber.memoizedState;if(suspenseState!==null&&suspenseState.dehydrated!==null){if(suspenseState.retryTime<retryTime){suspenseState.retryTime=retryTime;}}}// Increases the priority of thennables when they resolve within this boundary.
17619function markRetryTimeIfNotHydrated(fiber,retryTime){markRetryTimeImpl(fiber,retryTime);var alternate=fiber.alternate;if(alternate){markRetryTimeImpl(alternate,retryTime);}}function attemptUserBlockingHydration$1(fiber){if(fiber.tag!==SuspenseComponent){// We ignore HostRoots here because we can't increase
17620// their priority and they should not suspend on I/O,
17621// since you have to wrap anything that might suspend in
17622// Suspense.
17623return;}var expTime=computeInteractiveExpiration(requestCurrentTimeForUpdate());scheduleWork(fiber,expTime);markRetryTimeIfNotHydrated(fiber,expTime);}function attemptContinuousHydration$1(fiber){if(fiber.tag!==SuspenseComponent){// We ignore HostRoots here because we can't increase
17624// their priority and they should not suspend on I/O,
17625// since you have to wrap anything that might suspend in
17626// Suspense.
17627return;}scheduleWork(fiber,ContinuousHydration);markRetryTimeIfNotHydrated(fiber,ContinuousHydration);}function attemptHydrationAtCurrentPriority$1(fiber){if(fiber.tag!==SuspenseComponent){// We ignore HostRoots here because we can't increase
17628// their priority other than synchronously flush it.
17629return;}var currentTime=requestCurrentTimeForUpdate();var expTime=computeExpirationForFiber(currentTime,fiber,null);scheduleWork(fiber,expTime);markRetryTimeIfNotHydrated(fiber,expTime);}function findHostInstanceWithNoPortals(fiber){var hostFiber=findCurrentHostFiberWithNoPortals(fiber);if(hostFiber===null){return null;}if(hostFiber.tag===FundamentalComponent){return hostFiber.stateNode.instance;}return hostFiber.stateNode;}var shouldSuspendImpl=function(fiber){return false;};function shouldSuspend(fiber){return shouldSuspendImpl(fiber);}var overrideHookState=null;var overrideProps=null;var scheduleUpdate=null;var setSuspenseHandler=null;{var copyWithSetImpl=function(obj,path,idx,value){if(idx>=path.length){return value;}var key=path[idx];var updated=Array.isArray(obj)?obj.slice():_assign({},obj);// $FlowFixMe number or string is fine here
17630updated[key]=copyWithSetImpl(obj[key],path,idx+1,value);return updated;};var copyWithSet=function(obj,path,value){return copyWithSetImpl(obj,path,0,value);};// Support DevTools editable values for useState and useReducer.
17631overrideHookState=function(fiber,id,path,value){// For now, the "id" of stateful hooks is just the stateful hook index.
17632// This may change in the future with e.g. nested hooks.
17633var currentHook=fiber.memoizedState;while(currentHook!==null&&id>0){currentHook=currentHook.next;id--;}if(currentHook!==null){var newState=copyWithSet(currentHook.memoizedState,path,value);currentHook.memoizedState=newState;currentHook.baseState=newState;// We aren't actually adding an update to the queue,
17634// because there is no update we can add for useReducer hooks that won't trigger an error.
17635// (There's no appropriate action type for DevTools overrides.)
17636// As a result though, React will see the scheduled update as a noop and bailout.
17637// Shallow cloning props works as a workaround for now to bypass the bailout check.
17638fiber.memoizedProps=_assign({},fiber.memoizedProps);scheduleWork(fiber,Sync);}};// Support DevTools props for function components, forwardRef, memo, host components, etc.
17639overrideProps=function(fiber,path,value){fiber.pendingProps=copyWithSet(fiber.memoizedProps,path,value);if(fiber.alternate){fiber.alternate.pendingProps=fiber.pendingProps;}scheduleWork(fiber,Sync);};scheduleUpdate=function(fiber){scheduleWork(fiber,Sync);};setSuspenseHandler=function(newShouldSuspendImpl){shouldSuspendImpl=newShouldSuspendImpl;};}function injectIntoDevTools(devToolsConfig){var findFiberByHostInstance=devToolsConfig.findFiberByHostInstance;var ReactCurrentDispatcher=ReactSharedInternals.ReactCurrentDispatcher;return injectInternals(_assign({},devToolsConfig,{overrideHookState:overrideHookState,overrideProps:overrideProps,setSuspenseHandler:setSuspenseHandler,scheduleUpdate:scheduleUpdate,currentDispatcherRef:ReactCurrentDispatcher,findHostInstanceByFiber:function(fiber){var hostFiber=findCurrentHostFiber(fiber);if(hostFiber===null){return null;}return hostFiber.stateNode;},findFiberByHostInstance:function(instance){if(!findFiberByHostInstance){// Might not be implemented by the renderer.
17640return null;}return findFiberByHostInstance(instance);},// React Refresh
17641findHostInstancesForRefresh:findHostInstancesForRefresh,scheduleRefresh:scheduleRefresh,scheduleRoot:scheduleRoot,setRefreshHandler:setRefreshHandler,// Enables DevTools to append owner stacks to error messages in DEV mode.
17642getCurrentFiber:function(){return current;}}));}var IsSomeRendererActing$1=ReactSharedInternals.IsSomeRendererActing;function ReactDOMRoot(container,options){this._internalRoot=createRootImpl(container,ConcurrentRoot,options);}function ReactDOMBlockingRoot(container,tag,options){this._internalRoot=createRootImpl(container,tag,options);}ReactDOMRoot.prototype.render=ReactDOMBlockingRoot.prototype.render=function(children){var root=this._internalRoot;{if(typeof arguments[1]==='function'){error('render(...): does not support the second callback argument. '+'To execute a side effect after rendering, declare it in a component body with useEffect().');}var container=root.containerInfo;if(container.nodeType!==COMMENT_NODE){var hostInstance=findHostInstanceWithNoPortals(root.current);if(hostInstance){if(hostInstance.parentNode!==container){error('render(...): It looks like the React-rendered content of the '+'root container was removed without using React. This is not '+'supported and will cause errors. Instead, call '+"root.unmount() to empty a root's container.");}}}}updateContainer(children,root,null,null);};ReactDOMRoot.prototype.unmount=ReactDOMBlockingRoot.prototype.unmount=function(){{if(typeof arguments[0]==='function'){error('unmount(...): does not support a callback argument. '+'To execute a side effect after rendering, declare it in a component body with useEffect().');}}var root=this._internalRoot;var container=root.containerInfo;updateContainer(null,root,null,function(){unmarkContainerAsRoot(container);});};function createRootImpl(container,tag,options){// Tag is either LegacyRoot or Concurrent Root
17643var hydrate=options!=null&&options.hydrate===true;var hydrationCallbacks=options!=null&&options.hydrationOptions||null;var root=createContainer(container,tag,hydrate);markContainerAsRoot(root.current,container);if(hydrate&&tag!==LegacyRoot){var doc=container.nodeType===DOCUMENT_NODE?container:container.ownerDocument;eagerlyTrapReplayableEvents(container,doc);}return root;}function createLegacyRoot(container,options){return new ReactDOMBlockingRoot(container,LegacyRoot,options);}function isValidContainer(node){return!!(node&&(node.nodeType===ELEMENT_NODE||node.nodeType===DOCUMENT_NODE||node.nodeType===DOCUMENT_FRAGMENT_NODE||node.nodeType===COMMENT_NODE&&node.nodeValue===' react-mount-point-unstable '));}var ReactCurrentOwner$3=ReactSharedInternals.ReactCurrentOwner;var topLevelUpdateWarnings;var warnedAboutHydrateAPI=false;{topLevelUpdateWarnings=function(container){if(container._reactRootContainer&&container.nodeType!==COMMENT_NODE){var hostInstance=findHostInstanceWithNoPortals(container._reactRootContainer._internalRoot.current);if(hostInstance){if(hostInstance.parentNode!==container){error('render(...): It looks like the React-rendered content of this '+'container was removed without using React. This is not '+'supported and will cause errors. Instead, call '+'ReactDOM.unmountComponentAtNode to empty a container.');}}}var isRootRenderedBySomeReact=!!container._reactRootContainer;var rootEl=getReactRootElementInContainer(container);var hasNonRootReactChild=!!(rootEl&&getInstanceFromNode$1(rootEl));if(hasNonRootReactChild&&!isRootRenderedBySomeReact){error('render(...): Replacing React-rendered children with a new root '+'component. If you intended to update the children of this node, '+'you should instead have the existing children update their state '+'and render the new components instead of calling ReactDOM.render.');}if(container.nodeType===ELEMENT_NODE&&container.tagName&&container.tagName.toUpperCase()==='BODY'){error('render(): Rendering components directly into document.body is '+'discouraged, since its children are often manipulated by third-party '+'scripts and browser extensions. This may lead to subtle '+'reconciliation issues. Try rendering into a container element created '+'for your app.');}};}function getReactRootElementInContainer(container){if(!container){return null;}if(container.nodeType===DOCUMENT_NODE){return container.documentElement;}else{return container.firstChild;}}function shouldHydrateDueToLegacyHeuristic(container){var rootElement=getReactRootElementInContainer(container);return!!(rootElement&&rootElement.nodeType===ELEMENT_NODE&&rootElement.hasAttribute(ROOT_ATTRIBUTE_NAME));}function legacyCreateRootFromDOMContainer(container,forceHydrate){var shouldHydrate=forceHydrate||shouldHydrateDueToLegacyHeuristic(container);// First clear any existing content.
17644if(!shouldHydrate){var warned=false;var rootSibling;while(rootSibling=container.lastChild){{if(!warned&&rootSibling.nodeType===ELEMENT_NODE&&rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)){warned=true;error('render(): Target node has markup rendered by React, but there '+'are unrelated nodes as well. This is most commonly caused by '+'white-space inserted around server-rendered markup.');}}container.removeChild(rootSibling);}}{if(shouldHydrate&&!forceHydrate&&!warnedAboutHydrateAPI){warnedAboutHydrateAPI=true;warn('render(): Calling ReactDOM.render() to hydrate server-rendered markup '+'will stop working in React v17. Replace the ReactDOM.render() call '+'with ReactDOM.hydrate() if you want React to attach to the server HTML.');}}return createLegacyRoot(container,shouldHydrate?{hydrate:true}:undefined);}function warnOnInvalidCallback$1(callback,callerName){{if(callback!==null&&typeof callback!=='function'){error('%s(...): Expected the last optional `callback` argument to be a '+'function. Instead received: %s.',callerName,callback);}}}function legacyRenderSubtreeIntoContainer(parentComponent,children,container,forceHydrate,callback){{topLevelUpdateWarnings(container);warnOnInvalidCallback$1(callback===undefined?null:callback,'render');}// TODO: Without `any` type, Flow says "Property cannot be accessed on any
17645// member of intersection type." Whyyyyyy.
17646var root=container._reactRootContainer;var fiberRoot;if(!root){// Initial mount
17647root=container._reactRootContainer=legacyCreateRootFromDOMContainer(container,forceHydrate);fiberRoot=root._internalRoot;if(typeof callback==='function'){var originalCallback=callback;callback=function(){var instance=getPublicRootInstance(fiberRoot);originalCallback.call(instance);};}// Initial mount should not be batched.
17648unbatchedUpdates(function(){updateContainer(children,fiberRoot,parentComponent,callback);});}else{fiberRoot=root._internalRoot;if(typeof callback==='function'){var _originalCallback=callback;callback=function(){var instance=getPublicRootInstance(fiberRoot);_originalCallback.call(instance);};}// Update
17649updateContainer(children,fiberRoot,parentComponent,callback);}return getPublicRootInstance(fiberRoot);}function findDOMNode(componentOrElement){{var owner=ReactCurrentOwner$3.current;if(owner!==null&&owner.stateNode!==null){var warnedAboutRefsInRender=owner.stateNode._warnedAboutRefsInRender;if(!warnedAboutRefsInRender){error('%s is accessing findDOMNode inside its render(). '+'render() should be a pure function of props and state. It should '+'never access something that requires stale data from the previous '+'render, such as refs. Move this logic to componentDidMount and '+'componentDidUpdate instead.',getComponentName(owner.type)||'A component');}owner.stateNode._warnedAboutRefsInRender=true;}}if(componentOrElement==null){return null;}if(componentOrElement.nodeType===ELEMENT_NODE){return componentOrElement;}{return findHostInstanceWithWarning(componentOrElement,'findDOMNode');}}function hydrate(element,container,callback){if(!isValidContainer(container)){{throw Error("Target container is not a DOM element.");}}{var isModernRoot=isContainerMarkedAsRoot(container)&&container._reactRootContainer===undefined;if(isModernRoot){error('You are calling ReactDOM.hydrate() on a container that was previously '+'passed to ReactDOM.createRoot(). This is not supported. '+'Did you mean to call createRoot(container, {hydrate: true}).render(element)?');}}// TODO: throw or warn if we couldn't hydrate?
17650return legacyRenderSubtreeIntoContainer(null,element,container,true,callback);}function render(element,container,callback){if(!isValidContainer(container)){{throw Error("Target container is not a DOM element.");}}{var isModernRoot=isContainerMarkedAsRoot(container)&&container._reactRootContainer===undefined;if(isModernRoot){error('You are calling ReactDOM.render() on a container that was previously '+'passed to ReactDOM.createRoot(). This is not supported. '+'Did you mean to call root.render(element)?');}}return legacyRenderSubtreeIntoContainer(null,element,container,false,callback);}function unstable_renderSubtreeIntoContainer(parentComponent,element,containerNode,callback){if(!isValidContainer(containerNode)){{throw Error("Target container is not a DOM element.");}}if(!(parentComponent!=null&&has(parentComponent))){{throw Error("parentComponent must be a valid React Component");}}return legacyRenderSubtreeIntoContainer(parentComponent,element,containerNode,false,callback);}function unmountComponentAtNode(container){if(!isValidContainer(container)){{throw Error("unmountComponentAtNode(...): Target container is not a DOM element.");}}{var isModernRoot=isContainerMarkedAsRoot(container)&&container._reactRootContainer===undefined;if(isModernRoot){error('You are calling ReactDOM.unmountComponentAtNode() on a container that was previously '+'passed to ReactDOM.createRoot(). This is not supported. Did you mean to call root.unmount()?');}}if(container._reactRootContainer){{var rootEl=getReactRootElementInContainer(container);var renderedByDifferentReact=rootEl&&!getInstanceFromNode$1(rootEl);if(renderedByDifferentReact){error("unmountComponentAtNode(): The node you're attempting to unmount "+'was rendered by another copy of React.');}}// Unmount should not be batched.
17651unbatchedUpdates(function(){legacyRenderSubtreeIntoContainer(null,null,container,false,function(){// $FlowFixMe This should probably use `delete container._reactRootContainer`
17652container._reactRootContainer=null;unmarkContainerAsRoot(container);});});// If you call unmountComponentAtNode twice in quick succession, you'll
17653// get `true` twice. That's probably fine?
17654return true;}else{{var _rootEl=getReactRootElementInContainer(container);var hasNonRootReactChild=!!(_rootEl&&getInstanceFromNode$1(_rootEl));// Check if the container itself is a React root node.
17655var isContainerReactRoot=container.nodeType===ELEMENT_NODE&&isValidContainer(container.parentNode)&&!!container.parentNode._reactRootContainer;if(hasNonRootReactChild){error("unmountComponentAtNode(): The node you're attempting to unmount "+'was rendered by React and is not a top-level container. %s',isContainerReactRoot?'You may have accidentally passed in a React root node instead '+'of its container.':'Instead, have the parent component update its state and '+'rerender in order to remove this component.');}}return false;}}function createPortal(children,containerInfo,// TODO: figure out the API for cross-renderer implementation.
17656implementation){var key=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;return{// This tag allow us to uniquely identify this as a React Portal
17657$$typeof:REACT_PORTAL_TYPE,key:key==null?null:''+key,children:children,containerInfo:containerInfo,implementation:implementation};}var ReactVersion='16.13.1';setAttemptUserBlockingHydration(attemptUserBlockingHydration$1);setAttemptContinuousHydration(attemptContinuousHydration$1);setAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);var didWarnAboutUnstableCreatePortal=false;{if(typeof Map!=='function'||// $FlowIssue Flow incorrectly thinks Map has no prototype
17658Map.prototype==null||typeof Map.prototype.forEach!=='function'||typeof Set!=='function'||// $FlowIssue Flow incorrectly thinks Set has no prototype
17659Set.prototype==null||typeof Set.prototype.clear!=='function'||typeof Set.prototype.forEach!=='function'){error('React depends on Map and Set built-in types. Make sure that you load a '+'polyfill in older browsers. https://fb.me/react-polyfills');}}setRestoreImplementation(restoreControlledState$3);setBatchingImplementation(batchedUpdates$1,discreteUpdates$1,flushDiscreteUpdates,batchedEventUpdates$1);function createPortal$1(children,container){var key=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(!isValidContainer(container)){{throw Error("Target container is not a DOM element.");}}// TODO: pass ReactDOM portal implementation as third argument
17660// $FlowFixMe The Flow type is opaque but there's no way to actually create it.
17661return createPortal(children,container,null,key);}function renderSubtreeIntoContainer(parentComponent,element,containerNode,callback){return unstable_renderSubtreeIntoContainer(parentComponent,element,containerNode,callback);}function unstable_createPortal(children,container){var key=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;{if(!didWarnAboutUnstableCreatePortal){didWarnAboutUnstableCreatePortal=true;warn('The ReactDOM.unstable_createPortal() alias has been deprecated, '+'and will be removed in React 17+. Update your code to use '+'ReactDOM.createPortal() instead. It has the exact same API, '+'but without the "unstable_" prefix.');}}return createPortal$1(children,container,key);}var Internals={// Keep in sync with ReactDOMUnstableNativeDependencies.js
17662// ReactTestUtils.js, and ReactTestUtilsAct.js. This is an array for better minification.
17663Events:[getInstanceFromNode$1,getNodeFromInstance$1,getFiberCurrentPropsFromNode$1,injectEventPluginsByName,eventNameDispatchConfigs,accumulateTwoPhaseDispatches,accumulateDirectDispatches,enqueueStateRestore,restoreStateIfNeeded,dispatchEvent,runEventsInBatch,flushPassiveEffects,IsThisRendererActing]};var foundDevTools=injectIntoDevTools({findFiberByHostInstance:getClosestInstanceFromNode,bundleType:1,version:ReactVersion,rendererPackageName:'react-dom'});{if(!foundDevTools&&canUseDOM&&window.top===window.self){// If we're in Chrome or Firefox, provide a download link if not installed.
17664if(navigator.userAgent.indexOf('Chrome')>-1&&navigator.userAgent.indexOf('Edge')===-1||navigator.userAgent.indexOf('Firefox')>-1){var protocol=window.location.protocol;// Don't warn in exotic cases like chrome-extension://.
17665if(/^(https?|file):$/.test(protocol)){// eslint-disable-next-line react-internal/no-production-logging
17666console.info('%cDownload the React DevTools '+'for a better development experience: '+'https://fb.me/react-devtools'+(protocol==='file:'?'\nYou might need to use a local HTTP server (instead of file://): '+'https://fb.me/react-devtools-faq':''),'font-weight:bold');}}}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Internals;exports.createPortal=createPortal$1;exports.findDOMNode=findDOMNode;exports.flushSync=flushSync;exports.hydrate=hydrate;exports.render=render;exports.unmountComponentAtNode=unmountComponentAtNode;exports.unstable_batchedUpdates=batchedUpdates$1;exports.unstable_createPortal=unstable_createPortal;exports.unstable_renderSubtreeIntoContainer=renderSubtreeIntoContainer;exports.version=ReactVersion;})();}
17667
17668/***/ }),
17669
vendor: 1,436 bytes, lines 17670-17712
17670/***/ "./node_modules/react-dom/index.js":
17671/*!*****************************************!*\
17672  !*** ./node_modules/react-dom/index.js ***!
17673  \*****************************************/
17674/*! no static exports found */
17675/***/ (function(module, exports, __webpack_require__) {
17676
17677"use strict";
17678
17679
17680function checkDCE() {
17681  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
17682  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function') {
17683    return;
17684  }
17685
17686  if (true) {
17687    // This branch is unreachable because this function is only called
17688    // in production, but the condition is true only in development.
17689    // Therefore if the branch is still here, dead code elimination wasn't
17690    // properly applied.
17691    // Don't change the message. React DevTools relies on it. Also make sure
17692    // this message doesn't occur elsewhere in this function, or it will cause
17693    // a false positive.
17694    throw new Error('^_^');
17695  }
17696
17697  try {
17698    // Verify that the code above has been dead code eliminated (DCE'd).
17699    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
17700  } catch (err) {
17701    // DevTools shouldn't crash React, no matter what.
17702    // We should still report in case we break this code.
17703    console.error(err);
17704  }
17705}
17706
17707if (false) {} else {
17708  module.exports = __webpack_require__(/*! ./cjs/react-dom.development.js */ "./node_modules/react-dom/cjs/react-dom.development.js");
17709}
17710
17711/***/ }),
17712
vendor: 7,897 bytes, lines 17713-17912
17713/***/ "./node_modules/react-is/cjs/react-is.development.js":
17714/*!***********************************************************!*\
17715  !*** ./node_modules/react-is/cjs/react-is.development.js ***!
17716  \***********************************************************/
17717/*! no static exports found */
17718/***/ (function(module, exports, __webpack_require__) {
17719
17720"use strict";
17721/** @license React v16.13.1
17722 * react-is.development.js
17723 *
17724 * Copyright (c) Facebook, Inc. and its affiliates.
17725 *
17726 * This source code is licensed under the MIT license found in the
17727 * LICENSE file in the root directory of this source tree.
17728 */
17729
17730
17731if (true) {
17732  (function () {
17733    'use strict'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
17734    // nor polyfill, then a plain number is used for performance.
17735
17736    var hasSymbol = typeof Symbol === 'function' && Symbol.for;
17737    var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
17738    var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
17739    var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
17740    var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
17741    var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
17742    var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
17743    var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
17744    // (unstable) APIs that have been removed. Can we remove the symbols?
17745
17746    var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
17747    var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
17748    var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
17749    var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
17750    var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
17751    var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
17752    var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
17753    var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
17754    var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
17755    var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
17756    var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
17757
17758    function isValidElementType(type) {
17759      return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
17760      type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
17761    }
17762
17763    function typeOf(object) {
17764      if (typeof object === 'object' && object !== null) {
17765        var $$typeof = object.$$typeof;
17766
17767        switch ($$typeof) {
17768          case REACT_ELEMENT_TYPE:
17769            var type = object.type;
17770
17771            switch (type) {
17772              case REACT_ASYNC_MODE_TYPE:
17773              case REACT_CONCURRENT_MODE_TYPE:
17774              case REACT_FRAGMENT_TYPE:
17775              case REACT_PROFILER_TYPE:
17776              case REACT_STRICT_MODE_TYPE:
17777              case REACT_SUSPENSE_TYPE:
17778                return type;
17779
17780              default:
17781                var $$typeofType = type && type.$$typeof;
17782
17783                switch ($$typeofType) {
17784                  case REACT_CONTEXT_TYPE:
17785                  case REACT_FORWARD_REF_TYPE:
17786                  case REACT_LAZY_TYPE:
17787                  case REACT_MEMO_TYPE:
17788                  case REACT_PROVIDER_TYPE:
17789                    return $$typeofType;
17790
17791                  default:
17792                    return $$typeof;
17793                }
17794
17795            }
17796
17797          case REACT_PORTAL_TYPE:
17798            return $$typeof;
17799        }
17800      }
17801
17802      return undefined;
17803    } // AsyncMode is deprecated along with isAsyncMode
17804
17805
17806    var AsyncMode = REACT_ASYNC_MODE_TYPE;
17807    var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
17808    var ContextConsumer = REACT_CONTEXT_TYPE;
17809    var ContextProvider = REACT_PROVIDER_TYPE;
17810    var Element = REACT_ELEMENT_TYPE;
17811    var ForwardRef = REACT_FORWARD_REF_TYPE;
17812    var Fragment = REACT_FRAGMENT_TYPE;
17813    var Lazy = REACT_LAZY_TYPE;
17814    var Memo = REACT_MEMO_TYPE;
17815    var Portal = REACT_PORTAL_TYPE;
17816    var Profiler = REACT_PROFILER_TYPE;
17817    var StrictMode = REACT_STRICT_MODE_TYPE;
17818    var Suspense = REACT_SUSPENSE_TYPE;
17819    var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
17820
17821    function isAsyncMode(object) {
17822      {
17823        if (!hasWarnedAboutDeprecatedIsAsyncMode) {
17824          hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
17825
17826          console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
17827        }
17828      }
17829      return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
17830    }
17831
17832    function isConcurrentMode(object) {
17833      return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
17834    }
17835
17836    function isContextConsumer(object) {
17837      return typeOf(object) === REACT_CONTEXT_TYPE;
17838    }
17839
17840    function isContextProvider(object) {
17841      return typeOf(object) === REACT_PROVIDER_TYPE;
17842    }
17843
17844    function isElement(object) {
17845      return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
17846    }
17847
17848    function isForwardRef(object) {
17849      return typeOf(object) === REACT_FORWARD_REF_TYPE;
17850    }
17851
17852    function isFragment(object) {
17853      return typeOf(object) === REACT_FRAGMENT_TYPE;
17854    }
17855
17856    function isLazy(object) {
17857      return typeOf(object) === REACT_LAZY_TYPE;
17858    }
17859
17860    function isMemo(object) {
17861      return typeOf(object) === REACT_MEMO_TYPE;
17862    }
17863
17864    function isPortal(object) {
17865      return typeOf(object) === REACT_PORTAL_TYPE;
17866    }
17867
17868    function isProfiler(object) {
17869      return typeOf(object) === REACT_PROFILER_TYPE;
17870    }
17871
17872    function isStrictMode(object) {
17873      return typeOf(object) === REACT_STRICT_MODE_TYPE;
17874    }
17875
17876    function isSuspense(object) {
17877      return typeOf(object) === REACT_SUSPENSE_TYPE;
17878    }
17879
17880    exports.AsyncMode = AsyncMode;
17881    exports.ConcurrentMode = ConcurrentMode;
17882    exports.ContextConsumer = ContextConsumer;
17883    exports.ContextProvider = ContextProvider;
17884    exports.Element = Element;
17885    exports.ForwardRef = ForwardRef;
17886    exports.Fragment = Fragment;
17887    exports.Lazy = Lazy;
17888    exports.Memo = Memo;
17889    exports.Portal = Portal;
17890    exports.Profiler = Profiler;
17891    exports.StrictMode = StrictMode;
17892    exports.Suspense = Suspense;
17893    exports.isAsyncMode = isAsyncMode;
17894    exports.isConcurrentMode = isConcurrentMode;
17895    exports.isContextConsumer = isContextConsumer;
17896    exports.isContextProvider = isContextProvider;
17897    exports.isElement = isElement;
17898    exports.isForwardRef = isForwardRef;
17899    exports.isFragment = isFragment;
17900    exports.isLazy = isLazy;
17901    exports.isMemo = isMemo;
17902    exports.isPortal = isPortal;
17903    exports.isProfiler = isProfiler;
17904    exports.isStrictMode = isStrictMode;
17905    exports.isSuspense = isSuspense;
17906    exports.isValidElementType = isValidElementType;
17907    exports.typeOf = typeOf;
17908  })();
17909}
17910
17911/***/ }),
17912
vendor: 450 bytes, lines 17913-17928
17913/***/ "./node_modules/react-is/index.js":
17914/*!****************************************!*\
17915  !*** ./node_modules/react-is/index.js ***!
17916  \****************************************/
17917/*! no static exports found */
17918/***/ (function(module, exports, __webpack_require__) {
17919
17920"use strict";
17921
17922
17923if (false) {} else {
17924  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/react-is/cjs/react-is.development.js");
17925}
17926
17927/***/ }),
17928
vendor: 70,219 bytes, lines 17929-19988
17929/***/ "./node_modules/react-spring/web.js":
17930/*!******************************************!*\
17931  !*** ./node_modules/react-spring/web.js ***!
17932  \******************************************/
17933/*! exports provided: apply, config, update, animated, a, interpolate, Globals, useSpring, useTrail, useTransition, useChain, useSprings */
17934/***/ (function(module, __webpack_exports__, __webpack_require__) {
17935
17936"use strict";
17937__webpack_require__.r(__webpack_exports__);
17938/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "apply", function() { return apply; });
17939/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return config; });
17940/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "update", function() { return update; });
17941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animated", function() { return extendedAnimated; });
17942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return extendedAnimated; });
17943/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interpolate", function() { return interpolate$1; });
17944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Globals", function() { return Globals; });
17945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useSpring", function() { return useSpring; });
17946/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useTrail", function() { return useTrail; });
17947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useTransition", function() { return useTransition; });
17948/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useChain", function() { return useChain; });
17949/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useSprings", function() { return useSprings; });
17950/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js");
17951/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js");
17952/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
17953/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
17954
17955
17956
17957const is = {
17958  arr: Array.isArray,
17959  obj: a => Object.prototype.toString.call(a) === '[object Object]',
17960  fun: a => typeof a === 'function',
17961  str: a => typeof a === 'string',
17962  num: a => typeof a === 'number',
17963  und: a => a === void 0,
17964  nul: a => a === null,
17965  set: a => a instanceof Set,
17966  map: a => a instanceof Map,
17967
17968  equ(a, b) {
17969    if (typeof a !== typeof b) return false;
17970    if (is.str(a) || is.num(a)) return a === b;
17971    if (is.obj(a) && is.obj(b) && Object.keys(a).length + Object.keys(b).length === 0) return true;
17972    let i;
17973
17974    for (i in a) if (!(i in b)) return false;
17975
17976    for (i in b) if (a[i] !== b[i]) return false;
17977
17978    return is.und(i) ? a === b : true;
17979  }
17980
17981};
17982
17983function merge(target, lowercase) {
17984  if (lowercase === void 0) {
17985    lowercase = true;
17986  }
17987
17988  return object => (is.arr(object) ? object : Object.keys(object)).reduce((acc, element) => {
17989    const key = lowercase ? element[0].toLowerCase() + element.substring(1) : element;
17990    acc[key] = target(key);
17991    return acc;
17992  }, target);
17993}
17994
17995function useForceUpdate() {
17996  const _useState = Object(react__WEBPACK_IMPORTED_MODULE_2__["useState"])(false),
17997        f = _useState[1];
17998
17999  const forceUpdate = Object(react__WEBPACK_IMPORTED_MODULE_2__["useCallback"])(() => f(v => !v), []);
18000  return forceUpdate;
18001}
18002
18003function withDefault(value, defaultValue) {
18004  return is.und(value) || is.nul(value) ? defaultValue : value;
18005}
18006
18007function toArray(a) {
18008  return !is.und(a) ? is.arr(a) ? a : [a] : [];
18009}
18010
18011function callProp(obj) {
18012  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
18013    args[_key - 1] = arguments[_key];
18014  }
18015
18016  return is.fun(obj) ? obj(...args) : obj;
18017}
18018
18019function getForwardProps(props) {
18020  const to = props.to,
18021        from = props.from,
18022        config = props.config,
18023        onStart = props.onStart,
18024        onRest = props.onRest,
18025        onFrame = props.onFrame,
18026        children = props.children,
18027        reset = props.reset,
18028        reverse = props.reverse,
18029        force = props.force,
18030        immediate = props.immediate,
18031        delay = props.delay,
18032        attach = props.attach,
18033        destroyed = props.destroyed,
18034        interpolateTo = props.interpolateTo,
18035        ref = props.ref,
18036        lazy = props.lazy,
18037        forward = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, ["to", "from", "config", "onStart", "onRest", "onFrame", "children", "reset", "reverse", "force", "immediate", "delay", "attach", "destroyed", "interpolateTo", "ref", "lazy"]);
18038
18039  return forward;
18040}
18041
18042function interpolateTo(props) {
18043  const forward = getForwardProps(props);
18044  if (is.und(forward)) return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
18045    to: forward
18046  }, props);
18047  const rest = Object.keys(props).reduce((a, k) => !is.und(forward[k]) ? a : Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, a, {
18048    [k]: props[k]
18049  }), {});
18050  return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
18051    to: forward
18052  }, rest);
18053}
18054
18055function handleRef(ref, forward) {
18056  if (forward) {
18057    // If it's a function, assume it's a ref callback
18058    if (is.fun(forward)) forward(ref);else if (is.obj(forward)) {
18059      forward.current = ref;
18060    }
18061  }
18062
18063  return ref;
18064}
18065
18066class Animated {
18067  constructor() {
18068    this.payload = void 0;
18069    this.children = [];
18070  }
18071
18072  getAnimatedValue() {
18073    return this.getValue();
18074  }
18075
18076  getPayload() {
18077    return this.payload || this;
18078  }
18079
18080  attach() {}
18081
18082  detach() {}
18083
18084  getChildren() {
18085    return this.children;
18086  }
18087
18088  addChild(child) {
18089    if (this.children.length === 0) this.attach();
18090    this.children.push(child);
18091  }
18092
18093  removeChild(child) {
18094    const index = this.children.indexOf(child);
18095    this.children.splice(index, 1);
18096    if (this.children.length === 0) this.detach();
18097  }
18098
18099}
18100
18101class AnimatedArray extends Animated {
18102  constructor() {
18103    super(...arguments);
18104    this.payload = [];
18105
18106    this.attach = () => this.payload.forEach(p => p instanceof Animated && p.addChild(this));
18107
18108    this.detach = () => this.payload.forEach(p => p instanceof Animated && p.removeChild(this));
18109  }
18110
18111}
18112
18113class AnimatedObject extends Animated {
18114  constructor() {
18115    super(...arguments);
18116    this.payload = {};
18117
18118    this.attach = () => Object.values(this.payload).forEach(s => s instanceof Animated && s.addChild(this));
18119
18120    this.detach = () => Object.values(this.payload).forEach(s => s instanceof Animated && s.removeChild(this));
18121  }
18122
18123  getValue(animated) {
18124    if (animated === void 0) {
18125      animated = false;
18126    }
18127
18128    const payload = {};
18129
18130    for (const key in this.payload) {
18131      const value = this.payload[key];
18132      if (animated && !(value instanceof Animated)) continue;
18133      payload[key] = value instanceof Animated ? value[animated ? 'getAnimatedValue' : 'getValue']() : value;
18134    }
18135
18136    return payload;
18137  }
18138
18139  getAnimatedValue() {
18140    return this.getValue(true);
18141  }
18142
18143}
18144
18145let applyAnimatedValues;
18146
18147function injectApplyAnimatedValues(fn, transform) {
18148  applyAnimatedValues = {
18149    fn,
18150    transform
18151  };
18152}
18153
18154let colorNames;
18155
18156function injectColorNames(names) {
18157  colorNames = names;
18158}
18159
18160let requestFrame = cb => typeof window !== 'undefined' ? window.requestAnimationFrame(cb) : -1;
18161
18162let cancelFrame = id => {
18163  typeof window !== 'undefined' && window.cancelAnimationFrame(id);
18164};
18165
18166function injectFrame(raf, caf) {
18167  requestFrame = raf;
18168  cancelFrame = caf;
18169}
18170
18171let interpolation;
18172
18173function injectStringInterpolator(fn) {
18174  interpolation = fn;
18175}
18176
18177let now = () => Date.now();
18178
18179function injectNow(nowFn) {
18180  now = nowFn;
18181}
18182
18183let defaultElement;
18184
18185function injectDefaultElement(el) {
18186  defaultElement = el;
18187}
18188
18189let animatedApi = node => node.current;
18190
18191function injectAnimatedApi(fn) {
18192  animatedApi = fn;
18193}
18194
18195let createAnimatedStyle;
18196
18197function injectCreateAnimatedStyle(factory) {
18198  createAnimatedStyle = factory;
18199}
18200
18201let manualFrameloop;
18202
18203function injectManualFrameloop(callback) {
18204  manualFrameloop = callback;
18205}
18206
18207var Globals = /*#__PURE__*/Object.freeze({
18208  get applyAnimatedValues() {
18209    return applyAnimatedValues;
18210  },
18211
18212  injectApplyAnimatedValues: injectApplyAnimatedValues,
18213
18214  get colorNames() {
18215    return colorNames;
18216  },
18217
18218  injectColorNames: injectColorNames,
18219
18220  get requestFrame() {
18221    return requestFrame;
18222  },
18223
18224  get cancelFrame() {
18225    return cancelFrame;
18226  },
18227
18228  injectFrame: injectFrame,
18229
18230  get interpolation() {
18231    return interpolation;
18232  },
18233
18234  injectStringInterpolator: injectStringInterpolator,
18235
18236  get now() {
18237    return now;
18238  },
18239
18240  injectNow: injectNow,
18241
18242  get defaultElement() {
18243    return defaultElement;
18244  },
18245
18246  injectDefaultElement: injectDefaultElement,
18247
18248  get animatedApi() {
18249    return animatedApi;
18250  },
18251
18252  injectAnimatedApi: injectAnimatedApi,
18253
18254  get createAnimatedStyle() {
18255    return createAnimatedStyle;
18256  },
18257
18258  injectCreateAnimatedStyle: injectCreateAnimatedStyle,
18259
18260  get manualFrameloop() {
18261    return manualFrameloop;
18262  },
18263
18264  injectManualFrameloop: injectManualFrameloop
18265});
18266/**
18267 * Wraps the `style` property with `AnimatedStyle`.
18268 */
18269
18270class AnimatedProps extends AnimatedObject {
18271  constructor(props, callback) {
18272    super();
18273    this.update = void 0;
18274    this.payload = !props.style ? props : Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
18275      style: createAnimatedStyle(props.style)
18276    });
18277    this.update = callback;
18278    this.attach();
18279  }
18280
18281}
18282
18283const isFunctionComponent = val => is.fun(val) && !(val.prototype instanceof react__WEBPACK_IMPORTED_MODULE_2___default.a.Component);
18284
18285const createAnimatedComponent = Component => {
18286  const AnimatedComponent = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["forwardRef"])((props, ref) => {
18287    const forceUpdate = useForceUpdate();
18288    const mounted = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(true);
18289    const propsAnimated = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(null);
18290    const node = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(null);
18291    const attachProps = Object(react__WEBPACK_IMPORTED_MODULE_2__["useCallback"])(props => {
18292      const oldPropsAnimated = propsAnimated.current;
18293
18294      const callback = () => {
18295        let didUpdate = false;
18296
18297        if (node.current) {
18298          didUpdate = applyAnimatedValues.fn(node.current, propsAnimated.current.getAnimatedValue());
18299        }
18300
18301        if (!node.current || didUpdate === false) {
18302          // If no referenced node has been found, or the update target didn't have a
18303          // native-responder, then forceUpdate the animation ...
18304          forceUpdate();
18305        }
18306      };
18307
18308      propsAnimated.current = new AnimatedProps(props, callback);
18309      oldPropsAnimated && oldPropsAnimated.detach();
18310    }, []);
18311    Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => () => {
18312      mounted.current = false;
18313      propsAnimated.current && propsAnimated.current.detach();
18314    }, []);
18315    Object(react__WEBPACK_IMPORTED_MODULE_2__["useImperativeHandle"])(ref, () => animatedApi(node, mounted, forceUpdate));
18316    attachProps(props);
18317
18318    const _getValue = propsAnimated.current.getValue(),
18319          scrollTop = _getValue.scrollTop,
18320          scrollLeft = _getValue.scrollLeft,
18321          animatedProps = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_getValue, ["scrollTop", "scrollLeft"]); // Functions cannot have refs, see:
18322    // See: https://github.com/react-spring/react-spring/issues/569
18323
18324
18325    const refFn = isFunctionComponent(Component) ? undefined : childRef => node.current = handleRef(childRef, ref);
18326    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(Component, Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, animatedProps, {
18327      ref: refFn
18328    }));
18329  });
18330  return AnimatedComponent;
18331};
18332
18333let active = false;
18334const controllers = new Set();
18335
18336const update = () => {
18337  if (!active) return false;
18338  let time = now();
18339
18340  for (let controller of controllers) {
18341    let isActive = false;
18342
18343    for (let configIdx = 0; configIdx < controller.configs.length; configIdx++) {
18344      let config = controller.configs[configIdx];
18345      let endOfAnimation, lastTime;
18346
18347      for (let valIdx = 0; valIdx < config.animatedValues.length; valIdx++) {
18348        let animation = config.animatedValues[valIdx]; // If an animation is done, skip, until all of them conclude
18349
18350        if (animation.done) continue;
18351        let from = config.fromValues[valIdx];
18352        let to = config.toValues[valIdx];
18353        let position = animation.lastPosition;
18354        let isAnimated = to instanceof Animated;
18355        let velocity = Array.isArray(config.initialVelocity) ? config.initialVelocity[valIdx] : config.initialVelocity;
18356        if (isAnimated) to = to.getValue(); // Conclude animation if it's either immediate, or from-values match end-state
18357
18358        if (config.immediate) {
18359          animation.setValue(to);
18360          animation.done = true;
18361          continue;
18362        } // Break animation when string values are involved
18363
18364
18365        if (typeof from === 'string' || typeof to === 'string') {
18366          animation.setValue(to);
18367          animation.done = true;
18368          continue;
18369        }
18370
18371        if (config.duration !== void 0) {
18372          /** Duration easing */
18373          position = from + config.easing((time - animation.startTime) / config.duration) * (to - from);
18374          endOfAnimation = time >= animation.startTime + config.duration;
18375        } else if (config.decay) {
18376          /** Decay easing */
18377          position = from + velocity / (1 - 0.998) * (1 - Math.exp(-(1 - 0.998) * (time - animation.startTime)));
18378          endOfAnimation = Math.abs(animation.lastPosition - position) < 0.1;
18379          if (endOfAnimation) to = position;
18380        } else {
18381          /** Spring easing */
18382          lastTime = animation.lastTime !== void 0 ? animation.lastTime : time;
18383          velocity = animation.lastVelocity !== void 0 ? animation.lastVelocity : config.initialVelocity; // If we lost a lot of frames just jump to the end.
18384
18385          if (time > lastTime + 64) lastTime = time; // http://gafferongames.com/game-physics/fix-your-timestep/
18386
18387          let numSteps = Math.floor(time - lastTime);
18388
18389          for (let i = 0; i < numSteps; ++i) {
18390            let force = -config.tension * (position - to);
18391            let damping = -config.friction * velocity;
18392            let acceleration = (force + damping) / config.mass;
18393            velocity = velocity + acceleration * 1 / 1000;
18394            position = position + velocity * 1 / 1000;
18395          } // Conditions for stopping the spring animation
18396
18397
18398          let isOvershooting = config.clamp && config.tension !== 0 ? from < to ? position > to : position < to : false;
18399          let isVelocity = Math.abs(velocity) <= config.precision;
18400          let isDisplacement = config.tension !== 0 ? Math.abs(to - position) <= config.precision : true;
18401          endOfAnimation = isOvershooting || isVelocity && isDisplacement;
18402          animation.lastVelocity = velocity;
18403          animation.lastTime = time;
18404        } // Trails aren't done until their parents conclude
18405
18406
18407        if (isAnimated && !config.toValues[valIdx].done) endOfAnimation = false;
18408
18409        if (endOfAnimation) {
18410          // Ensure that we end up with a round value
18411          if (animation.value !== to) position = to;
18412          animation.done = true;
18413        } else isActive = true;
18414
18415        animation.setValue(position);
18416        animation.lastPosition = position;
18417      } // Keep track of updated values only when necessary
18418
18419
18420      if (controller.props.onFrame) controller.values[config.name] = config.interpolation.getValue();
18421    } // Update callbacks in the end of the frame
18422
18423
18424    if (controller.props.onFrame) controller.props.onFrame(controller.values); // Either call onEnd or next frame
18425
18426    if (!isActive) {
18427      controllers.delete(controller);
18428      controller.stop(true);
18429    }
18430  } // Loop over as long as there are controllers ...
18431
18432
18433  if (controllers.size) {
18434    if (manualFrameloop) manualFrameloop();else requestFrame(update);
18435  } else {
18436    active = false;
18437  }
18438
18439  return active;
18440};
18441
18442const start = controller => {
18443  if (!controllers.has(controller)) controllers.add(controller);
18444
18445  if (!active) {
18446    active = true;
18447    if (manualFrameloop) requestFrame(manualFrameloop);else requestFrame(update);
18448  }
18449};
18450
18451const stop = controller => {
18452  if (controllers.has(controller)) controllers.delete(controller);
18453};
18454
18455function createInterpolator(range, output, extrapolate) {
18456  if (typeof range === 'function') {
18457    return range;
18458  }
18459
18460  if (Array.isArray(range)) {
18461    return createInterpolator({
18462      range,
18463      output: output,
18464      extrapolate
18465    });
18466  }
18467
18468  if (interpolation && typeof range.output[0] === 'string') {
18469    return interpolation(range);
18470  }
18471
18472  const config = range;
18473  const outputRange = config.output;
18474  const inputRange = config.range || [0, 1];
18475  const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';
18476  const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';
18477
18478  const easing = config.easing || (t => t);
18479
18480  return input => {
18481    const range = findRange(input, inputRange);
18482    return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);
18483  };
18484}
18485
18486function interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {
18487  let result = map ? map(input) : input; // Extrapolate
18488
18489  if (result < inputMin) {
18490    if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;
18491  }
18492
18493  if (result > inputMax) {
18494    if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;
18495  }
18496
18497  if (outputMin === outputMax) return outputMin;
18498  if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; // Input Range
18499
18500  if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin); // Easing
18501
18502  result = easing(result); // Output Range
18503
18504  if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;
18505  return result;
18506}
18507
18508function findRange(input, inputRange) {
18509  for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;
18510
18511  return i - 1;
18512}
18513
18514class AnimatedInterpolation extends AnimatedArray {
18515  constructor(parents, range, output, extrapolate) {
18516    super();
18517    this.calc = void 0;
18518    this.payload = parents instanceof AnimatedArray && !(parents instanceof AnimatedInterpolation) ? parents.getPayload() : Array.isArray(parents) ? parents : [parents];
18519    this.calc = createInterpolator(range, output, extrapolate);
18520  }
18521
18522  getValue() {
18523    return this.calc(...this.payload.map(value => value.getValue()));
18524  }
18525
18526  updateConfig(range, output, extrapolate) {
18527    this.calc = createInterpolator(range, output, extrapolate);
18528  }
18529
18530  interpolate(range, output, extrapolate) {
18531    return new AnimatedInterpolation(this, range, output, extrapolate);
18532  }
18533
18534}
18535
18536const interpolate$1 = (parents, range, output) => parents && new AnimatedInterpolation(parents, range, output);
18537
18538const config = {
18539  default: {
18540    tension: 170,
18541    friction: 26
18542  },
18543  gentle: {
18544    tension: 120,
18545    friction: 14
18546  },
18547  wobbly: {
18548    tension: 180,
18549    friction: 12
18550  },
18551  stiff: {
18552    tension: 210,
18553    friction: 20
18554  },
18555  slow: {
18556    tension: 280,
18557    friction: 60
18558  },
18559  molasses: {
18560    tension: 280,
18561    friction: 120
18562  }
18563};
18564/** API
18565 *  useChain(references, timeSteps, timeFrame)
18566 */
18567
18568function useChain(refs, timeSteps, timeFrame) {
18569  if (timeFrame === void 0) {
18570    timeFrame = 1000;
18571  }
18572
18573  const previous = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])();
18574  Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => {
18575    if (is.equ(refs, previous.current)) refs.forEach(_ref => {
18576      let current = _ref.current;
18577      return current && current.start();
18578    });else if (timeSteps) {
18579      refs.forEach((_ref2, index) => {
18580        let current = _ref2.current;
18581
18582        if (current) {
18583          const ctrls = current.controllers;
18584
18585          if (ctrls.length) {
18586            const t = timeFrame * timeSteps[index];
18587            ctrls.forEach(ctrl => {
18588              ctrl.queue = ctrl.queue.map(e => Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, e, {
18589                delay: e.delay + t
18590              }));
18591              ctrl.start();
18592            });
18593          }
18594        }
18595      });
18596    } else refs.reduce((q, _ref3, rI) => {
18597      let current = _ref3.current;
18598      return q = q.then(() => current.start());
18599    }, Promise.resolve());
18600    previous.current = refs;
18601  });
18602}
18603/**
18604 * Animated works by building a directed acyclic graph of dependencies
18605 * transparently when you render your Animated components.
18606 *
18607 *               new Animated.Value(0)
18608 *     .interpolate()        .interpolate()    new Animated.Value(1)
18609 *         opacity               translateY      scale
18610 *          style                         transform
18611 *         View#234                         style
18612 *                                         View#123
18613 *
18614 * A) Top Down phase
18615 * When an AnimatedValue is updated, we recursively go down through this
18616 * graph in order to find leaf nodes: the views that we flag as needing
18617 * an update.
18618 *
18619 * B) Bottom Up phase
18620 * When a view is flagged as needing an update, we recursively go back up
18621 * in order to build the new value that it needs. The reason why we need
18622 * this two-phases process is to deal with composite props such as
18623 * transform which can receive values from multiple parents.
18624 */
18625
18626
18627function addAnimatedStyles(node, styles) {
18628  if ('update' in node) {
18629    styles.add(node);
18630  } else {
18631    node.getChildren().forEach(child => addAnimatedStyles(child, styles));
18632  }
18633}
18634
18635class AnimatedValue extends Animated {
18636  constructor(_value) {
18637    var _this;
18638
18639    super();
18640    _this = this;
18641    this.animatedStyles = new Set();
18642    this.value = void 0;
18643    this.startPosition = void 0;
18644    this.lastPosition = void 0;
18645    this.lastVelocity = void 0;
18646    this.startTime = void 0;
18647    this.lastTime = void 0;
18648    this.done = false;
18649
18650    this.setValue = function (value, flush) {
18651      if (flush === void 0) {
18652        flush = true;
18653      }
18654
18655      _this.value = value;
18656      if (flush) _this.flush();
18657    };
18658
18659    this.value = _value;
18660    this.startPosition = _value;
18661    this.lastPosition = _value;
18662  }
18663
18664  flush() {
18665    if (this.animatedStyles.size === 0) {
18666      addAnimatedStyles(this, this.animatedStyles);
18667    }
18668
18669    this.animatedStyles.forEach(animatedStyle => animatedStyle.update());
18670  }
18671
18672  clearStyles() {
18673    this.animatedStyles.clear();
18674  }
18675
18676  getValue() {
18677    return this.value;
18678  }
18679
18680  interpolate(range, output, extrapolate) {
18681    return new AnimatedInterpolation(this, range, output, extrapolate);
18682  }
18683
18684}
18685
18686class AnimatedValueArray extends AnimatedArray {
18687  constructor(values) {
18688    super();
18689    this.payload = values.map(n => new AnimatedValue(n));
18690  }
18691
18692  setValue(value, flush) {
18693    if (flush === void 0) {
18694      flush = true;
18695    }
18696
18697    if (Array.isArray(value)) {
18698      if (value.length === this.payload.length) {
18699        value.forEach((v, i) => this.payload[i].setValue(v, flush));
18700      }
18701    } else {
18702      this.payload.forEach(p => p.setValue(value, flush));
18703    }
18704  }
18705
18706  getValue() {
18707    return this.payload.map(v => v.getValue());
18708  }
18709
18710  interpolate(range, output) {
18711    return new AnimatedInterpolation(this, range, output);
18712  }
18713
18714}
18715
18716let G = 0;
18717
18718class Controller {
18719  constructor() {
18720    this.id = void 0;
18721    this.idle = true;
18722    this.hasChanged = false;
18723    this.guid = 0;
18724    this.local = 0;
18725    this.props = {};
18726    this.merged = {};
18727    this.animations = {};
18728    this.interpolations = {};
18729    this.values = {};
18730    this.configs = [];
18731    this.listeners = [];
18732    this.queue = [];
18733    this.localQueue = void 0;
18734
18735    this.getValues = () => this.interpolations;
18736
18737    this.id = G++;
18738  }
18739  /** update(props)
18740   *  This function filters input props and creates an array of tasks which are executed in .start()
18741   *  Each task is allowed to carry a delay, which means it can execute asnychroneously */
18742
18743
18744  update(args) {
18745    //this._id = n + this.id
18746    if (!args) return this; // Extract delay and the to-prop from props
18747
18748    const _ref = interpolateTo(args),
18749          _ref$delay = _ref.delay,
18750          delay = _ref$delay === void 0 ? 0 : _ref$delay,
18751          to = _ref.to,
18752          props = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref, ["delay", "to"]);
18753
18754    if (is.arr(to) || is.fun(to)) {
18755      // If config is either a function or an array queue it up as is
18756      this.queue.push(Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
18757        delay,
18758        to
18759      }));
18760    } else if (to) {
18761      // Otherwise go through each key since it could be delayed individually
18762      let ops = {};
18763      Object.entries(to).forEach(_ref2 => {
18764        let k = _ref2[0],
18765            v = _ref2[1]; // Fetch delay and create an entry, consisting of the to-props, the delay, and basic props
18766
18767        const entry = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
18768          to: {
18769            [k]: v
18770          },
18771          delay: callProp(delay, k)
18772        }, props);
18773
18774        const previous = ops[entry.delay] && ops[entry.delay].to;
18775        ops[entry.delay] = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, ops[entry.delay], entry, {
18776          to: Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, previous, entry.to)
18777        });
18778      });
18779      this.queue = Object.values(ops);
18780    } // Sort queue, so that async calls go last
18781
18782
18783    this.queue = this.queue.sort((a, b) => a.delay - b.delay); // Diff the reduced props immediately (they'll contain the from-prop and some config)
18784
18785    this.diff(props);
18786    return this;
18787  }
18788  /** start(onEnd)
18789   *  This function either executes a queue, if present, or starts the frameloop, which animates */
18790
18791
18792  start(onEnd) {
18793    // If a queue is present we must excecute it
18794    if (this.queue.length) {
18795      this.idle = false; // Updates can interrupt trailing queues, in that case we just merge values
18796
18797      if (this.localQueue) {
18798        this.localQueue.forEach(_ref3 => {
18799          let _ref3$from = _ref3.from,
18800              from = _ref3$from === void 0 ? {} : _ref3$from,
18801              _ref3$to = _ref3.to,
18802              to = _ref3$to === void 0 ? {} : _ref3$to;
18803          if (is.obj(from)) this.merged = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, from, this.merged);
18804          if (is.obj(to)) this.merged = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.merged, to);
18805        });
18806      } // The guid helps us tracking frames, a new queue over an old one means an override
18807      // We discard async calls in that caseÍ
18808
18809
18810      const local = this.local = ++this.guid;
18811      const queue = this.localQueue = this.queue;
18812      this.queue = []; // Go through each entry and execute it
18813
18814      queue.forEach((_ref4, index) => {
18815        let delay = _ref4.delay,
18816            props = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref4, ["delay"]);
18817
18818        const cb = finished => {
18819          if (index === queue.length - 1 && local === this.guid && finished) {
18820            this.idle = true;
18821            if (this.props.onRest) this.props.onRest(this.merged);
18822          }
18823
18824          if (onEnd) onEnd();
18825        }; // Entries can be delayed, ansyc or immediate
18826
18827
18828        let async = is.arr(props.to) || is.fun(props.to);
18829
18830        if (delay) {
18831          setTimeout(() => {
18832            if (local === this.guid) {
18833              if (async) this.runAsync(props, cb);else this.diff(props).start(cb);
18834            }
18835          }, delay);
18836        } else if (async) this.runAsync(props, cb);else this.diff(props).start(cb);
18837      });
18838    } // Otherwise we kick of the frameloop
18839    else {
18840        if (is.fun(onEnd)) this.listeners.push(onEnd);
18841        if (this.props.onStart) this.props.onStart();
18842        start(this);
18843      }
18844
18845    return this;
18846  }
18847
18848  stop(finished) {
18849    this.listeners.forEach(onEnd => onEnd(finished));
18850    this.listeners = [];
18851    return this;
18852  }
18853  /** Pause sets onEnd listeners free, but also removes the controller from the frameloop */
18854
18855
18856  pause(finished) {
18857    this.stop(true);
18858    if (finished) stop(this);
18859    return this;
18860  }
18861
18862  runAsync(_ref5, onEnd) {
18863    var _this = this;
18864
18865    let delay = _ref5.delay,
18866        props = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref5, ["delay"]);
18867
18868    const local = this.local; // If "to" is either a function or an array it will be processed async, therefor "to" should be empty right now
18869    // If the view relies on certain values "from" has to be present
18870
18871    let queue = Promise.resolve(undefined);
18872
18873    if (is.arr(props.to)) {
18874      for (let i = 0; i < props.to.length; i++) {
18875        const index = i;
18876
18877        const fresh = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, interpolateTo(props.to[index]));
18878
18879        if (is.arr(fresh.config)) fresh.config = fresh.config[index];
18880        queue = queue.then(() => {
18881          //this.stop()
18882          if (local === this.guid) return new Promise(r => this.diff(fresh).start(r));
18883        });
18884      }
18885    } else if (is.fun(props.to)) {
18886      let index = 0;
18887      let last;
18888      queue = queue.then(() => props.to( // next(props)
18889      p => {
18890        const fresh = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, interpolateTo(p));
18891
18892        if (is.arr(fresh.config)) fresh.config = fresh.config[index];
18893        index++; //this.stop()
18894
18895        if (local === this.guid) return last = new Promise(r => this.diff(fresh).start(r));
18896        return;
18897      }, // cancel()
18898      function (finished) {
18899        if (finished === void 0) {
18900          finished = true;
18901        }
18902
18903        return _this.stop(finished);
18904      }).then(() => last));
18905    }
18906
18907    queue.then(onEnd);
18908  }
18909
18910  diff(props) {
18911    this.props = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.props, props);
18912    let _this$props = this.props,
18913        _this$props$from = _this$props.from,
18914        from = _this$props$from === void 0 ? {} : _this$props$from,
18915        _this$props$to = _this$props.to,
18916        to = _this$props$to === void 0 ? {} : _this$props$to,
18917        _this$props$config = _this$props.config,
18918        config = _this$props$config === void 0 ? {} : _this$props$config,
18919        reverse = _this$props.reverse,
18920        attach = _this$props.attach,
18921        reset = _this$props.reset,
18922        immediate = _this$props.immediate; // Reverse values when requested
18923
18924    if (reverse) {
18925      var _ref6 = [to, from];
18926      from = _ref6[0];
18927      to = _ref6[1];
18928    } // This will collect all props that were ever set, reset merged props when necessary
18929
18930
18931    this.merged = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, from, this.merged, to);
18932    this.hasChanged = false; // Attachment handling, trailed springs can "attach" themselves to a previous spring
18933
18934    let target = attach && attach(this); // Reduces input { name: value } pairs into animated values
18935
18936    this.animations = Object.entries(this.merged).reduce((acc, _ref7) => {
18937      let name = _ref7[0],
18938          value = _ref7[1]; // Issue cached entries, except on reset
18939
18940      let entry = acc[name] || {}; // Figure out what the value is supposed to be
18941
18942      const isNumber = is.num(value);
18943      const isString = is.str(value) && !value.startsWith('#') && !/\d/.test(value) && !colorNames[value];
18944      const isArray = is.arr(value);
18945      const isInterpolation = !isNumber && !isArray && !isString;
18946      let fromValue = !is.und(from[name]) ? from[name] : value;
18947      let toValue = isNumber || isArray ? value : isString ? value : 1;
18948      let toConfig = callProp(config, name);
18949      if (target) toValue = target.animations[name].parent;
18950      let parent = entry.parent,
18951          interpolation$$1 = entry.interpolation,
18952          toValues = toArray(target ? toValue.getPayload() : toValue),
18953          animatedValues;
18954      let newValue = value;
18955      if (isInterpolation) newValue = interpolation({
18956        range: [0, 1],
18957        output: [value, value]
18958      })(1);
18959      let currentValue = interpolation$$1 && interpolation$$1.getValue(); // Change detection flags
18960
18961      const isFirst = is.und(parent);
18962      const isActive = !isFirst && entry.animatedValues.some(v => !v.done);
18963      const currentValueDiffersFromGoal = !is.equ(newValue, currentValue);
18964      const hasNewGoal = !is.equ(newValue, entry.previous);
18965      const hasNewConfig = !is.equ(toConfig, entry.config); // Change animation props when props indicate a new goal (new value differs from previous one)
18966      // and current values differ from it. Config changes trigger a new update as well (though probably shouldn't?)
18967
18968      if (reset || hasNewGoal && currentValueDiffersFromGoal || hasNewConfig) {
18969        // Convert regular values into animated values, ALWAYS re-use if possible
18970        if (isNumber || isString) parent = interpolation$$1 = entry.parent || new AnimatedValue(fromValue);else if (isArray) parent = interpolation$$1 = entry.parent || new AnimatedValueArray(fromValue);else if (isInterpolation) {
18971          let prev = entry.interpolation && entry.interpolation.calc(entry.parent.value);
18972          prev = prev !== void 0 && !reset ? prev : fromValue;
18973
18974          if (entry.parent) {
18975            parent = entry.parent;
18976            parent.setValue(0, false);
18977          } else parent = new AnimatedValue(0);
18978
18979          const range = {
18980            output: [prev, value]
18981          };
18982
18983          if (entry.interpolation) {
18984            interpolation$$1 = entry.interpolation;
18985            entry.interpolation.updateConfig(range);
18986          } else interpolation$$1 = parent.interpolate(range);
18987        }
18988        toValues = toArray(target ? toValue.getPayload() : toValue);
18989        animatedValues = toArray(parent.getPayload());
18990        if (reset && !isInterpolation) parent.setValue(fromValue, false);
18991        this.hasChanged = true; // Reset animated values
18992
18993        animatedValues.forEach(value => {
18994          value.startPosition = value.value;
18995          value.lastPosition = value.value;
18996          value.lastVelocity = isActive ? value.lastVelocity : undefined;
18997          value.lastTime = isActive ? value.lastTime : undefined;
18998          value.startTime = now();
18999          value.done = false;
19000          value.animatedStyles.clear();
19001        }); // Set immediate values
19002
19003        if (callProp(immediate, name)) {
19004          parent.setValue(isInterpolation ? toValue : value, false);
19005        }
19006
19007        return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, acc, {
19008          [name]: Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, entry, {
19009            name,
19010            parent,
19011            interpolation: interpolation$$1,
19012            animatedValues,
19013            toValues,
19014            previous: newValue,
19015            config: toConfig,
19016            fromValues: toArray(parent.getValue()),
19017            immediate: callProp(immediate, name),
19018            initialVelocity: withDefault(toConfig.velocity, 0),
19019            clamp: withDefault(toConfig.clamp, false),
19020            precision: withDefault(toConfig.precision, 0.01),
19021            tension: withDefault(toConfig.tension, 170),
19022            friction: withDefault(toConfig.friction, 26),
19023            mass: withDefault(toConfig.mass, 1),
19024            duration: toConfig.duration,
19025            easing: withDefault(toConfig.easing, t => t),
19026            decay: toConfig.decay
19027          })
19028        });
19029      } else {
19030        if (!currentValueDiffersFromGoal) {
19031          // So ... the current target value (newValue) appears to be different from the previous value,
19032          // which normally constitutes an update, but the actual value (currentValue) matches the target!
19033          // In order to resolve this without causing an animation update we silently flag the animation as done,
19034          // which it technically is. Interpolations also needs a config update with their target set to 1.
19035          if (isInterpolation) {
19036            parent.setValue(1, false);
19037            interpolation$$1.updateConfig({
19038              output: [newValue, newValue]
19039            });
19040          }
19041
19042          parent.done = true;
19043          this.hasChanged = true;
19044          return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, acc, {
19045            [name]: Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, acc[name], {
19046              previous: newValue
19047            })
19048          });
19049        }
19050
19051        return acc;
19052      }
19053    }, this.animations);
19054
19055    if (this.hasChanged) {
19056      // Make animations available to frameloop
19057      this.configs = Object.values(this.animations);
19058      this.values = {};
19059      this.interpolations = {};
19060
19061      for (let key in this.animations) {
19062        this.interpolations[key] = this.animations[key].interpolation;
19063        this.values[key] = this.animations[key].interpolation.getValue();
19064      }
19065    }
19066
19067    return this;
19068  }
19069
19070  destroy() {
19071    this.stop();
19072    this.props = {};
19073    this.merged = {};
19074    this.animations = {};
19075    this.interpolations = {};
19076    this.values = {};
19077    this.configs = [];
19078    this.local = 0;
19079  }
19080
19081}
19082/** API
19083 * const props = useSprings(number, [{ ... }, { ... }, ...])
19084 * const [props, set] = useSprings(number, (i, controller) => ({ ... }))
19085 */
19086
19087
19088const useSprings = (length, props) => {
19089  const mounted = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(false);
19090  const ctrl = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])();
19091  const isFn = is.fun(props); // The controller maintains the animation values, starts and stops animations
19092
19093  const _useMemo = Object(react__WEBPACK_IMPORTED_MODULE_2__["useMemo"])(() => {
19094    // Remove old controllers
19095    if (ctrl.current) {
19096      ctrl.current.map(c => c.destroy());
19097      ctrl.current = undefined;
19098    }
19099
19100    let ref;
19101    return [new Array(length).fill().map((_, i) => {
19102      const ctrl = new Controller();
19103      const newProps = isFn ? callProp(props, i, ctrl) : props[i];
19104      if (i === 0) ref = newProps.ref;
19105      ctrl.update(newProps);
19106      if (!ref) ctrl.start();
19107      return ctrl;
19108    }), ref];
19109  }, [length]),
19110        controllers = _useMemo[0],
19111        ref = _useMemo[1];
19112
19113  ctrl.current = controllers; // The hooks reference api gets defined here ...
19114
19115  const api = Object(react__WEBPACK_IMPORTED_MODULE_2__["useImperativeHandle"])(ref, () => ({
19116    start: () => Promise.all(ctrl.current.map(c => new Promise(r => c.start(r)))),
19117    stop: finished => ctrl.current.forEach(c => c.stop(finished)),
19118
19119    get controllers() {
19120      return ctrl.current;
19121    }
19122
19123  })); // This function updates the controllers
19124
19125  const updateCtrl = Object(react__WEBPACK_IMPORTED_MODULE_2__["useMemo"])(() => updateProps => ctrl.current.map((c, i) => {
19126    c.update(isFn ? callProp(updateProps, i, c) : updateProps[i]);
19127    if (!ref) c.start();
19128  }), [length]); // Update controller if props aren't functional
19129
19130  Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => {
19131    if (mounted.current) {
19132      if (!isFn) updateCtrl(props);
19133    } else if (!ref) ctrl.current.forEach(c => c.start());
19134  }); // Update mounted flag and destroy controller on unmount
19135
19136  Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => (mounted.current = true, () => ctrl.current.forEach(c => c.destroy())), []); // Return animated props, or, anim-props + the update-setter above
19137
19138  const propValues = ctrl.current.map(c => c.getValues());
19139  return isFn ? [propValues, updateCtrl, finished => ctrl.current.forEach(c => c.pause(finished))] : propValues;
19140};
19141/** API
19142 * const props = useSpring({ ... })
19143 * const [props, set] = useSpring(() => ({ ... }))
19144 */
19145
19146
19147const useSpring = props => {
19148  const isFn = is.fun(props);
19149
19150  const _useSprings = useSprings(1, isFn ? props : [props]),
19151        result = _useSprings[0],
19152        set = _useSprings[1],
19153        pause = _useSprings[2];
19154
19155  return isFn ? [result[0], set, pause] : result;
19156};
19157/** API
19158 * const trails = useTrail(number, { ... })
19159 * const [trails, set] = useTrail(number, () => ({ ... }))
19160 */
19161
19162
19163const useTrail = (length, props) => {
19164  const mounted = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(false);
19165  const isFn = is.fun(props);
19166  const updateProps = callProp(props);
19167  const instances = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])();
19168
19169  const _useSprings = useSprings(length, (i, ctrl) => {
19170    if (i === 0) instances.current = [];
19171    instances.current.push(ctrl);
19172    return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, updateProps, {
19173      config: callProp(updateProps.config, i),
19174      attach: i > 0 && (() => instances.current[i - 1])
19175    });
19176  }),
19177        result = _useSprings[0],
19178        set = _useSprings[1],
19179        pause = _useSprings[2]; // Set up function to update controller
19180
19181
19182  const updateCtrl = Object(react__WEBPACK_IMPORTED_MODULE_2__["useMemo"])(() => props => set((i, ctrl) => {
19183    const last = props.reverse ? i === 0 : length - 1 === i;
19184    const attachIdx = props.reverse ? i + 1 : i - 1;
19185    const attachController = instances.current[attachIdx];
19186    return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
19187      config: callProp(props.config || updateProps.config, i),
19188      attach: attachController && (() => attachController)
19189    });
19190  }), [length, updateProps.reverse]); // Update controller if props aren't functional
19191
19192  Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => void (mounted.current && !isFn && updateCtrl(props))); // Update mounted flag and destroy controller on unmount
19193
19194  Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => void (mounted.current = true), []);
19195  return isFn ? [result, updateCtrl, pause] : result;
19196};
19197/** API
19198 * const transitions = useTransition(items, itemKeys, { ... })
19199 * const [transitions, update] = useTransition(items, itemKeys, () => ({ ... }))
19200 */
19201
19202
19203let guid = 0;
19204const ENTER = 'enter';
19205const LEAVE = 'leave';
19206const UPDATE = 'update';
19207
19208const mapKeys = (items, keys) => (typeof keys === 'function' ? items.map(keys) : toArray(keys)).map(String);
19209
19210const get = props => {
19211  let items = props.items,
19212      _props$keys = props.keys,
19213      keys = _props$keys === void 0 ? item => item : _props$keys,
19214      rest = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, ["items", "keys"]);
19215
19216  items = toArray(items !== void 0 ? items : null);
19217  return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
19218    items,
19219    keys: mapKeys(items, keys)
19220  }, rest);
19221};
19222
19223function useTransition(input, keyTransform, config) {
19224  const props = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
19225    items: input,
19226    keys: keyTransform || (i => i)
19227  }, config);
19228
19229  const _get = get(props),
19230        _get$lazy = _get.lazy,
19231        lazy = _get$lazy === void 0 ? false : _get$lazy,
19232        _get$unique = _get.unique,
19233        _get$reset = _get.reset,
19234        reset = _get$reset === void 0 ? false : _get$reset,
19235        enter = _get.enter,
19236        leave = _get.leave,
19237        update = _get.update,
19238        onDestroyed = _get.onDestroyed,
19239        keys = _get.keys,
19240        items = _get.items,
19241        onFrame = _get.onFrame,
19242        _onRest = _get.onRest,
19243        onStart = _get.onStart,
19244        ref = _get.ref,
19245        extra = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_get, ["lazy", "unique", "reset", "enter", "leave", "update", "onDestroyed", "keys", "items", "onFrame", "onRest", "onStart", "ref"]);
19246
19247  const forceUpdate = useForceUpdate();
19248  const mounted = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(false);
19249  const state = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])({
19250    mounted: false,
19251    first: true,
19252    deleted: [],
19253    current: {},
19254    transitions: [],
19255    prevProps: {},
19256    paused: !!props.ref,
19257    instances: !mounted.current && new Map(),
19258    forceUpdate
19259  });
19260  Object(react__WEBPACK_IMPORTED_MODULE_2__["useImperativeHandle"])(props.ref, () => ({
19261    start: () => Promise.all(Array.from(state.current.instances).map(_ref => {
19262      let c = _ref[1];
19263      return new Promise(r => c.start(r));
19264    })),
19265    stop: finished => Array.from(state.current.instances).forEach(_ref2 => {
19266      let c = _ref2[1];
19267      return c.stop(finished);
19268    }),
19269
19270    get controllers() {
19271      return Array.from(state.current.instances).map(_ref3 => {
19272        let c = _ref3[1];
19273        return c;
19274      });
19275    }
19276
19277  })); // Update state
19278
19279  state.current = diffItems(state.current, props);
19280
19281  if (state.current.changed) {
19282    // Update state
19283    state.current.transitions.forEach(transition => {
19284      const slot = transition.slot,
19285            from = transition.from,
19286            to = transition.to,
19287            config = transition.config,
19288            trail = transition.trail,
19289            key = transition.key,
19290            item = transition.item;
19291      if (!state.current.instances.has(key)) state.current.instances.set(key, new Controller()); // update the map object
19292
19293      const ctrl = state.current.instances.get(key);
19294
19295      const newProps = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, extra, {
19296        to,
19297        from,
19298        config,
19299        ref,
19300        onRest: values => {
19301          if (state.current.mounted) {
19302            if (transition.destroyed) {
19303              // If no ref is given delete destroyed items immediately
19304              if (!ref && !lazy) cleanUp(state, key);
19305              if (onDestroyed) onDestroyed(item);
19306            } // A transition comes to rest once all its springs conclude
19307
19308
19309            const curInstances = Array.from(state.current.instances);
19310            const active = curInstances.some(_ref4 => {
19311              let c = _ref4[1];
19312              return !c.idle;
19313            });
19314            if (!active && (ref || lazy) && state.current.deleted.length > 0) cleanUp(state);
19315            if (_onRest) _onRest(item, slot, values);
19316          }
19317        },
19318        onStart: onStart && (() => onStart(item, slot)),
19319        onFrame: onFrame && (values => onFrame(item, slot, values)),
19320        delay: trail,
19321        reset: reset && slot === ENTER // Update controller
19322
19323      });
19324
19325      ctrl.update(newProps);
19326      if (!state.current.paused) ctrl.start();
19327    });
19328  }
19329
19330  Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => {
19331    state.current.mounted = mounted.current = true;
19332    return () => {
19333      state.current.mounted = mounted.current = false;
19334      Array.from(state.current.instances).map(_ref5 => {
19335        let c = _ref5[1];
19336        return c.destroy();
19337      });
19338      state.current.instances.clear();
19339    };
19340  }, []);
19341  return state.current.transitions.map(_ref6 => {
19342    let item = _ref6.item,
19343        slot = _ref6.slot,
19344        key = _ref6.key;
19345    return {
19346      item,
19347      key,
19348      state: slot,
19349      props: state.current.instances.get(key).getValues()
19350    };
19351  });
19352}
19353
19354function cleanUp(state, filterKey) {
19355  const deleted = state.current.deleted;
19356
19357  for (let _ref7 of deleted) {
19358    let key = _ref7.key;
19359
19360    const filter = t => t.key !== key;
19361
19362    if (is.und(filterKey) || filterKey === key) {
19363      state.current.instances.delete(key);
19364      state.current.transitions = state.current.transitions.filter(filter);
19365      state.current.deleted = state.current.deleted.filter(filter);
19366    }
19367  }
19368
19369  state.current.forceUpdate();
19370}
19371
19372function diffItems(_ref8, props) {
19373  let first = _ref8.first,
19374      prevProps = _ref8.prevProps,
19375      state = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref8, ["first", "prevProps"]);
19376
19377  let _get2 = get(props),
19378      items = _get2.items,
19379      keys = _get2.keys,
19380      initial = _get2.initial,
19381      from = _get2.from,
19382      enter = _get2.enter,
19383      leave = _get2.leave,
19384      update = _get2.update,
19385      _get2$trail = _get2.trail,
19386      trail = _get2$trail === void 0 ? 0 : _get2$trail,
19387      unique = _get2.unique,
19388      config = _get2.config,
19389      _get2$order = _get2.order,
19390      order = _get2$order === void 0 ? [ENTER, LEAVE, UPDATE] : _get2$order;
19391
19392  let _get3 = get(prevProps),
19393      _keys = _get3.keys,
19394      _items = _get3.items;
19395
19396  let current = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state.current);
19397
19398  let deleted = [...state.deleted]; // Compare next keys with current keys
19399
19400  let currentKeys = Object.keys(current);
19401  let currentSet = new Set(currentKeys);
19402  let nextSet = new Set(keys);
19403  let added = keys.filter(item => !currentSet.has(item));
19404  let removed = state.transitions.filter(item => !item.destroyed && !nextSet.has(item.originalKey)).map(i => i.originalKey);
19405  let updated = keys.filter(item => currentSet.has(item));
19406  let delay = -trail;
19407
19408  while (order.length) {
19409    const changeType = order.shift();
19410
19411    switch (changeType) {
19412      case ENTER:
19413        {
19414          added.forEach((key, index) => {
19415            // In unique mode, remove fading out transitions if their key comes in again
19416            if (unique && deleted.find(d => d.originalKey === key)) deleted = deleted.filter(t => t.originalKey !== key);
19417            const keyIndex = keys.indexOf(key);
19418            const item = items[keyIndex];
19419            const slot = first && initial !== void 0 ? 'initial' : ENTER;
19420            current[key] = {
19421              slot,
19422              originalKey: key,
19423              key: unique ? String(key) : guid++,
19424              item,
19425              trail: delay = delay + trail,
19426              config: callProp(config, item, slot),
19427              from: callProp(first ? initial !== void 0 ? initial || {} : from : from, item),
19428              to: callProp(enter, item)
19429            };
19430          });
19431          break;
19432        }
19433
19434      case LEAVE:
19435        {
19436          removed.forEach(key => {
19437            const keyIndex = _keys.indexOf(key);
19438
19439            const item = _items[keyIndex];
19440            const slot = LEAVE;
19441            deleted.unshift(Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, current[key], {
19442              slot,
19443              destroyed: true,
19444              left: _keys[Math.max(0, keyIndex - 1)],
19445              right: _keys[Math.min(_keys.length, keyIndex + 1)],
19446              trail: delay = delay + trail,
19447              config: callProp(config, item, slot),
19448              to: callProp(leave, item)
19449            }));
19450            delete current[key];
19451          });
19452          break;
19453        }
19454
19455      case UPDATE:
19456        {
19457          updated.forEach(key => {
19458            const keyIndex = keys.indexOf(key);
19459            const item = items[keyIndex];
19460            const slot = UPDATE;
19461            current[key] = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, current[key], {
19462              item,
19463              slot,
19464              trail: delay = delay + trail,
19465              config: callProp(config, item, slot),
19466              to: callProp(update, item)
19467            });
19468          });
19469          break;
19470        }
19471    }
19472  }
19473
19474  let out = keys.map(key => current[key]); // This tries to restore order for deleted items by finding their last known siblings
19475  // only using the left sibling to keep order placement consistent for all deleted items
19476
19477  deleted.forEach(_ref9 => {
19478    let left = _ref9.left,
19479        right = _ref9.right,
19480        item = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref9, ["left", "right"]);
19481
19482    let pos; // Was it the element on the left, if yes, move there ...
19483
19484    if ((pos = out.findIndex(t => t.originalKey === left)) !== -1) pos += 1; // And if nothing else helps, move it to the start ¯\_(ツ)_/¯
19485
19486    pos = Math.max(0, pos);
19487    out = [...out.slice(0, pos), item, ...out.slice(pos)];
19488  });
19489  return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, {
19490    changed: added.length || removed.length || updated.length,
19491    first: first && added.length === 0,
19492    transitions: out,
19493    current,
19494    deleted,
19495    prevProps: props
19496  });
19497}
19498
19499class AnimatedStyle extends AnimatedObject {
19500  constructor(style) {
19501    if (style === void 0) {
19502      style = {};
19503    }
19504
19505    super();
19506
19507    if (style.transform && !(style.transform instanceof Animated)) {
19508      style = applyAnimatedValues.transform(style);
19509    }
19510
19511    this.payload = style;
19512  }
19513
19514} // http://www.w3.org/TR/css3-color/#svg-color
19515
19516
19517const colors = {
19518  transparent: 0x00000000,
19519  aliceblue: 0xf0f8ffff,
19520  antiquewhite: 0xfaebd7ff,
19521  aqua: 0x00ffffff,
19522  aquamarine: 0x7fffd4ff,
19523  azure: 0xf0ffffff,
19524  beige: 0xf5f5dcff,
19525  bisque: 0xffe4c4ff,
19526  black: 0x000000ff,
19527  blanchedalmond: 0xffebcdff,
19528  blue: 0x0000ffff,
19529  blueviolet: 0x8a2be2ff,
19530  brown: 0xa52a2aff,
19531  burlywood: 0xdeb887ff,
19532  burntsienna: 0xea7e5dff,
19533  cadetblue: 0x5f9ea0ff,
19534  chartreuse: 0x7fff00ff,
19535  chocolate: 0xd2691eff,
19536  coral: 0xff7f50ff,
19537  cornflowerblue: 0x6495edff,
19538  cornsilk: 0xfff8dcff,
19539  crimson: 0xdc143cff,
19540  cyan: 0x00ffffff,
19541  darkblue: 0x00008bff,
19542  darkcyan: 0x008b8bff,
19543  darkgoldenrod: 0xb8860bff,
19544  darkgray: 0xa9a9a9ff,
19545  darkgreen: 0x006400ff,
19546  darkgrey: 0xa9a9a9ff,
19547  darkkhaki: 0xbdb76bff,
19548  darkmagenta: 0x8b008bff,
19549  darkolivegreen: 0x556b2fff,
19550  darkorange: 0xff8c00ff,
19551  darkorchid: 0x9932ccff,
19552  darkred: 0x8b0000ff,
19553  darksalmon: 0xe9967aff,
19554  darkseagreen: 0x8fbc8fff,
19555  darkslateblue: 0x483d8bff,
19556  darkslategray: 0x2f4f4fff,
19557  darkslategrey: 0x2f4f4fff,
19558  darkturquoise: 0x00ced1ff,
19559  darkviolet: 0x9400d3ff,
19560  deeppink: 0xff1493ff,
19561  deepskyblue: 0x00bfffff,
19562  dimgray: 0x696969ff,
19563  dimgrey: 0x696969ff,
19564  dodgerblue: 0x1e90ffff,
19565  firebrick: 0xb22222ff,
19566  floralwhite: 0xfffaf0ff,
19567  forestgreen: 0x228b22ff,
19568  fuchsia: 0xff00ffff,
19569  gainsboro: 0xdcdcdcff,
19570  ghostwhite: 0xf8f8ffff,
19571  gold: 0xffd700ff,
19572  goldenrod: 0xdaa520ff,
19573  gray: 0x808080ff,
19574  green: 0x008000ff,
19575  greenyellow: 0xadff2fff,
19576  grey: 0x808080ff,
19577  honeydew: 0xf0fff0ff,
19578  hotpink: 0xff69b4ff,
19579  indianred: 0xcd5c5cff,
19580  indigo: 0x4b0082ff,
19581  ivory: 0xfffff0ff,
19582  khaki: 0xf0e68cff,
19583  lavender: 0xe6e6faff,
19584  lavenderblush: 0xfff0f5ff,
19585  lawngreen: 0x7cfc00ff,
19586  lemonchiffon: 0xfffacdff,
19587  lightblue: 0xadd8e6ff,
19588  lightcoral: 0xf08080ff,
19589  lightcyan: 0xe0ffffff,
19590  lightgoldenrodyellow: 0xfafad2ff,
19591  lightgray: 0xd3d3d3ff,
19592  lightgreen: 0x90ee90ff,
19593  lightgrey: 0xd3d3d3ff,
19594  lightpink: 0xffb6c1ff,
19595  lightsalmon: 0xffa07aff,
19596  lightseagreen: 0x20b2aaff,
19597  lightskyblue: 0x87cefaff,
19598  lightslategray: 0x778899ff,
19599  lightslategrey: 0x778899ff,
19600  lightsteelblue: 0xb0c4deff,
19601  lightyellow: 0xffffe0ff,
19602  lime: 0x00ff00ff,
19603  limegreen: 0x32cd32ff,
19604  linen: 0xfaf0e6ff,
19605  magenta: 0xff00ffff,
19606  maroon: 0x800000ff,
19607  mediumaquamarine: 0x66cdaaff,
19608  mediumblue: 0x0000cdff,
19609  mediumorchid: 0xba55d3ff,
19610  mediumpurple: 0x9370dbff,
19611  mediumseagreen: 0x3cb371ff,
19612  mediumslateblue: 0x7b68eeff,
19613  mediumspringgreen: 0x00fa9aff,
19614  mediumturquoise: 0x48d1ccff,
19615  mediumvioletred: 0xc71585ff,
19616  midnightblue: 0x191970ff,
19617  mintcream: 0xf5fffaff,
19618  mistyrose: 0xffe4e1ff,
19619  moccasin: 0xffe4b5ff,
19620  navajowhite: 0xffdeadff,
19621  navy: 0x000080ff,
19622  oldlace: 0xfdf5e6ff,
19623  olive: 0x808000ff,
19624  olivedrab: 0x6b8e23ff,
19625  orange: 0xffa500ff,
19626  orangered: 0xff4500ff,
19627  orchid: 0xda70d6ff,
19628  palegoldenrod: 0xeee8aaff,
19629  palegreen: 0x98fb98ff,
19630  paleturquoise: 0xafeeeeff,
19631  palevioletred: 0xdb7093ff,
19632  papayawhip: 0xffefd5ff,
19633  peachpuff: 0xffdab9ff,
19634  peru: 0xcd853fff,
19635  pink: 0xffc0cbff,
19636  plum: 0xdda0ddff,
19637  powderblue: 0xb0e0e6ff,
19638  purple: 0x800080ff,
19639  rebeccapurple: 0x663399ff,
19640  red: 0xff0000ff,
19641  rosybrown: 0xbc8f8fff,
19642  royalblue: 0x4169e1ff,
19643  saddlebrown: 0x8b4513ff,
19644  salmon: 0xfa8072ff,
19645  sandybrown: 0xf4a460ff,
19646  seagreen: 0x2e8b57ff,
19647  seashell: 0xfff5eeff,
19648  sienna: 0xa0522dff,
19649  silver: 0xc0c0c0ff,
19650  skyblue: 0x87ceebff,
19651  slateblue: 0x6a5acdff,
19652  slategray: 0x708090ff,
19653  slategrey: 0x708090ff,
19654  snow: 0xfffafaff,
19655  springgreen: 0x00ff7fff,
19656  steelblue: 0x4682b4ff,
19657  tan: 0xd2b48cff,
19658  teal: 0x008080ff,
19659  thistle: 0xd8bfd8ff,
19660  tomato: 0xff6347ff,
19661  turquoise: 0x40e0d0ff,
19662  violet: 0xee82eeff,
19663  wheat: 0xf5deb3ff,
19664  white: 0xffffffff,
19665  whitesmoke: 0xf5f5f5ff,
19666  yellow: 0xffff00ff,
19667  yellowgreen: 0x9acd32ff
19668}; // const INTEGER = '[-+]?\\d+';
19669
19670const NUMBER = '[-+]?\\d*\\.?\\d+';
19671const PERCENTAGE = NUMBER + '%';
19672
19673function call() {
19674  for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {
19675    parts[_key] = arguments[_key];
19676  }
19677
19678  return '\\(\\s*(' + parts.join(')\\s*,\\s*(') + ')\\s*\\)';
19679}
19680
19681const rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));
19682const rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));
19683const hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));
19684const hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));
19685const hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
19686const hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
19687const hex6 = /^#([0-9a-fA-F]{6})$/;
19688const hex8 = /^#([0-9a-fA-F]{8})$/;
19689/*
19690https://github.com/react-community/normalize-css-color
19691
19692BSD 3-Clause License
19693
19694Copyright (c) 2016, React Community
19695All rights reserved.
19696
19697Redistribution and use in source and binary forms, with or without
19698modification, are permitted provided that the following conditions are met:
19699
19700* Redistributions of source code must retain the above copyright notice, this
19701  list of conditions and the following disclaimer.
19702
19703* Redistributions in binary form must reproduce the above copyright notice,
19704  this list of conditions and the following disclaimer in the documentation
19705  and/or other materials provided with the distribution.
19706
19707* Neither the name of the copyright holder nor the names of its
19708  contributors may be used to endorse or promote products derived from
19709  this software without specific prior written permission.
19710
19711THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19712AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19713IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19714DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19715FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19716DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19717SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
19718CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
19719OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
19720OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19721*/
19722
19723function normalizeColor(color) {
19724  let match;
19725
19726  if (typeof color === 'number') {
19727    return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;
19728  } // Ordered based on occurrences on Facebook codebase
19729
19730
19731  if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;
19732  if (colors.hasOwnProperty(color)) return colors[color];
19733
19734  if (match = rgb.exec(color)) {
19735    return (parse255(match[1]) << 24 | // r
19736    parse255(match[2]) << 16 | // g
19737    parse255(match[3]) << 8 | // b
19738    0x000000ff) >>> // a
19739    0;
19740  }
19741
19742  if (match = rgba.exec(color)) {
19743    return (parse255(match[1]) << 24 | // r
19744    parse255(match[2]) << 16 | // g
19745    parse255(match[3]) << 8 | // b
19746    parse1(match[4])) >>> // a
19747    0;
19748  }
19749
19750  if (match = hex3.exec(color)) {
19751    return parseInt(match[1] + match[1] + // r
19752    match[2] + match[2] + // g
19753    match[3] + match[3] + // b
19754    'ff', // a
19755    16) >>> 0;
19756  } // https://drafts.csswg.org/css-color-4/#hex-notation
19757
19758
19759  if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;
19760
19761  if (match = hex4.exec(color)) {
19762    return parseInt(match[1] + match[1] + // r
19763    match[2] + match[2] + // g
19764    match[3] + match[3] + // b
19765    match[4] + match[4], // a
19766    16) >>> 0;
19767  }
19768
19769  if (match = hsl.exec(color)) {
19770    return (hslToRgb(parse360(match[1]), // h
19771    parsePercentage(match[2]), // s
19772    parsePercentage(match[3]) // l
19773    ) | 0x000000ff) >>> // a
19774    0;
19775  }
19776
19777  if (match = hsla.exec(color)) {
19778    return (hslToRgb(parse360(match[1]), // h
19779    parsePercentage(match[2]), // s
19780    parsePercentage(match[3]) // l
19781    ) | parse1(match[4])) >>> // a
19782    0;
19783  }
19784
19785  return null;
19786}
19787
19788function hue2rgb(p, q, t) {
19789  if (t < 0) t += 1;
19790  if (t > 1) t -= 1;
19791  if (t < 1 / 6) return p + (q - p) * 6 * t;
19792  if (t < 1 / 2) return q;
19793  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
19794  return p;
19795}
19796
19797function hslToRgb(h, s, l) {
19798  const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
19799  const p = 2 * l - q;
19800  const r = hue2rgb(p, q, h + 1 / 3);
19801  const g = hue2rgb(p, q, h);
19802  const b = hue2rgb(p, q, h - 1 / 3);
19803  return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;
19804}
19805
19806function parse255(str) {
19807  const int = parseInt(str, 10);
19808  if (int < 0) return 0;
19809  if (int > 255) return 255;
19810  return int;
19811}
19812
19813function parse360(str) {
19814  const int = parseFloat(str);
19815  return (int % 360 + 360) % 360 / 360;
19816}
19817
19818function parse1(str) {
19819  const num = parseFloat(str);
19820  if (num < 0) return 0;
19821  if (num > 1) return 255;
19822  return Math.round(num * 255);
19823}
19824
19825function parsePercentage(str) {
19826  // parseFloat conveniently ignores the final %
19827  const int = parseFloat(str);
19828  if (int < 0) return 0;
19829  if (int > 100) return 1;
19830  return int / 100;
19831}
19832
19833function colorToRgba(input) {
19834  let int32Color = normalizeColor(input);
19835  if (int32Color === null) return input;
19836  int32Color = int32Color || 0;
19837  let r = (int32Color & 0xff000000) >>> 24;
19838  let g = (int32Color & 0x00ff0000) >>> 16;
19839  let b = (int32Color & 0x0000ff00) >>> 8;
19840  let a = (int32Color & 0x000000ff) / 255;
19841  return `rgba(${r}, ${g}, ${b}, ${a})`;
19842} // Problem: https://github.com/animatedjs/animated/pull/102
19843// Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662
19844
19845
19846const stringShapeRegex = /[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; // Covers rgb, rgba, hsl, hsla
19847// Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e
19848
19849const colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi; // Covers color names (transparent, blue, etc.)
19850
19851const colorNamesRegex = new RegExp(`(${Object.keys(colors).join('|')})`, 'g');
19852/**
19853 * Supports string shapes by extracting numbers so new values can be computed,
19854 * and recombines those values into new strings of the same shape.  Supports
19855 * things like:
19856 *
19857 *   rgba(123, 42, 99, 0.36)           // colors
19858 *   -45deg                            // values with units
19859 *   0 2px 2px 0px rgba(0, 0, 0, 0.12) // box shadows
19860 */
19861
19862const createStringInterpolator = config => {
19863  // Replace colors with rgba
19864  const outputRange = config.output.map(rangeValue => rangeValue.replace(colorRegex, colorToRgba)).map(rangeValue => rangeValue.replace(colorNamesRegex, colorToRgba));
19865  const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);
19866  outputRange.forEach(value => {
19867    value.match(stringShapeRegex).forEach((number, i) => outputRanges[i].push(+number));
19868  });
19869  const interpolations = outputRange[0].match(stringShapeRegex).map((_value, i) => createInterpolator(Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, config, {
19870    output: outputRanges[i]
19871  })));
19872  return input => {
19873    let i = 0;
19874    return outputRange[0] // 'rgba(0, 100, 200, 0)'
19875    // ->
19876    // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'
19877    .replace(stringShapeRegex, () => interpolations[i++](input)) // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to
19878    // round the opacity (4th column).
19879    .replace(/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi, (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`);
19880  };
19881};
19882
19883let isUnitlessNumber = {
19884  animationIterationCount: true,
19885  borderImageOutset: true,
19886  borderImageSlice: true,
19887  borderImageWidth: true,
19888  boxFlex: true,
19889  boxFlexGroup: true,
19890  boxOrdinalGroup: true,
19891  columnCount: true,
19892  columns: true,
19893  flex: true,
19894  flexGrow: true,
19895  flexPositive: true,
19896  flexShrink: true,
19897  flexNegative: true,
19898  flexOrder: true,
19899  gridRow: true,
19900  gridRowEnd: true,
19901  gridRowSpan: true,
19902  gridRowStart: true,
19903  gridColumn: true,
19904  gridColumnEnd: true,
19905  gridColumnSpan: true,
19906  gridColumnStart: true,
19907  fontWeight: true,
19908  lineClamp: true,
19909  lineHeight: true,
19910  opacity: true,
19911  order: true,
19912  orphans: true,
19913  tabSize: true,
19914  widows: true,
19915  zIndex: true,
19916  zoom: true,
19917  // SVG-related properties
19918  fillOpacity: true,
19919  floodOpacity: true,
19920  stopOpacity: true,
19921  strokeDasharray: true,
19922  strokeDashoffset: true,
19923  strokeMiterlimit: true,
19924  strokeOpacity: true,
19925  strokeWidth: true
19926};
19927
19928const prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);
19929
19930const prefixes = ['Webkit', 'Ms', 'Moz', 'O'];
19931isUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {
19932  prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);
19933  return acc;
19934}, isUnitlessNumber);
19935
19936function dangerousStyleValue(name, value, isCustomProperty) {
19937  if (value == null || typeof value === 'boolean' || value === '') return '';
19938  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers
19939
19940  return ('' + value).trim();
19941}
19942
19943const attributeCache = {};
19944injectCreateAnimatedStyle(style => new AnimatedStyle(style));
19945injectDefaultElement('div');
19946injectStringInterpolator(createStringInterpolator);
19947injectColorNames(colors);
19948injectApplyAnimatedValues((instance, props) => {
19949  if (instance.nodeType && instance.setAttribute !== undefined) {
19950    const style = props.style,
19951          children = props.children,
19952          scrollTop = props.scrollTop,
19953          scrollLeft = props.scrollLeft,
19954          attributes = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, ["style", "children", "scrollTop", "scrollLeft"]);
19955
19956    const filter = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';
19957    if (scrollTop !== void 0) instance.scrollTop = scrollTop;
19958    if (scrollLeft !== void 0) instance.scrollLeft = scrollLeft; // Set textContent, if children is an animatable value
19959
19960    if (children !== void 0) instance.textContent = children; // Set styles ...
19961
19962    for (let styleName in style) {
19963      if (!style.hasOwnProperty(styleName)) continue;
19964      var isCustomProperty = styleName.indexOf('--') === 0;
19965      var styleValue = dangerousStyleValue(styleName, style[styleName], isCustomProperty);
19966      if (styleName === 'float') styleName = 'cssFloat';
19967      if (isCustomProperty) instance.style.setProperty(styleName, styleValue);else instance.style[styleName] = styleValue;
19968    } // Set attributes ...
19969
19970
19971    for (let name in attributes) {
19972      // Attributes are written in dash case
19973      const dashCase = filter ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase()));
19974      if (typeof instance.getAttribute(dashCase) !== 'undefined') instance.setAttribute(dashCase, attributes[name]);
19975    }
19976
19977    return;
19978  } else return false;
19979}, style => style);
19980const domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG
19981'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan']; // Extend animated with all the available THREE elements
19982
19983const apply = merge(createAnimatedComponent, false);
19984const extendedAnimated = apply(domElements);
19985
19986
19987/***/ }),
19988
vendor: 67,289 bytes, lines 19989-21875
19989/***/ "./node_modules/react/cjs/react.development.js":
19990/*!*****************************************************!*\
19991  !*** ./node_modules/react/cjs/react.development.js ***!
19992  \*****************************************************/
19993/*! no static exports found */
19994/***/ (function(module, exports, __webpack_require__) {
19995
19996"use strict";
19997/** @license React v16.13.1
19998 * react.development.js
19999 *
20000 * Copyright (c) Facebook, Inc. and its affiliates.
20001 *
20002 * This source code is licensed under the MIT license found in the
20003 * LICENSE file in the root directory of this source tree.
20004 */
20005
20006
20007if (true) {
20008  (function () {
20009    'use strict';
20010
20011    var _assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
20012
20013    var checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");
20014
20015    var ReactVersion = '16.13.1'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
20016    // nor polyfill, then a plain number is used for performance.
20017
20018    var hasSymbol = typeof Symbol === 'function' && Symbol.for;
20019    var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
20020    var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
20021    var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
20022    var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
20023    var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
20024    var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
20025    var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
20026
20027    var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
20028    var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
20029    var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
20030    var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
20031    var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
20032    var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
20033    var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
20034    var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
20035    var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
20036    var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
20037    var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
20038    var FAUX_ITERATOR_SYMBOL = '@@iterator';
20039
20040    function getIteratorFn(maybeIterable) {
20041      if (maybeIterable === null || typeof maybeIterable !== 'object') {
20042        return null;
20043      }
20044
20045      var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
20046
20047      if (typeof maybeIterator === 'function') {
20048        return maybeIterator;
20049      }
20050
20051      return null;
20052    }
20053    /**
20054     * Keeps track of the current dispatcher.
20055     */
20056
20057
20058    var ReactCurrentDispatcher = {
20059      /**
20060       * @internal
20061       * @type {ReactComponent}
20062       */
20063      current: null
20064    };
20065    /**
20066     * Keeps track of the current batch's configuration such as how long an update
20067     * should suspend for if it needs to.
20068     */
20069
20070    var ReactCurrentBatchConfig = {
20071      suspense: null
20072    };
20073    /**
20074     * Keeps track of the current owner.
20075     *
20076     * The current owner is the component who should own any components that are
20077     * currently being constructed.
20078     */
20079
20080    var ReactCurrentOwner = {
20081      /**
20082       * @internal
20083       * @type {ReactComponent}
20084       */
20085      current: null
20086    };
20087    var BEFORE_SLASH_RE = /^(.*)[\\\/]/;
20088
20089    function describeComponentFrame(name, source, ownerName) {
20090      var sourceInfo = '';
20091
20092      if (source) {
20093        var path = source.fileName;
20094        var fileName = path.replace(BEFORE_SLASH_RE, '');
20095        {
20096          // In DEV, include code for a common special case:
20097          // prefer "folder/index.js" instead of just "index.js".
20098          if (/^index\./.test(fileName)) {
20099            var match = path.match(BEFORE_SLASH_RE);
20100
20101            if (match) {
20102              var pathBeforeSlash = match[1];
20103
20104              if (pathBeforeSlash) {
20105                var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, '');
20106                fileName = folderName + '/' + fileName;
20107              }
20108            }
20109          }
20110        }
20111        sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')';
20112      } else if (ownerName) {
20113        sourceInfo = ' (created by ' + ownerName + ')';
20114      }
20115
20116      return '\n    in ' + (name || 'Unknown') + sourceInfo;
20117    }
20118
20119    var Resolved = 1;
20120
20121    function refineResolvedLazyComponent(lazyComponent) {
20122      return lazyComponent._status === Resolved ? lazyComponent._result : null;
20123    }
20124
20125    function getWrappedName(outerType, innerType, wrapperName) {
20126      var functionName = innerType.displayName || innerType.name || '';
20127      return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName);
20128    }
20129
20130    function getComponentName(type) {
20131      if (type == null) {
20132        // Host root, text node or just invalid type.
20133        return null;
20134      }
20135
20136      {
20137        if (typeof type.tag === 'number') {
20138          error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');
20139        }
20140      }
20141
20142      if (typeof type === 'function') {
20143        return type.displayName || type.name || null;
20144      }
20145
20146      if (typeof type === 'string') {
20147        return type;
20148      }
20149
20150      switch (type) {
20151        case REACT_FRAGMENT_TYPE:
20152          return 'Fragment';
20153
20154        case REACT_PORTAL_TYPE:
20155          return 'Portal';
20156
20157        case REACT_PROFILER_TYPE:
20158          return "Profiler";
20159
20160        case REACT_STRICT_MODE_TYPE:
20161          return 'StrictMode';
20162
20163        case REACT_SUSPENSE_TYPE:
20164          return 'Suspense';
20165
20166        case REACT_SUSPENSE_LIST_TYPE:
20167          return 'SuspenseList';
20168      }
20169
20170      if (typeof type === 'object') {
20171        switch (type.$$typeof) {
20172          case REACT_CONTEXT_TYPE:
20173            return 'Context.Consumer';
20174
20175          case REACT_PROVIDER_TYPE:
20176            return 'Context.Provider';
20177
20178          case REACT_FORWARD_REF_TYPE:
20179            return getWrappedName(type, type.render, 'ForwardRef');
20180
20181          case REACT_MEMO_TYPE:
20182            return getComponentName(type.type);
20183
20184          case REACT_BLOCK_TYPE:
20185            return getComponentName(type.render);
20186
20187          case REACT_LAZY_TYPE:
20188            {
20189              var thenable = type;
20190              var resolvedThenable = refineResolvedLazyComponent(thenable);
20191
20192              if (resolvedThenable) {
20193                return getComponentName(resolvedThenable);
20194              }
20195
20196              break;
20197            }
20198        }
20199      }
20200
20201      return null;
20202    }
20203
20204    var ReactDebugCurrentFrame = {};
20205    var currentlyValidatingElement = null;
20206
20207    function setCurrentlyValidatingElement(element) {
20208      {
20209        currentlyValidatingElement = element;
20210      }
20211    }
20212
20213    {
20214      // Stack implementation injected by the current renderer.
20215      ReactDebugCurrentFrame.getCurrentStack = null;
20216
20217      ReactDebugCurrentFrame.getStackAddendum = function () {
20218        var stack = ''; // Add an extra top frame while an element is being validated
20219
20220        if (currentlyValidatingElement) {
20221          var name = getComponentName(currentlyValidatingElement.type);
20222          var owner = currentlyValidatingElement._owner;
20223          stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner.type));
20224        } // Delegate to the injected renderer-specific implementation
20225
20226
20227        var impl = ReactDebugCurrentFrame.getCurrentStack;
20228
20229        if (impl) {
20230          stack += impl() || '';
20231        }
20232
20233        return stack;
20234      };
20235    }
20236    /**
20237     * Used by act() to track whether you're inside an act() scope.
20238     */
20239
20240    var IsSomeRendererActing = {
20241      current: false
20242    };
20243    var ReactSharedInternals = {
20244      ReactCurrentDispatcher: ReactCurrentDispatcher,
20245      ReactCurrentBatchConfig: ReactCurrentBatchConfig,
20246      ReactCurrentOwner: ReactCurrentOwner,
20247      IsSomeRendererActing: IsSomeRendererActing,
20248      // Used by renderers to avoid bundling object-assign twice in UMD bundles:
20249      assign: _assign
20250    };
20251    {
20252      _assign(ReactSharedInternals, {
20253        // These should not be included in production.
20254        ReactDebugCurrentFrame: ReactDebugCurrentFrame,
20255        // Shim for React DOM 16.0.0 which still destructured (but not used) this.
20256        // TODO: remove in React 17.0.
20257        ReactComponentTreeHook: {}
20258      });
20259    } // by calls to these methods by a Babel plugin.
20260    //
20261    // In PROD (or in packages without access to React internals),
20262    // they are left as they are instead.
20263
20264    function warn(format) {
20265      {
20266        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
20267          args[_key - 1] = arguments[_key];
20268        }
20269
20270        printWarning('warn', format, args);
20271      }
20272    }
20273
20274    function error(format) {
20275      {
20276        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
20277          args[_key2 - 1] = arguments[_key2];
20278        }
20279
20280        printWarning('error', format, args);
20281      }
20282    }
20283
20284    function printWarning(level, format, args) {
20285      // When changing this logic, you might want to also
20286      // update consoleWithStackDev.www.js as well.
20287      {
20288        var hasExistingStack = args.length > 0 && typeof args[args.length - 1] === 'string' && args[args.length - 1].indexOf('\n    in') === 0;
20289
20290        if (!hasExistingStack) {
20291          var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
20292          var stack = ReactDebugCurrentFrame.getStackAddendum();
20293
20294          if (stack !== '') {
20295            format += '%s';
20296            args = args.concat([stack]);
20297          }
20298        }
20299
20300        var argsWithFormat = args.map(function (item) {
20301          return '' + item;
20302        }); // Careful: RN currently depends on this prefix
20303
20304        argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
20305        // breaks IE9: https://github.com/facebook/react/issues/13610
20306        // eslint-disable-next-line react-internal/no-production-logging
20307
20308        Function.prototype.apply.call(console[level], console, argsWithFormat);
20309
20310        try {
20311          // --- Welcome to debugging React ---
20312          // This error was thrown as a convenience so that you can use this stack
20313          // to find the callsite that caused this warning to fire.
20314          var argIndex = 0;
20315          var message = 'Warning: ' + format.replace(/%s/g, function () {
20316            return args[argIndex++];
20317          });
20318          throw new Error(message);
20319        } catch (x) {}
20320      }
20321    }
20322
20323    var didWarnStateUpdateForUnmountedComponent = {};
20324
20325    function warnNoop(publicInstance, callerName) {
20326      {
20327        var _constructor = publicInstance.constructor;
20328        var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';
20329        var warningKey = componentName + "." + callerName;
20330
20331        if (didWarnStateUpdateForUnmountedComponent[warningKey]) {
20332          return;
20333        }
20334
20335        error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);
20336        didWarnStateUpdateForUnmountedComponent[warningKey] = true;
20337      }
20338    }
20339    /**
20340     * This is the abstract API for an update queue.
20341     */
20342
20343
20344    var ReactNoopUpdateQueue = {
20345      /**
20346       * Checks whether or not this composite component is mounted.
20347       * @param {ReactClass} publicInstance The instance we want to test.
20348       * @return {boolean} True if mounted, false otherwise.
20349       * @protected
20350       * @final
20351       */
20352      isMounted: function (publicInstance) {
20353        return false;
20354      },
20355
20356      /**
20357       * Forces an update. This should only be invoked when it is known with
20358       * certainty that we are **not** in a DOM transaction.
20359       *
20360       * You may want to call this when you know that some deeper aspect of the
20361       * component's state has changed but `setState` was not called.
20362       *
20363       * This will not invoke `shouldComponentUpdate`, but it will invoke
20364       * `componentWillUpdate` and `componentDidUpdate`.
20365       *
20366       * @param {ReactClass} publicInstance The instance that should rerender.
20367       * @param {?function} callback Called after component is updated.
20368       * @param {?string} callerName name of the calling function in the public API.
20369       * @internal
20370       */
20371      enqueueForceUpdate: function (publicInstance, callback, callerName) {
20372        warnNoop(publicInstance, 'forceUpdate');
20373      },
20374
20375      /**
20376       * Replaces all of the state. Always use this or `setState` to mutate state.
20377       * You should treat `this.state` as immutable.
20378       *
20379       * There is no guarantee that `this.state` will be immediately updated, so
20380       * accessing `this.state` after calling this method may return the old value.
20381       *
20382       * @param {ReactClass} publicInstance The instance that should rerender.
20383       * @param {object} completeState Next state.
20384       * @param {?function} callback Called after component is updated.
20385       * @param {?string} callerName name of the calling function in the public API.
20386       * @internal
20387       */
20388      enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {
20389        warnNoop(publicInstance, 'replaceState');
20390      },
20391
20392      /**
20393       * Sets a subset of the state. This only exists because _pendingState is
20394       * internal. This provides a merging strategy that is not available to deep
20395       * properties which is confusing. TODO: Expose pendingState or don't use it
20396       * during the merge.
20397       *
20398       * @param {ReactClass} publicInstance The instance that should rerender.
20399       * @param {object} partialState Next partial state to be merged with state.
20400       * @param {?function} callback Called after component is updated.
20401       * @param {?string} Name of the calling function in the public API.
20402       * @internal
20403       */
20404      enqueueSetState: function (publicInstance, partialState, callback, callerName) {
20405        warnNoop(publicInstance, 'setState');
20406      }
20407    };
20408    var emptyObject = {};
20409    {
20410      Object.freeze(emptyObject);
20411    }
20412    /**
20413     * Base class helpers for the updating state of a component.
20414     */
20415
20416    function Component(props, context, updater) {
20417      this.props = props;
20418      this.context = context; // If a component has string refs, we will assign a different object later.
20419
20420      this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the
20421      // renderer.
20422
20423      this.updater = updater || ReactNoopUpdateQueue;
20424    }
20425
20426    Component.prototype.isReactComponent = {};
20427    /**
20428     * Sets a subset of the state. Always use this to mutate
20429     * state. You should treat `this.state` as immutable.
20430     *
20431     * There is no guarantee that `this.state` will be immediately updated, so
20432     * accessing `this.state` after calling this method may return the old value.
20433     *
20434     * There is no guarantee that calls to `setState` will run synchronously,
20435     * as they may eventually be batched together.  You can provide an optional
20436     * callback that will be executed when the call to setState is actually
20437     * completed.
20438     *
20439     * When a function is provided to setState, it will be called at some point in
20440     * the future (not synchronously). It will be called with the up to date
20441     * component arguments (state, props, context). These values can be different
20442     * from this.* because your function may be called after receiveProps but before
20443     * shouldComponentUpdate, and this new state, props, and context will not yet be
20444     * assigned to this.
20445     *
20446     * @param {object|function} partialState Next partial state or function to
20447     *        produce next partial state to be merged with current state.
20448     * @param {?function} callback Called after state is updated.
20449     * @final
20450     * @protected
20451     */
20452
20453    Component.prototype.setState = function (partialState, callback) {
20454      if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) {
20455        {
20456          throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
20457        }
20458      }
20459
20460      this.updater.enqueueSetState(this, partialState, callback, 'setState');
20461    };
20462    /**
20463     * Forces an update. This should only be invoked when it is known with
20464     * certainty that we are **not** in a DOM transaction.
20465     *
20466     * You may want to call this when you know that some deeper aspect of the
20467     * component's state has changed but `setState` was not called.
20468     *
20469     * This will not invoke `shouldComponentUpdate`, but it will invoke
20470     * `componentWillUpdate` and `componentDidUpdate`.
20471     *
20472     * @param {?function} callback Called after update is complete.
20473     * @final
20474     * @protected
20475     */
20476
20477
20478    Component.prototype.forceUpdate = function (callback) {
20479      this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
20480    };
20481    /**
20482     * Deprecated APIs. These APIs used to exist on classic React classes but since
20483     * we would like to deprecate them, we're not going to move them over to this
20484     * modern base class. Instead, we define a getter that warns if it's accessed.
20485     */
20486
20487
20488    {
20489      var deprecatedAPIs = {
20490        isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
20491        replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
20492      };
20493
20494      var defineDeprecationWarning = function (methodName, info) {
20495        Object.defineProperty(Component.prototype, methodName, {
20496          get: function () {
20497            warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);
20498            return undefined;
20499          }
20500        });
20501      };
20502
20503      for (var fnName in deprecatedAPIs) {
20504        if (deprecatedAPIs.hasOwnProperty(fnName)) {
20505          defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
20506        }
20507      }
20508    }
20509
20510    function ComponentDummy() {}
20511
20512    ComponentDummy.prototype = Component.prototype;
20513    /**
20514     * Convenience component with default shallow equality check for sCU.
20515     */
20516
20517    function PureComponent(props, context, updater) {
20518      this.props = props;
20519      this.context = context; // If a component has string refs, we will assign a different object later.
20520
20521      this.refs = emptyObject;
20522      this.updater = updater || ReactNoopUpdateQueue;
20523    }
20524
20525    var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
20526    pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.
20527
20528    _assign(pureComponentPrototype, Component.prototype);
20529
20530    pureComponentPrototype.isPureReactComponent = true; // an immutable object with a single mutable value
20531
20532    function createRef() {
20533      var refObject = {
20534        current: null
20535      };
20536      {
20537        Object.seal(refObject);
20538      }
20539      return refObject;
20540    }
20541
20542    var hasOwnProperty = Object.prototype.hasOwnProperty;
20543    var RESERVED_PROPS = {
20544      key: true,
20545      ref: true,
20546      __self: true,
20547      __source: true
20548    };
20549    var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;
20550    {
20551      didWarnAboutStringRefs = {};
20552    }
20553
20554    function hasValidRef(config) {
20555      {
20556        if (hasOwnProperty.call(config, 'ref')) {
20557          var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
20558
20559          if (getter && getter.isReactWarning) {
20560            return false;
20561          }
20562        }
20563      }
20564      return config.ref !== undefined;
20565    }
20566
20567    function hasValidKey(config) {
20568      {
20569        if (hasOwnProperty.call(config, 'key')) {
20570          var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
20571
20572          if (getter && getter.isReactWarning) {
20573            return false;
20574          }
20575        }
20576      }
20577      return config.key !== undefined;
20578    }
20579
20580    function defineKeyPropWarningGetter(props, displayName) {
20581      var warnAboutAccessingKey = function () {
20582        {
20583          if (!specialPropKeyWarningShown) {
20584            specialPropKeyWarningShown = true;
20585            error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);
20586          }
20587        }
20588      };
20589
20590      warnAboutAccessingKey.isReactWarning = true;
20591      Object.defineProperty(props, 'key', {
20592        get: warnAboutAccessingKey,
20593        configurable: true
20594      });
20595    }
20596
20597    function defineRefPropWarningGetter(props, displayName) {
20598      var warnAboutAccessingRef = function () {
20599        {
20600          if (!specialPropRefWarningShown) {
20601            specialPropRefWarningShown = true;
20602            error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);
20603          }
20604        }
20605      };
20606
20607      warnAboutAccessingRef.isReactWarning = true;
20608      Object.defineProperty(props, 'ref', {
20609        get: warnAboutAccessingRef,
20610        configurable: true
20611      });
20612    }
20613
20614    function warnIfStringRefCannotBeAutoConverted(config) {
20615      {
20616        if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {
20617          var componentName = getComponentName(ReactCurrentOwner.current.type);
20618
20619          if (!didWarnAboutStringRefs[componentName]) {
20620            error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-string-ref', getComponentName(ReactCurrentOwner.current.type), config.ref);
20621            didWarnAboutStringRefs[componentName] = true;
20622          }
20623        }
20624      }
20625    }
20626    /**
20627     * Factory method to create a new React element. This no longer adheres to
20628     * the class pattern, so do not use new to call it. Also, instanceof check
20629     * will not work. Instead test $$typeof field against Symbol.for('react.element') to check
20630     * if something is a React Element.
20631     *
20632     * @param {*} type
20633     * @param {*} props
20634     * @param {*} key
20635     * @param {string|object} ref
20636     * @param {*} owner
20637     * @param {*} self A *temporary* helper to detect places where `this` is
20638     * different from the `owner` when React.createElement is called, so that we
20639     * can warn. We want to get rid of owner and replace string `ref`s with arrow
20640     * functions, and as long as `this` and owner are the same, there will be no
20641     * change in behavior.
20642     * @param {*} source An annotation object (added by a transpiler or otherwise)
20643     * indicating filename, line number, and/or other information.
20644     * @internal
20645     */
20646
20647
20648    var ReactElement = function (type, key, ref, self, source, owner, props) {
20649      var element = {
20650        // This tag allows us to uniquely identify this as a React Element
20651        $$typeof: REACT_ELEMENT_TYPE,
20652        // Built-in properties that belong on the element
20653        type: type,
20654        key: key,
20655        ref: ref,
20656        props: props,
20657        // Record the component responsible for creating this element.
20658        _owner: owner
20659      };
20660      {
20661        // The validation flag is currently mutative. We put it on
20662        // an external backing store so that we can freeze the whole object.
20663        // This can be replaced with a WeakMap once they are implemented in
20664        // commonly used development environments.
20665        element._store = {}; // To make comparing ReactElements easier for testing purposes, we make
20666        // the validation flag non-enumerable (where possible, which should
20667        // include every environment we run tests in), so the test framework
20668        // ignores it.
20669
20670        Object.defineProperty(element._store, 'validated', {
20671          configurable: false,
20672          enumerable: false,
20673          writable: true,
20674          value: false
20675        }); // self and source are DEV only properties.
20676
20677        Object.defineProperty(element, '_self', {
20678          configurable: false,
20679          enumerable: false,
20680          writable: false,
20681          value: self
20682        }); // Two elements created in two different places should be considered
20683        // equal for testing purposes and therefore we hide it from enumeration.
20684
20685        Object.defineProperty(element, '_source', {
20686          configurable: false,
20687          enumerable: false,
20688          writable: false,
20689          value: source
20690        });
20691
20692        if (Object.freeze) {
20693          Object.freeze(element.props);
20694          Object.freeze(element);
20695        }
20696      }
20697      return element;
20698    };
20699    /**
20700     * Create and return a new ReactElement of the given type.
20701     * See https://reactjs.org/docs/react-api.html#createelement
20702     */
20703
20704
20705    function createElement(type, config, children) {
20706      var propName; // Reserved names are extracted
20707
20708      var props = {};
20709      var key = null;
20710      var ref = null;
20711      var self = null;
20712      var source = null;
20713
20714      if (config != null) {
20715        if (hasValidRef(config)) {
20716          ref = config.ref;
20717          {
20718            warnIfStringRefCannotBeAutoConverted(config);
20719          }
20720        }
20721
20722        if (hasValidKey(config)) {
20723          key = '' + config.key;
20724        }
20725
20726        self = config.__self === undefined ? null : config.__self;
20727        source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object
20728
20729        for (propName in config) {
20730          if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
20731            props[propName] = config[propName];
20732          }
20733        }
20734      } // Children can be more than one argument, and those are transferred onto
20735      // the newly allocated props object.
20736
20737
20738      var childrenLength = arguments.length - 2;
20739
20740      if (childrenLength === 1) {
20741        props.children = children;
20742      } else if (childrenLength > 1) {
20743        var childArray = Array(childrenLength);
20744
20745        for (var i = 0; i < childrenLength; i++) {
20746          childArray[i] = arguments[i + 2];
20747        }
20748
20749        {
20750          if (Object.freeze) {
20751            Object.freeze(childArray);
20752          }
20753        }
20754        props.children = childArray;
20755      } // Resolve default props
20756
20757
20758      if (type && type.defaultProps) {
20759        var defaultProps = type.defaultProps;
20760
20761        for (propName in defaultProps) {
20762          if (props[propName] === undefined) {
20763            props[propName] = defaultProps[propName];
20764          }
20765        }
20766      }
20767
20768      {
20769        if (key || ref) {
20770          var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
20771
20772          if (key) {
20773            defineKeyPropWarningGetter(props, displayName);
20774          }
20775
20776          if (ref) {
20777            defineRefPropWarningGetter(props, displayName);
20778          }
20779        }
20780      }
20781      return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
20782    }
20783
20784    function cloneAndReplaceKey(oldElement, newKey) {
20785      var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
20786      return newElement;
20787    }
20788    /**
20789     * Clone and return a new ReactElement using element as the starting point.
20790     * See https://reactjs.org/docs/react-api.html#cloneelement
20791     */
20792
20793
20794    function cloneElement(element, config, children) {
20795      if (!!(element === null || element === undefined)) {
20796        {
20797          throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + ".");
20798        }
20799      }
20800
20801      var propName; // Original props are copied
20802
20803      var props = _assign({}, element.props); // Reserved names are extracted
20804
20805
20806      var key = element.key;
20807      var ref = element.ref; // Self is preserved since the owner is preserved.
20808
20809      var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a
20810      // transpiler, and the original source is probably a better indicator of the
20811      // true owner.
20812
20813      var source = element._source; // Owner will be preserved, unless ref is overridden
20814
20815      var owner = element._owner;
20816
20817      if (config != null) {
20818        if (hasValidRef(config)) {
20819          // Silently steal the ref from the parent.
20820          ref = config.ref;
20821          owner = ReactCurrentOwner.current;
20822        }
20823
20824        if (hasValidKey(config)) {
20825          key = '' + config.key;
20826        } // Remaining properties override existing props
20827
20828
20829        var defaultProps;
20830
20831        if (element.type && element.type.defaultProps) {
20832          defaultProps = element.type.defaultProps;
20833        }
20834
20835        for (propName in config) {
20836          if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
20837            if (config[propName] === undefined && defaultProps !== undefined) {
20838              // Resolve default props
20839              props[propName] = defaultProps[propName];
20840            } else {
20841              props[propName] = config[propName];
20842            }
20843          }
20844        }
20845      } // Children can be more than one argument, and those are transferred onto
20846      // the newly allocated props object.
20847
20848
20849      var childrenLength = arguments.length - 2;
20850
20851      if (childrenLength === 1) {
20852        props.children = children;
20853      } else if (childrenLength > 1) {
20854        var childArray = Array(childrenLength);
20855
20856        for (var i = 0; i < childrenLength; i++) {
20857          childArray[i] = arguments[i + 2];
20858        }
20859
20860        props.children = childArray;
20861      }
20862
20863      return ReactElement(element.type, key, ref, self, source, owner, props);
20864    }
20865    /**
20866     * Verifies the object is a ReactElement.
20867     * See https://reactjs.org/docs/react-api.html#isvalidelement
20868     * @param {?object} object
20869     * @return {boolean} True if `object` is a ReactElement.
20870     * @final
20871     */
20872
20873
20874    function isValidElement(object) {
20875      return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
20876    }
20877
20878    var SEPARATOR = '.';
20879    var SUBSEPARATOR = ':';
20880    /**
20881     * Escape and wrap key so it is safe to use as a reactid
20882     *
20883     * @param {string} key to be escaped.
20884     * @return {string} the escaped key.
20885     */
20886
20887    function escape(key) {
20888      var escapeRegex = /[=:]/g;
20889      var escaperLookup = {
20890        '=': '=0',
20891        ':': '=2'
20892      };
20893      var escapedString = ('' + key).replace(escapeRegex, function (match) {
20894        return escaperLookup[match];
20895      });
20896      return '$' + escapedString;
20897    }
20898    /**
20899     * TODO: Test that a single child and an array with one item have the same key
20900     * pattern.
20901     */
20902
20903
20904    var didWarnAboutMaps = false;
20905    var userProvidedKeyEscapeRegex = /\/+/g;
20906
20907    function escapeUserProvidedKey(text) {
20908      return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');
20909    }
20910
20911    var POOL_SIZE = 10;
20912    var traverseContextPool = [];
20913
20914    function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) {
20915      if (traverseContextPool.length) {
20916        var traverseContext = traverseContextPool.pop();
20917        traverseContext.result = mapResult;
20918        traverseContext.keyPrefix = keyPrefix;
20919        traverseContext.func = mapFunction;
20920        traverseContext.context = mapContext;
20921        traverseContext.count = 0;
20922        return traverseContext;
20923      } else {
20924        return {
20925          result: mapResult,
20926          keyPrefix: keyPrefix,
20927          func: mapFunction,
20928          context: mapContext,
20929          count: 0
20930        };
20931      }
20932    }
20933
20934    function releaseTraverseContext(traverseContext) {
20935      traverseContext.result = null;
20936      traverseContext.keyPrefix = null;
20937      traverseContext.func = null;
20938      traverseContext.context = null;
20939      traverseContext.count = 0;
20940
20941      if (traverseContextPool.length < POOL_SIZE) {
20942        traverseContextPool.push(traverseContext);
20943      }
20944    }
20945    /**
20946     * @param {?*} children Children tree container.
20947     * @param {!string} nameSoFar Name of the key path so far.
20948     * @param {!function} callback Callback to invoke with each child found.
20949     * @param {?*} traverseContext Used to pass information throughout the traversal
20950     * process.
20951     * @return {!number} The number of children in this subtree.
20952     */
20953
20954
20955    function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
20956      var type = typeof children;
20957
20958      if (type === 'undefined' || type === 'boolean') {
20959        // All of the above are perceived as null.
20960        children = null;
20961      }
20962
20963      var invokeCallback = false;
20964
20965      if (children === null) {
20966        invokeCallback = true;
20967      } else {
20968        switch (type) {
20969          case 'string':
20970          case 'number':
20971            invokeCallback = true;
20972            break;
20973
20974          case 'object':
20975            switch (children.$$typeof) {
20976              case REACT_ELEMENT_TYPE:
20977              case REACT_PORTAL_TYPE:
20978                invokeCallback = true;
20979            }
20980
20981        }
20982      }
20983
20984      if (invokeCallback) {
20985        callback(traverseContext, children, // If it's the only child, treat the name as if it was wrapped in an array
20986        // so that it's consistent if the number of children grows.
20987        nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
20988        return 1;
20989      }
20990
20991      var child;
20992      var nextName;
20993      var subtreeCount = 0; // Count of children found in the current subtree.
20994
20995      var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
20996
20997      if (Array.isArray(children)) {
20998        for (var i = 0; i < children.length; i++) {
20999          child = children[i];
21000          nextName = nextNamePrefix + getComponentKey(child, i);
21001          subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
21002        }
21003      } else {
21004        var iteratorFn = getIteratorFn(children);
21005
21006        if (typeof iteratorFn === 'function') {
21007          {
21008            // Warn about using Maps as children
21009            if (iteratorFn === children.entries) {
21010              if (!didWarnAboutMaps) {
21011                warn('Using Maps as children is deprecated and will be removed in ' + 'a future major release. Consider converting children to ' + 'an array of keyed ReactElements instead.');
21012              }
21013
21014              didWarnAboutMaps = true;
21015            }
21016          }
21017          var iterator = iteratorFn.call(children);
21018          var step;
21019          var ii = 0;
21020
21021          while (!(step = iterator.next()).done) {
21022            child = step.value;
21023            nextName = nextNamePrefix + getComponentKey(child, ii++);
21024            subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
21025          }
21026        } else if (type === 'object') {
21027          var addendum = '';
21028          {
21029            addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum();
21030          }
21031          var childrenString = '' + children;
21032          {
21033            {
21034              throw Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + ")." + addendum);
21035            }
21036          }
21037        }
21038      }
21039
21040      return subtreeCount;
21041    }
21042    /**
21043     * Traverses children that are typically specified as `props.children`, but
21044     * might also be specified through attributes:
21045     *
21046     * - `traverseAllChildren(this.props.children, ...)`
21047     * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
21048     *
21049     * The `traverseContext` is an optional argument that is passed through the
21050     * entire traversal. It can be used to store accumulations or anything else that
21051     * the callback might find relevant.
21052     *
21053     * @param {?*} children Children tree object.
21054     * @param {!function} callback To invoke upon traversing each child.
21055     * @param {?*} traverseContext Context for traversal.
21056     * @return {!number} The number of children in this subtree.
21057     */
21058
21059
21060    function traverseAllChildren(children, callback, traverseContext) {
21061      if (children == null) {
21062        return 0;
21063      }
21064
21065      return traverseAllChildrenImpl(children, '', callback, traverseContext);
21066    }
21067    /**
21068     * Generate a key string that identifies a component within a set.
21069     *
21070     * @param {*} component A component that could contain a manual key.
21071     * @param {number} index Index that is used if a manual key is not provided.
21072     * @return {string}
21073     */
21074
21075
21076    function getComponentKey(component, index) {
21077      // Do some typechecking here since we call this blindly. We want to ensure
21078      // that we don't block potential future ES APIs.
21079      if (typeof component === 'object' && component !== null && component.key != null) {
21080        // Explicit key
21081        return escape(component.key);
21082      } // Implicit key determined by the index in the set
21083
21084
21085      return index.toString(36);
21086    }
21087
21088    function forEachSingleChild(bookKeeping, child, name) {
21089      var func = bookKeeping.func,
21090          context = bookKeeping.context;
21091      func.call(context, child, bookKeeping.count++);
21092    }
21093    /**
21094     * Iterates through children that are typically specified as `props.children`.
21095     *
21096     * See https://reactjs.org/docs/react-api.html#reactchildrenforeach
21097     *
21098     * The provided forEachFunc(child, index) will be called for each
21099     * leaf child.
21100     *
21101     * @param {?*} children Children tree container.
21102     * @param {function(*, int)} forEachFunc
21103     * @param {*} forEachContext Context for forEachContext.
21104     */
21105
21106
21107    function forEachChildren(children, forEachFunc, forEachContext) {
21108      if (children == null) {
21109        return children;
21110      }
21111
21112      var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext);
21113      traverseAllChildren(children, forEachSingleChild, traverseContext);
21114      releaseTraverseContext(traverseContext);
21115    }
21116
21117    function mapSingleChildIntoContext(bookKeeping, child, childKey) {
21118      var result = bookKeeping.result,
21119          keyPrefix = bookKeeping.keyPrefix,
21120          func = bookKeeping.func,
21121          context = bookKeeping.context;
21122      var mappedChild = func.call(context, child, bookKeeping.count++);
21123
21124      if (Array.isArray(mappedChild)) {
21125        mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, function (c) {
21126          return c;
21127        });
21128      } else if (mappedChild != null) {
21129        if (isValidElement(mappedChild)) {
21130          mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as
21131          // traverseAllChildren used to do for objects as children
21132          keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);
21133        }
21134
21135        result.push(mappedChild);
21136      }
21137    }
21138
21139    function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
21140      var escapedPrefix = '';
21141
21142      if (prefix != null) {
21143        escapedPrefix = escapeUserProvidedKey(prefix) + '/';
21144      }
21145
21146      var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context);
21147      traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
21148      releaseTraverseContext(traverseContext);
21149    }
21150    /**
21151     * Maps children that are typically specified as `props.children`.
21152     *
21153     * See https://reactjs.org/docs/react-api.html#reactchildrenmap
21154     *
21155     * The provided mapFunction(child, key, index) will be called for each
21156     * leaf child.
21157     *
21158     * @param {?*} children Children tree container.
21159     * @param {function(*, int)} func The map function.
21160     * @param {*} context Context for mapFunction.
21161     * @return {object} Object containing the ordered map of results.
21162     */
21163
21164
21165    function mapChildren(children, func, context) {
21166      if (children == null) {
21167        return children;
21168      }
21169
21170      var result = [];
21171      mapIntoWithKeyPrefixInternal(children, result, null, func, context);
21172      return result;
21173    }
21174    /**
21175     * Count the number of children that are typically specified as
21176     * `props.children`.
21177     *
21178     * See https://reactjs.org/docs/react-api.html#reactchildrencount
21179     *
21180     * @param {?*} children Children tree container.
21181     * @return {number} The number of children.
21182     */
21183
21184
21185    function countChildren(children) {
21186      return traverseAllChildren(children, function () {
21187        return null;
21188      }, null);
21189    }
21190    /**
21191     * Flatten a children object (typically specified as `props.children`) and
21192     * return an array with appropriately re-keyed children.
21193     *
21194     * See https://reactjs.org/docs/react-api.html#reactchildrentoarray
21195     */
21196
21197
21198    function toArray(children) {
21199      var result = [];
21200      mapIntoWithKeyPrefixInternal(children, result, null, function (child) {
21201        return child;
21202      });
21203      return result;
21204    }
21205    /**
21206     * Returns the first child in a collection of children and verifies that there
21207     * is only one child in the collection.
21208     *
21209     * See https://reactjs.org/docs/react-api.html#reactchildrenonly
21210     *
21211     * The current implementation of this function assumes that a single child gets
21212     * passed without a wrapper, but the purpose of this helper function is to
21213     * abstract away the particular structure of children.
21214     *
21215     * @param {?object} children Child collection structure.
21216     * @return {ReactElement} The first and only `ReactElement` contained in the
21217     * structure.
21218     */
21219
21220
21221    function onlyChild(children) {
21222      if (!isValidElement(children)) {
21223        {
21224          throw Error("React.Children.only expected to receive a single React element child.");
21225        }
21226      }
21227
21228      return children;
21229    }
21230
21231    function createContext(defaultValue, calculateChangedBits) {
21232      if (calculateChangedBits === undefined) {
21233        calculateChangedBits = null;
21234      } else {
21235        {
21236          if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') {
21237            error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits);
21238          }
21239        }
21240      }
21241
21242      var context = {
21243        $$typeof: REACT_CONTEXT_TYPE,
21244        _calculateChangedBits: calculateChangedBits,
21245        // As a workaround to support multiple concurrent renderers, we categorize
21246        // some renderers as primary and others as secondary. We only expect
21247        // there to be two concurrent renderers at most: React Native (primary) and
21248        // Fabric (secondary); React DOM (primary) and React ART (secondary).
21249        // Secondary renderers store their context values on separate fields.
21250        _currentValue: defaultValue,
21251        _currentValue2: defaultValue,
21252        // Used to track how many concurrent renderers this context currently
21253        // supports within in a single renderer. Such as parallel server rendering.
21254        _threadCount: 0,
21255        // These are circular
21256        Provider: null,
21257        Consumer: null
21258      };
21259      context.Provider = {
21260        $$typeof: REACT_PROVIDER_TYPE,
21261        _context: context
21262      };
21263      var hasWarnedAboutUsingNestedContextConsumers = false;
21264      var hasWarnedAboutUsingConsumerProvider = false;
21265      {
21266        // A separate object, but proxies back to the original context object for
21267        // backwards compatibility. It has a different $$typeof, so we can properly
21268        // warn for the incorrect usage of Context as a Consumer.
21269        var Consumer = {
21270          $$typeof: REACT_CONTEXT_TYPE,
21271          _context: context,
21272          _calculateChangedBits: context._calculateChangedBits
21273        }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here
21274
21275        Object.defineProperties(Consumer, {
21276          Provider: {
21277            get: function () {
21278              if (!hasWarnedAboutUsingConsumerProvider) {
21279                hasWarnedAboutUsingConsumerProvider = true;
21280                error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');
21281              }
21282
21283              return context.Provider;
21284            },
21285            set: function (_Provider) {
21286              context.Provider = _Provider;
21287            }
21288          },
21289          _currentValue: {
21290            get: function () {
21291              return context._currentValue;
21292            },
21293            set: function (_currentValue) {
21294              context._currentValue = _currentValue;
21295            }
21296          },
21297          _currentValue2: {
21298            get: function () {
21299              return context._currentValue2;
21300            },
21301            set: function (_currentValue2) {
21302              context._currentValue2 = _currentValue2;
21303            }
21304          },
21305          _threadCount: {
21306            get: function () {
21307              return context._threadCount;
21308            },
21309            set: function (_threadCount) {
21310              context._threadCount = _threadCount;
21311            }
21312          },
21313          Consumer: {
21314            get: function () {
21315              if (!hasWarnedAboutUsingNestedContextConsumers) {
21316                hasWarnedAboutUsingNestedContextConsumers = true;
21317                error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');
21318              }
21319
21320              return context.Consumer;
21321            }
21322          }
21323        }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty
21324
21325        context.Consumer = Consumer;
21326      }
21327      {
21328        context._currentRenderer = null;
21329        context._currentRenderer2 = null;
21330      }
21331      return context;
21332    }
21333
21334    function lazy(ctor) {
21335      var lazyType = {
21336        $$typeof: REACT_LAZY_TYPE,
21337        _ctor: ctor,
21338        // React uses these fields to store the result.
21339        _status: -1,
21340        _result: null
21341      };
21342      {
21343        // In production, this would just set it on the object.
21344        var defaultProps;
21345        var propTypes;
21346        Object.defineProperties(lazyType, {
21347          defaultProps: {
21348            configurable: true,
21349            get: function () {
21350              return defaultProps;
21351            },
21352            set: function (newDefaultProps) {
21353              error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
21354              defaultProps = newDefaultProps; // Match production behavior more closely:
21355
21356              Object.defineProperty(lazyType, 'defaultProps', {
21357                enumerable: true
21358              });
21359            }
21360          },
21361          propTypes: {
21362            configurable: true,
21363            get: function () {
21364              return propTypes;
21365            },
21366            set: function (newPropTypes) {
21367              error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
21368              propTypes = newPropTypes; // Match production behavior more closely:
21369
21370              Object.defineProperty(lazyType, 'propTypes', {
21371                enumerable: true
21372              });
21373            }
21374          }
21375        });
21376      }
21377      return lazyType;
21378    }
21379
21380    function forwardRef(render) {
21381      {
21382        if (render != null && render.$$typeof === REACT_MEMO_TYPE) {
21383          error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');
21384        } else if (typeof render !== 'function') {
21385          error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);
21386        } else {
21387          if (render.length !== 0 && render.length !== 2) {
21388            error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');
21389          }
21390        }
21391
21392        if (render != null) {
21393          if (render.defaultProps != null || render.propTypes != null) {
21394            error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');
21395          }
21396        }
21397      }
21398      return {
21399        $$typeof: REACT_FORWARD_REF_TYPE,
21400        render: render
21401      };
21402    }
21403
21404    function isValidElementType(type) {
21405      return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
21406      type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
21407    }
21408
21409    function memo(type, compare) {
21410      {
21411        if (!isValidElementType(type)) {
21412          error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);
21413        }
21414      }
21415      return {
21416        $$typeof: REACT_MEMO_TYPE,
21417        type: type,
21418        compare: compare === undefined ? null : compare
21419      };
21420    }
21421
21422    function resolveDispatcher() {
21423      var dispatcher = ReactCurrentDispatcher.current;
21424
21425      if (!(dispatcher !== null)) {
21426        {
21427          throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.");
21428        }
21429      }
21430
21431      return dispatcher;
21432    }
21433
21434    function useContext(Context, unstable_observedBits) {
21435      var dispatcher = resolveDispatcher();
21436      {
21437        if (unstable_observedBits !== undefined) {
21438          error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\n\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://fb.me/rules-of-hooks' : '');
21439        } // TODO: add a more generic warning for invalid values.
21440
21441
21442        if (Context._context !== undefined) {
21443          var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs
21444          // and nobody should be using this in existing code.
21445
21446          if (realContext.Consumer === Context) {
21447            error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');
21448          } else if (realContext.Provider === Context) {
21449            error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');
21450          }
21451        }
21452      }
21453      return dispatcher.useContext(Context, unstable_observedBits);
21454    }
21455
21456    function useState(initialState) {
21457      var dispatcher = resolveDispatcher();
21458      return dispatcher.useState(initialState);
21459    }
21460
21461    function useReducer(reducer, initialArg, init) {
21462      var dispatcher = resolveDispatcher();
21463      return dispatcher.useReducer(reducer, initialArg, init);
21464    }
21465
21466    function useRef(initialValue) {
21467      var dispatcher = resolveDispatcher();
21468      return dispatcher.useRef(initialValue);
21469    }
21470
21471    function useEffect(create, deps) {
21472      var dispatcher = resolveDispatcher();
21473      return dispatcher.useEffect(create, deps);
21474    }
21475
21476    function useLayoutEffect(create, deps) {
21477      var dispatcher = resolveDispatcher();
21478      return dispatcher.useLayoutEffect(create, deps);
21479    }
21480
21481    function useCallback(callback, deps) {
21482      var dispatcher = resolveDispatcher();
21483      return dispatcher.useCallback(callback, deps);
21484    }
21485
21486    function useMemo(create, deps) {
21487      var dispatcher = resolveDispatcher();
21488      return dispatcher.useMemo(create, deps);
21489    }
21490
21491    function useImperativeHandle(ref, create, deps) {
21492      var dispatcher = resolveDispatcher();
21493      return dispatcher.useImperativeHandle(ref, create, deps);
21494    }
21495
21496    function useDebugValue(value, formatterFn) {
21497      {
21498        var dispatcher = resolveDispatcher();
21499        return dispatcher.useDebugValue(value, formatterFn);
21500      }
21501    }
21502
21503    var propTypesMisspellWarningShown;
21504    {
21505      propTypesMisspellWarningShown = false;
21506    }
21507
21508    function getDeclarationErrorAddendum() {
21509      if (ReactCurrentOwner.current) {
21510        var name = getComponentName(ReactCurrentOwner.current.type);
21511
21512        if (name) {
21513          return '\n\nCheck the render method of `' + name + '`.';
21514        }
21515      }
21516
21517      return '';
21518    }
21519
21520    function getSourceInfoErrorAddendum(source) {
21521      if (source !== undefined) {
21522        var fileName = source.fileName.replace(/^.*[\\\/]/, '');
21523        var lineNumber = source.lineNumber;
21524        return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.';
21525      }
21526
21527      return '';
21528    }
21529
21530    function getSourceInfoErrorAddendumForProps(elementProps) {
21531      if (elementProps !== null && elementProps !== undefined) {
21532        return getSourceInfoErrorAddendum(elementProps.__source);
21533      }
21534
21535      return '';
21536    }
21537    /**
21538     * Warn if there's no key explicitly set on dynamic arrays of children or
21539     * object keys are not valid. This allows us to keep track of children between
21540     * updates.
21541     */
21542
21543
21544    var ownerHasKeyUseWarning = {};
21545
21546    function getCurrentComponentErrorInfo(parentType) {
21547      var info = getDeclarationErrorAddendum();
21548
21549      if (!info) {
21550        var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
21551
21552        if (parentName) {
21553          info = "\n\nCheck the top-level render call using <" + parentName + ">.";
21554        }
21555      }
21556
21557      return info;
21558    }
21559    /**
21560     * Warn if the element doesn't have an explicit key assigned to it.
21561     * This element is in an array. The array could grow and shrink or be
21562     * reordered. All children that haven't already been validated are required to
21563     * have a "key" property assigned to it. Error statuses are cached so a warning
21564     * will only be shown once.
21565     *
21566     * @internal
21567     * @param {ReactElement} element Element that requires a key.
21568     * @param {*} parentType element's parent's type.
21569     */
21570
21571
21572    function validateExplicitKey(element, parentType) {
21573      if (!element._store || element._store.validated || element.key != null) {
21574        return;
21575      }
21576
21577      element._store.validated = true;
21578      var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
21579
21580      if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
21581        return;
21582      }
21583
21584      ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a
21585      // property, it may be the creator of the child that's responsible for
21586      // assigning it a key.
21587
21588      var childOwner = '';
21589
21590      if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
21591        // Give the component that originally created this child.
21592        childOwner = " It was passed a child from " + getComponentName(element._owner.type) + ".";
21593      }
21594
21595      setCurrentlyValidatingElement(element);
21596      {
21597        error('Each child in a list should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.', currentComponentErrorInfo, childOwner);
21598      }
21599      setCurrentlyValidatingElement(null);
21600    }
21601    /**
21602     * Ensure that every element either is passed in a static location, in an
21603     * array with an explicit keys property defined, or in an object literal
21604     * with valid key property.
21605     *
21606     * @internal
21607     * @param {ReactNode} node Statically passed child of any type.
21608     * @param {*} parentType node's parent's type.
21609     */
21610
21611
21612    function validateChildKeys(node, parentType) {
21613      if (typeof node !== 'object') {
21614        return;
21615      }
21616
21617      if (Array.isArray(node)) {
21618        for (var i = 0; i < node.length; i++) {
21619          var child = node[i];
21620
21621          if (isValidElement(child)) {
21622            validateExplicitKey(child, parentType);
21623          }
21624        }
21625      } else if (isValidElement(node)) {
21626        // This element was passed in a valid location.
21627        if (node._store) {
21628          node._store.validated = true;
21629        }
21630      } else if (node) {
21631        var iteratorFn = getIteratorFn(node);
21632
21633        if (typeof iteratorFn === 'function') {
21634          // Entry iterators used to provide implicit keys,
21635          // but now we print a separate warning for them later.
21636          if (iteratorFn !== node.entries) {
21637            var iterator = iteratorFn.call(node);
21638            var step;
21639
21640            while (!(step = iterator.next()).done) {
21641              if (isValidElement(step.value)) {
21642                validateExplicitKey(step.value, parentType);
21643              }
21644            }
21645          }
21646        }
21647      }
21648    }
21649    /**
21650     * Given an element, validate that its props follow the propTypes definition,
21651     * provided by the type.
21652     *
21653     * @param {ReactElement} element
21654     */
21655
21656
21657    function validatePropTypes(element) {
21658      {
21659        var type = element.type;
21660
21661        if (type === null || type === undefined || typeof type === 'string') {
21662          return;
21663        }
21664
21665        var name = getComponentName(type);
21666        var propTypes;
21667
21668        if (typeof type === 'function') {
21669          propTypes = type.propTypes;
21670        } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
21671        // Inner props are checked in the reconciler.
21672        type.$$typeof === REACT_MEMO_TYPE)) {
21673          propTypes = type.propTypes;
21674        } else {
21675          return;
21676        }
21677
21678        if (propTypes) {
21679          setCurrentlyValidatingElement(element);
21680          checkPropTypes(propTypes, element.props, 'prop', name, ReactDebugCurrentFrame.getStackAddendum);
21681          setCurrentlyValidatingElement(null);
21682        } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
21683          propTypesMisspellWarningShown = true;
21684          error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown');
21685        }
21686
21687        if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {
21688          error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');
21689        }
21690      }
21691    }
21692    /**
21693     * Given a fragment, validate that it can only be provided with fragment props
21694     * @param {ReactElement} fragment
21695     */
21696
21697
21698    function validateFragmentProps(fragment) {
21699      {
21700        setCurrentlyValidatingElement(fragment);
21701        var keys = Object.keys(fragment.props);
21702
21703        for (var i = 0; i < keys.length; i++) {
21704          var key = keys[i];
21705
21706          if (key !== 'children' && key !== 'key') {
21707            error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
21708            break;
21709          }
21710        }
21711
21712        if (fragment.ref !== null) {
21713          error('Invalid attribute `ref` supplied to `React.Fragment`.');
21714        }
21715
21716        setCurrentlyValidatingElement(null);
21717      }
21718    }
21719
21720    function createElementWithValidation(type, props, children) {
21721      var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to
21722      // succeed and there will likely be errors in render.
21723
21724      if (!validType) {
21725        var info = '';
21726
21727        if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
21728          info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports.";
21729        }
21730
21731        var sourceInfo = getSourceInfoErrorAddendumForProps(props);
21732
21733        if (sourceInfo) {
21734          info += sourceInfo;
21735        } else {
21736          info += getDeclarationErrorAddendum();
21737        }
21738
21739        var typeString;
21740
21741        if (type === null) {
21742          typeString = 'null';
21743        } else if (Array.isArray(type)) {
21744          typeString = 'array';
21745        } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
21746          typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />";
21747          info = ' Did you accidentally export a JSX literal instead of a component?';
21748        } else {
21749          typeString = typeof type;
21750        }
21751
21752        {
21753          error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);
21754        }
21755      }
21756
21757      var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.
21758      // TODO: Drop this when these are no longer allowed as the type argument.
21759
21760      if (element == null) {
21761        return element;
21762      } // Skip key warning if the type isn't valid since our key validation logic
21763      // doesn't expect a non-string/function type and can throw confusing errors.
21764      // We don't want exception behavior to differ between dev and prod.
21765      // (Rendering will throw with a helpful message and as soon as the type is
21766      // fixed, the key warnings will appear.)
21767
21768
21769      if (validType) {
21770        for (var i = 2; i < arguments.length; i++) {
21771          validateChildKeys(arguments[i], type);
21772        }
21773      }
21774
21775      if (type === REACT_FRAGMENT_TYPE) {
21776        validateFragmentProps(element);
21777      } else {
21778        validatePropTypes(element);
21779      }
21780
21781      return element;
21782    }
21783
21784    var didWarnAboutDeprecatedCreateFactory = false;
21785
21786    function createFactoryWithValidation(type) {
21787      var validatedFactory = createElementWithValidation.bind(null, type);
21788      validatedFactory.type = type;
21789      {
21790        if (!didWarnAboutDeprecatedCreateFactory) {
21791          didWarnAboutDeprecatedCreateFactory = true;
21792          warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');
21793        } // Legacy hook: remove it
21794
21795
21796        Object.defineProperty(validatedFactory, 'type', {
21797          enumerable: false,
21798          get: function () {
21799            warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');
21800            Object.defineProperty(this, 'type', {
21801              value: type
21802            });
21803            return type;
21804          }
21805        });
21806      }
21807      return validatedFactory;
21808    }
21809
21810    function cloneElementWithValidation(element, props, children) {
21811      var newElement = cloneElement.apply(this, arguments);
21812
21813      for (var i = 2; i < arguments.length; i++) {
21814        validateChildKeys(arguments[i], newElement.type);
21815      }
21816
21817      validatePropTypes(newElement);
21818      return newElement;
21819    }
21820
21821    {
21822      try {
21823        var frozenObject = Object.freeze({});
21824        var testMap = new Map([[frozenObject, null]]);
21825        var testSet = new Set([frozenObject]); // This is necessary for Rollup to not consider these unused.
21826        // https://github.com/rollup/rollup/issues/1771
21827        // TODO: we can remove these if Rollup fixes the bug.
21828
21829        testMap.set(0, 0);
21830        testSet.add(0);
21831      } catch (e) {}
21832    }
21833    var createElement$1 = createElementWithValidation;
21834    var cloneElement$1 = cloneElementWithValidation;
21835    var createFactory = createFactoryWithValidation;
21836    var Children = {
21837      map: mapChildren,
21838      forEach: forEachChildren,
21839      count: countChildren,
21840      toArray: toArray,
21841      only: onlyChild
21842    };
21843    exports.Children = Children;
21844    exports.Component = Component;
21845    exports.Fragment = REACT_FRAGMENT_TYPE;
21846    exports.Profiler = REACT_PROFILER_TYPE;
21847    exports.PureComponent = PureComponent;
21848    exports.StrictMode = REACT_STRICT_MODE_TYPE;
21849    exports.Suspense = REACT_SUSPENSE_TYPE;
21850    exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;
21851    exports.cloneElement = cloneElement$1;
21852    exports.createContext = createContext;
21853    exports.createElement = createElement$1;
21854    exports.createFactory = createFactory;
21855    exports.createRef = createRef;
21856    exports.forwardRef = forwardRef;
21857    exports.isValidElement = isValidElement;
21858    exports.lazy = lazy;
21859    exports.memo = memo;
21860    exports.useCallback = useCallback;
21861    exports.useContext = useContext;
21862    exports.useDebugValue = useDebugValue;
21863    exports.useEffect = useEffect;
21864    exports.useImperativeHandle = useImperativeHandle;
21865    exports.useLayoutEffect = useLayoutEffect;
21866    exports.useMemo = useMemo;
21867    exports.useReducer = useReducer;
21868    exports.useRef = useRef;
21869    exports.useState = useState;
21870    exports.version = ReactVersion;
21871  })();
21872}
21873
21874/***/ }),
21875
vendor: 429 bytes, lines 21876-21891
21876/***/ "./node_modules/react/index.js":
21877/*!*************************************!*\
21878  !*** ./node_modules/react/index.js ***!
21879  \*************************************/
21880/*! no static exports found */
21881/***/ (function(module, exports, __webpack_require__) {
21882
21883"use strict";
21884
21885
21886if (false) {} else {
21887  module.exports = __webpack_require__(/*! ./cjs/react.development.js */ "./node_modules/react/cjs/react.development.js");
21888}
21889
21890/***/ }),
21891
vendor: 2,230 bytes, lines 21892-21968
21892/***/ "./node_modules/resolve-pathname/esm/resolve-pathname.js":
21893/*!***************************************************************!*\
21894  !*** ./node_modules/resolve-pathname/esm/resolve-pathname.js ***!
21895  \***************************************************************/
21896/*! exports provided: default */
21897/***/ (function(module, __webpack_exports__, __webpack_require__) {
21898
21899"use strict";
21900__webpack_require__.r(__webpack_exports__);
21901function isAbsolute(pathname) {
21902  return pathname.charAt(0) === '/';
21903} // About 1.5x faster than the two-arg version of Array#splice()
21904
21905
21906function spliceOne(list, index) {
21907  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {
21908    list[i] = list[k];
21909  }
21910
21911  list.pop();
21912} // This implementation is based heavily on node's url.parse
21913
21914
21915function resolvePathname(to, from) {
21916  if (from === undefined) from = '';
21917  var toParts = to && to.split('/') || [];
21918  var fromParts = from && from.split('/') || [];
21919  var isToAbs = to && isAbsolute(to);
21920  var isFromAbs = from && isAbsolute(from);
21921  var mustEndAbs = isToAbs || isFromAbs;
21922
21923  if (to && isAbsolute(to)) {
21924    // to is absolute
21925    fromParts = toParts;
21926  } else if (toParts.length) {
21927    // to is relative, drop the filename
21928    fromParts.pop();
21929    fromParts = fromParts.concat(toParts);
21930  }
21931
21932  if (!fromParts.length) return '/';
21933  var hasTrailingSlash;
21934
21935  if (fromParts.length) {
21936    var last = fromParts[fromParts.length - 1];
21937    hasTrailingSlash = last === '.' || last === '..' || last === '';
21938  } else {
21939    hasTrailingSlash = false;
21940  }
21941
21942  var up = 0;
21943
21944  for (var i = fromParts.length; i >= 0; i--) {
21945    var part = fromParts[i];
21946
21947    if (part === '.') {
21948      spliceOne(fromParts, i);
21949    } else if (part === '..') {
21950      spliceOne(fromParts, i);
21951      up++;
21952    } else if (up) {
21953      spliceOne(fromParts, i);
21954      up--;
21955    }
21956  }
21957
21958  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');
21959  if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');
21960  var result = fromParts.join('/');
21961  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';
21962  return result;
21963}
21964
21965/* harmony default export */ __webpack_exports__["default"] = (resolvePathname);
21966
21967/***/ }),
21968
vendor: 10,509 bytes, lines 21969-22326
21969/***/ "./node_modules/scheduler/cjs/scheduler-tracing.development.js":
21970/*!*********************************************************************!*\
21971  !*** ./node_modules/scheduler/cjs/scheduler-tracing.development.js ***!
21972  \*********************************************************************/
21973/*! no static exports found */
21974/***/ (function(module, exports, __webpack_require__) {
21975
21976"use strict";
21977/** @license React v0.19.1
21978 * scheduler-tracing.development.js
21979 *
21980 * Copyright (c) Facebook, Inc. and its affiliates.
21981 *
21982 * This source code is licensed under the MIT license found in the
21983 * LICENSE file in the root directory of this source tree.
21984 */
21985
21986
21987if (true) {
21988  (function () {
21989    'use strict';
21990
21991    var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs.
21992
21993    var interactionIDCounter = 0;
21994    var threadIDCounter = 0; // Set of currently traced interactions.
21995    // Interactions "stack"–
21996    // Meaning that newly traced interactions are appended to the previously active set.
21997    // When an interaction goes out of scope, the previous set (if any) is restored.
21998
21999    exports.__interactionsRef = null; // Listener(s) to notify when interactions begin and end.
22000
22001    exports.__subscriberRef = null;
22002    {
22003      exports.__interactionsRef = {
22004        current: new Set()
22005      };
22006      exports.__subscriberRef = {
22007        current: null
22008      };
22009    }
22010
22011    function unstable_clear(callback) {
22012      var prevInteractions = exports.__interactionsRef.current;
22013      exports.__interactionsRef.current = new Set();
22014
22015      try {
22016        return callback();
22017      } finally {
22018        exports.__interactionsRef.current = prevInteractions;
22019      }
22020    }
22021
22022    function unstable_getCurrent() {
22023      {
22024        return exports.__interactionsRef.current;
22025      }
22026    }
22027
22028    function unstable_getThreadID() {
22029      return ++threadIDCounter;
22030    }
22031
22032    function unstable_trace(name, timestamp, callback) {
22033      var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID;
22034      var interaction = {
22035        __count: 1,
22036        id: interactionIDCounter++,
22037        name: name,
22038        timestamp: timestamp
22039      };
22040      var prevInteractions = exports.__interactionsRef.current; // Traced interactions should stack/accumulate.
22041      // To do that, clone the current interactions.
22042      // The previous set will be restored upon completion.
22043
22044      var interactions = new Set(prevInteractions);
22045      interactions.add(interaction);
22046      exports.__interactionsRef.current = interactions;
22047      var subscriber = exports.__subscriberRef.current;
22048      var returnValue;
22049
22050      try {
22051        if (subscriber !== null) {
22052          subscriber.onInteractionTraced(interaction);
22053        }
22054      } finally {
22055        try {
22056          if (subscriber !== null) {
22057            subscriber.onWorkStarted(interactions, threadID);
22058          }
22059        } finally {
22060          try {
22061            returnValue = callback();
22062          } finally {
22063            exports.__interactionsRef.current = prevInteractions;
22064
22065            try {
22066              if (subscriber !== null) {
22067                subscriber.onWorkStopped(interactions, threadID);
22068              }
22069            } finally {
22070              interaction.__count--; // If no async work was scheduled for this interaction,
22071              // Notify subscribers that it's completed.
22072
22073              if (subscriber !== null && interaction.__count === 0) {
22074                subscriber.onInteractionScheduledWorkCompleted(interaction);
22075              }
22076            }
22077          }
22078        }
22079      }
22080
22081      return returnValue;
22082    }
22083
22084    function unstable_wrap(callback) {
22085      var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID;
22086      var wrappedInteractions = exports.__interactionsRef.current;
22087      var subscriber = exports.__subscriberRef.current;
22088
22089      if (subscriber !== null) {
22090        subscriber.onWorkScheduled(wrappedInteractions, threadID);
22091      } // Update the pending async work count for the current interactions.
22092      // Update after calling subscribers in case of error.
22093
22094
22095      wrappedInteractions.forEach(function (interaction) {
22096        interaction.__count++;
22097      });
22098      var hasRun = false;
22099
22100      function wrapped() {
22101        var prevInteractions = exports.__interactionsRef.current;
22102        exports.__interactionsRef.current = wrappedInteractions;
22103        subscriber = exports.__subscriberRef.current;
22104
22105        try {
22106          var returnValue;
22107
22108          try {
22109            if (subscriber !== null) {
22110              subscriber.onWorkStarted(wrappedInteractions, threadID);
22111            }
22112          } finally {
22113            try {
22114              returnValue = callback.apply(undefined, arguments);
22115            } finally {
22116              exports.__interactionsRef.current = prevInteractions;
22117
22118              if (subscriber !== null) {
22119                subscriber.onWorkStopped(wrappedInteractions, threadID);
22120              }
22121            }
22122          }
22123
22124          return returnValue;
22125        } finally {
22126          if (!hasRun) {
22127            // We only expect a wrapped function to be executed once,
22128            // But in the event that it's executed more than once–
22129            // Only decrement the outstanding interaction counts once.
22130            hasRun = true; // Update pending async counts for all wrapped interactions.
22131            // If this was the last scheduled async work for any of them,
22132            // Mark them as completed.
22133
22134            wrappedInteractions.forEach(function (interaction) {
22135              interaction.__count--;
22136
22137              if (subscriber !== null && interaction.__count === 0) {
22138                subscriber.onInteractionScheduledWorkCompleted(interaction);
22139              }
22140            });
22141          }
22142        }
22143      }
22144
22145      wrapped.cancel = function cancel() {
22146        subscriber = exports.__subscriberRef.current;
22147
22148        try {
22149          if (subscriber !== null) {
22150            subscriber.onWorkCanceled(wrappedInteractions, threadID);
22151          }
22152        } finally {
22153          // Update pending async counts for all wrapped interactions.
22154          // If this was the last scheduled async work for any of them,
22155          // Mark them as completed.
22156          wrappedInteractions.forEach(function (interaction) {
22157            interaction.__count--;
22158
22159            if (subscriber && interaction.__count === 0) {
22160              subscriber.onInteractionScheduledWorkCompleted(interaction);
22161            }
22162          });
22163        }
22164      };
22165
22166      return wrapped;
22167    }
22168
22169    var subscribers = null;
22170    {
22171      subscribers = new Set();
22172    }
22173
22174    function unstable_subscribe(subscriber) {
22175      {
22176        subscribers.add(subscriber);
22177
22178        if (subscribers.size === 1) {
22179          exports.__subscriberRef.current = {
22180            onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted,
22181            onInteractionTraced: onInteractionTraced,
22182            onWorkCanceled: onWorkCanceled,
22183            onWorkScheduled: onWorkScheduled,
22184            onWorkStarted: onWorkStarted,
22185            onWorkStopped: onWorkStopped
22186          };
22187        }
22188      }
22189    }
22190
22191    function unstable_unsubscribe(subscriber) {
22192      {
22193        subscribers.delete(subscriber);
22194
22195        if (subscribers.size === 0) {
22196          exports.__subscriberRef.current = null;
22197        }
22198      }
22199    }
22200
22201    function onInteractionTraced(interaction) {
22202      var didCatchError = false;
22203      var caughtError = null;
22204      subscribers.forEach(function (subscriber) {
22205        try {
22206          subscriber.onInteractionTraced(interaction);
22207        } catch (error) {
22208          if (!didCatchError) {
22209            didCatchError = true;
22210            caughtError = error;
22211          }
22212        }
22213      });
22214
22215      if (didCatchError) {
22216        throw caughtError;
22217      }
22218    }
22219
22220    function onInteractionScheduledWorkCompleted(interaction) {
22221      var didCatchError = false;
22222      var caughtError = null;
22223      subscribers.forEach(function (subscriber) {
22224        try {
22225          subscriber.onInteractionScheduledWorkCompleted(interaction);
22226        } catch (error) {
22227          if (!didCatchError) {
22228            didCatchError = true;
22229            caughtError = error;
22230          }
22231        }
22232      });
22233
22234      if (didCatchError) {
22235        throw caughtError;
22236      }
22237    }
22238
22239    function onWorkScheduled(interactions, threadID) {
22240      var didCatchError = false;
22241      var caughtError = null;
22242      subscribers.forEach(function (subscriber) {
22243        try {
22244          subscriber.onWorkScheduled(interactions, threadID);
22245        } catch (error) {
22246          if (!didCatchError) {
22247            didCatchError = true;
22248            caughtError = error;
22249          }
22250        }
22251      });
22252
22253      if (didCatchError) {
22254        throw caughtError;
22255      }
22256    }
22257
22258    function onWorkStarted(interactions, threadID) {
22259      var didCatchError = false;
22260      var caughtError = null;
22261      subscribers.forEach(function (subscriber) {
22262        try {
22263          subscriber.onWorkStarted(interactions, threadID);
22264        } catch (error) {
22265          if (!didCatchError) {
22266            didCatchError = true;
22267            caughtError = error;
22268          }
22269        }
22270      });
22271
22272      if (didCatchError) {
22273        throw caughtError;
22274      }
22275    }
22276
22277    function onWorkStopped(interactions, threadID) {
22278      var didCatchError = false;
22279      var caughtError = null;
22280      subscribers.forEach(function (subscriber) {
22281        try {
22282          subscriber.onWorkStopped(interactions, threadID);
22283        } catch (error) {
22284          if (!didCatchError) {
22285            didCatchError = true;
22286            caughtError = error;
22287          }
22288        }
22289      });
22290
22291      if (didCatchError) {
22292        throw caughtError;
22293      }
22294    }
22295
22296    function onWorkCanceled(interactions, threadID) {
22297      var didCatchError = false;
22298      var caughtError = null;
22299      subscribers.forEach(function (subscriber) {
22300        try {
22301          subscriber.onWorkCanceled(interactions, threadID);
22302        } catch (error) {
22303          if (!didCatchError) {
22304            didCatchError = true;
22305            caughtError = error;
22306          }
22307        }
22308      });
22309
22310      if (didCatchError) {
22311        throw caughtError;
22312      }
22313    }
22314
22315    exports.unstable_clear = unstable_clear;
22316    exports.unstable_getCurrent = unstable_getCurrent;
22317    exports.unstable_getThreadID = unstable_getThreadID;
22318    exports.unstable_subscribe = unstable_subscribe;
22319    exports.unstable_trace = unstable_trace;
22320    exports.unstable_unsubscribe = unstable_unsubscribe;
22321    exports.unstable_wrap = unstable_wrap;
22322  })();
22323}
22324
22325/***/ }),
22326
vendor: 26,864 bytes, lines 22327-23191
22327/***/ "./node_modules/scheduler/cjs/scheduler.development.js":
22328/*!*************************************************************!*\
22329  !*** ./node_modules/scheduler/cjs/scheduler.development.js ***!
22330  \*************************************************************/
22331/*! no static exports found */
22332/***/ (function(module, exports, __webpack_require__) {
22333
22334"use strict";
22335/** @license React v0.19.1
22336 * scheduler.development.js
22337 *
22338 * Copyright (c) Facebook, Inc. and its affiliates.
22339 *
22340 * This source code is licensed under the MIT license found in the
22341 * LICENSE file in the root directory of this source tree.
22342 */
22343
22344
22345if (true) {
22346  (function () {
22347    'use strict';
22348
22349    var enableSchedulerDebugging = false;
22350    var enableProfiling = true;
22351    var requestHostCallback;
22352    var requestHostTimeout;
22353    var cancelHostTimeout;
22354    var shouldYieldToHost;
22355    var requestPaint;
22356
22357    if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive
22358    // implementation using setTimeout.
22359    typeof window === 'undefined' || // Check if MessageChannel is supported, too.
22360    typeof MessageChannel !== 'function') {
22361      // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore,
22362      // fallback to a naive implementation.
22363      var _callback = null;
22364      var _timeoutID = null;
22365
22366      var _flushCallback = function () {
22367        if (_callback !== null) {
22368          try {
22369            var currentTime = exports.unstable_now();
22370            var hasRemainingTime = true;
22371
22372            _callback(hasRemainingTime, currentTime);
22373
22374            _callback = null;
22375          } catch (e) {
22376            setTimeout(_flushCallback, 0);
22377            throw e;
22378          }
22379        }
22380      };
22381
22382      var initialTime = Date.now();
22383
22384      exports.unstable_now = function () {
22385        return Date.now() - initialTime;
22386      };
22387
22388      requestHostCallback = function (cb) {
22389        if (_callback !== null) {
22390          // Protect against re-entrancy.
22391          setTimeout(requestHostCallback, 0, cb);
22392        } else {
22393          _callback = cb;
22394          setTimeout(_flushCallback, 0);
22395        }
22396      };
22397
22398      requestHostTimeout = function (cb, ms) {
22399        _timeoutID = setTimeout(cb, ms);
22400      };
22401
22402      cancelHostTimeout = function () {
22403        clearTimeout(_timeoutID);
22404      };
22405
22406      shouldYieldToHost = function () {
22407        return false;
22408      };
22409
22410      requestPaint = exports.unstable_forceFrameRate = function () {};
22411    } else {
22412      // Capture local references to native APIs, in case a polyfill overrides them.
22413      var performance = window.performance;
22414      var _Date = window.Date;
22415      var _setTimeout = window.setTimeout;
22416      var _clearTimeout = window.clearTimeout;
22417
22418      if (typeof console !== 'undefined') {
22419        // TODO: Scheduler no longer requires these methods to be polyfilled. But
22420        // maybe we want to continue warning if they don't exist, to preserve the
22421        // option to rely on it in the future?
22422        var requestAnimationFrame = window.requestAnimationFrame;
22423        var cancelAnimationFrame = window.cancelAnimationFrame; // TODO: Remove fb.me link
22424
22425        if (typeof requestAnimationFrame !== 'function') {
22426          // Using console['error'] to evade Babel and ESLint
22427          console['error']("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');
22428        }
22429
22430        if (typeof cancelAnimationFrame !== 'function') {
22431          // Using console['error'] to evade Babel and ESLint
22432          console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');
22433        }
22434      }
22435
22436      if (typeof performance === 'object' && typeof performance.now === 'function') {
22437        exports.unstable_now = function () {
22438          return performance.now();
22439        };
22440      } else {
22441        var _initialTime = _Date.now();
22442
22443        exports.unstable_now = function () {
22444          return _Date.now() - _initialTime;
22445        };
22446      }
22447
22448      var isMessageLoopRunning = false;
22449      var scheduledHostCallback = null;
22450      var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main
22451      // thread, like user events. By default, it yields multiple times per frame.
22452      // It does not attempt to align with frame boundaries, since most tasks don't
22453      // need to be frame aligned; for those that do, use requestAnimationFrame.
22454
22455      var yieldInterval = 5;
22456      var deadline = 0; // TODO: Make this configurable
22457
22458      {
22459        // `isInputPending` is not available. Since we have no way of knowing if
22460        // there's pending input, always yield at the end of the frame.
22461        shouldYieldToHost = function () {
22462          return exports.unstable_now() >= deadline;
22463        }; // Since we yield every frame regardless, `requestPaint` has no effect.
22464
22465
22466        requestPaint = function () {};
22467      }
22468
22469      exports.unstable_forceFrameRate = function (fps) {
22470        if (fps < 0 || fps > 125) {
22471          // Using console['error'] to evade Babel and ESLint
22472          console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing framerates higher than 125 fps is not unsupported');
22473          return;
22474        }
22475
22476        if (fps > 0) {
22477          yieldInterval = Math.floor(1000 / fps);
22478        } else {
22479          // reset the framerate
22480          yieldInterval = 5;
22481        }
22482      };
22483
22484      var performWorkUntilDeadline = function () {
22485        if (scheduledHostCallback !== null) {
22486          var currentTime = exports.unstable_now(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync
22487          // cycle. This means there's always time remaining at the beginning of
22488          // the message event.
22489
22490          deadline = currentTime + yieldInterval;
22491          var hasTimeRemaining = true;
22492
22493          try {
22494            var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);
22495
22496            if (!hasMoreWork) {
22497              isMessageLoopRunning = false;
22498              scheduledHostCallback = null;
22499            } else {
22500              // If there's more work, schedule the next message event at the end
22501              // of the preceding one.
22502              port.postMessage(null);
22503            }
22504          } catch (error) {
22505            // If a scheduler task throws, exit the current browser task so the
22506            // error can be observed.
22507            port.postMessage(null);
22508            throw error;
22509          }
22510        } else {
22511          isMessageLoopRunning = false;
22512        } // Yielding to the browser will give it a chance to paint, so we can
22513
22514      };
22515
22516      var channel = new MessageChannel();
22517      var port = channel.port2;
22518      channel.port1.onmessage = performWorkUntilDeadline;
22519
22520      requestHostCallback = function (callback) {
22521        scheduledHostCallback = callback;
22522
22523        if (!isMessageLoopRunning) {
22524          isMessageLoopRunning = true;
22525          port.postMessage(null);
22526        }
22527      };
22528
22529      requestHostTimeout = function (callback, ms) {
22530        taskTimeoutID = _setTimeout(function () {
22531          callback(exports.unstable_now());
22532        }, ms);
22533      };
22534
22535      cancelHostTimeout = function () {
22536        _clearTimeout(taskTimeoutID);
22537
22538        taskTimeoutID = -1;
22539      };
22540    }
22541
22542    function push(heap, node) {
22543      var index = heap.length;
22544      heap.push(node);
22545      siftUp(heap, node, index);
22546    }
22547
22548    function peek(heap) {
22549      var first = heap[0];
22550      return first === undefined ? null : first;
22551    }
22552
22553    function pop(heap) {
22554      var first = heap[0];
22555
22556      if (first !== undefined) {
22557        var last = heap.pop();
22558
22559        if (last !== first) {
22560          heap[0] = last;
22561          siftDown(heap, last, 0);
22562        }
22563
22564        return first;
22565      } else {
22566        return null;
22567      }
22568    }
22569
22570    function siftUp(heap, node, i) {
22571      var index = i;
22572
22573      while (true) {
22574        var parentIndex = index - 1 >>> 1;
22575        var parent = heap[parentIndex];
22576
22577        if (parent !== undefined && compare(parent, node) > 0) {
22578          // The parent is larger. Swap positions.
22579          heap[parentIndex] = node;
22580          heap[index] = parent;
22581          index = parentIndex;
22582        } else {
22583          // The parent is smaller. Exit.
22584          return;
22585        }
22586      }
22587    }
22588
22589    function siftDown(heap, node, i) {
22590      var index = i;
22591      var length = heap.length;
22592
22593      while (index < length) {
22594        var leftIndex = (index + 1) * 2 - 1;
22595        var left = heap[leftIndex];
22596        var rightIndex = leftIndex + 1;
22597        var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.
22598
22599        if (left !== undefined && compare(left, node) < 0) {
22600          if (right !== undefined && compare(right, left) < 0) {
22601            heap[index] = right;
22602            heap[rightIndex] = node;
22603            index = rightIndex;
22604          } else {
22605            heap[index] = left;
22606            heap[leftIndex] = node;
22607            index = leftIndex;
22608          }
22609        } else if (right !== undefined && compare(right, node) < 0) {
22610          heap[index] = right;
22611          heap[rightIndex] = node;
22612          index = rightIndex;
22613        } else {
22614          // Neither child is smaller. Exit.
22615          return;
22616        }
22617      }
22618    }
22619
22620    function compare(a, b) {
22621      // Compare sort index first, then task id.
22622      var diff = a.sortIndex - b.sortIndex;
22623      return diff !== 0 ? diff : a.id - b.id;
22624    } // TODO: Use symbols?
22625
22626
22627    var NoPriority = 0;
22628    var ImmediatePriority = 1;
22629    var UserBlockingPriority = 2;
22630    var NormalPriority = 3;
22631    var LowPriority = 4;
22632    var IdlePriority = 5;
22633    var runIdCounter = 0;
22634    var mainThreadIdCounter = 0;
22635    var profilingStateSize = 4;
22636    var sharedProfilingBuffer = // $FlowFixMe Flow doesn't know about SharedArrayBuffer
22637    typeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer
22638    typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9
22639    ;
22640    var profilingState = sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks
22641
22642    var PRIORITY = 0;
22643    var CURRENT_TASK_ID = 1;
22644    var CURRENT_RUN_ID = 2;
22645    var QUEUE_SIZE = 3;
22646    {
22647      profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue
22648      // array might include canceled tasks.
22649
22650      profilingState[QUEUE_SIZE] = 0;
22651      profilingState[CURRENT_TASK_ID] = 0;
22652    } // Bytes per element is 4
22653
22654    var INITIAL_EVENT_LOG_SIZE = 131072;
22655    var MAX_EVENT_LOG_SIZE = 524288; // Equivalent to 2 megabytes
22656
22657    var eventLogSize = 0;
22658    var eventLogBuffer = null;
22659    var eventLog = null;
22660    var eventLogIndex = 0;
22661    var TaskStartEvent = 1;
22662    var TaskCompleteEvent = 2;
22663    var TaskErrorEvent = 3;
22664    var TaskCancelEvent = 4;
22665    var TaskRunEvent = 5;
22666    var TaskYieldEvent = 6;
22667    var SchedulerSuspendEvent = 7;
22668    var SchedulerResumeEvent = 8;
22669
22670    function logEvent(entries) {
22671      if (eventLog !== null) {
22672        var offset = eventLogIndex;
22673        eventLogIndex += entries.length;
22674
22675        if (eventLogIndex + 1 > eventLogSize) {
22676          eventLogSize *= 2;
22677
22678          if (eventLogSize > MAX_EVENT_LOG_SIZE) {
22679            // Using console['error'] to evade Babel and ESLint
22680            console['error']("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.');
22681            stopLoggingProfilingEvents();
22682            return;
22683          }
22684
22685          var newEventLog = new Int32Array(eventLogSize * 4);
22686          newEventLog.set(eventLog);
22687          eventLogBuffer = newEventLog.buffer;
22688          eventLog = newEventLog;
22689        }
22690
22691        eventLog.set(entries, offset);
22692      }
22693    }
22694
22695    function startLoggingProfilingEvents() {
22696      eventLogSize = INITIAL_EVENT_LOG_SIZE;
22697      eventLogBuffer = new ArrayBuffer(eventLogSize * 4);
22698      eventLog = new Int32Array(eventLogBuffer);
22699      eventLogIndex = 0;
22700    }
22701
22702    function stopLoggingProfilingEvents() {
22703      var buffer = eventLogBuffer;
22704      eventLogSize = 0;
22705      eventLogBuffer = null;
22706      eventLog = null;
22707      eventLogIndex = 0;
22708      return buffer;
22709    }
22710
22711    function markTaskStart(task, ms) {
22712      {
22713        profilingState[QUEUE_SIZE]++;
22714
22715        if (eventLog !== null) {
22716          // performance.now returns a float, representing milliseconds. When the
22717          // event is logged, it's coerced to an int. Convert to microseconds to
22718          // maintain extra degrees of precision.
22719          logEvent([TaskStartEvent, ms * 1000, task.id, task.priorityLevel]);
22720        }
22721      }
22722    }
22723
22724    function markTaskCompleted(task, ms) {
22725      {
22726        profilingState[PRIORITY] = NoPriority;
22727        profilingState[CURRENT_TASK_ID] = 0;
22728        profilingState[QUEUE_SIZE]--;
22729
22730        if (eventLog !== null) {
22731          logEvent([TaskCompleteEvent, ms * 1000, task.id]);
22732        }
22733      }
22734    }
22735
22736    function markTaskCanceled(task, ms) {
22737      {
22738        profilingState[QUEUE_SIZE]--;
22739
22740        if (eventLog !== null) {
22741          logEvent([TaskCancelEvent, ms * 1000, task.id]);
22742        }
22743      }
22744    }
22745
22746    function markTaskErrored(task, ms) {
22747      {
22748        profilingState[PRIORITY] = NoPriority;
22749        profilingState[CURRENT_TASK_ID] = 0;
22750        profilingState[QUEUE_SIZE]--;
22751
22752        if (eventLog !== null) {
22753          logEvent([TaskErrorEvent, ms * 1000, task.id]);
22754        }
22755      }
22756    }
22757
22758    function markTaskRun(task, ms) {
22759      {
22760        runIdCounter++;
22761        profilingState[PRIORITY] = task.priorityLevel;
22762        profilingState[CURRENT_TASK_ID] = task.id;
22763        profilingState[CURRENT_RUN_ID] = runIdCounter;
22764
22765        if (eventLog !== null) {
22766          logEvent([TaskRunEvent, ms * 1000, task.id, runIdCounter]);
22767        }
22768      }
22769    }
22770
22771    function markTaskYield(task, ms) {
22772      {
22773        profilingState[PRIORITY] = NoPriority;
22774        profilingState[CURRENT_TASK_ID] = 0;
22775        profilingState[CURRENT_RUN_ID] = 0;
22776
22777        if (eventLog !== null) {
22778          logEvent([TaskYieldEvent, ms * 1000, task.id, runIdCounter]);
22779        }
22780      }
22781    }
22782
22783    function markSchedulerSuspended(ms) {
22784      {
22785        mainThreadIdCounter++;
22786
22787        if (eventLog !== null) {
22788          logEvent([SchedulerSuspendEvent, ms * 1000, mainThreadIdCounter]);
22789        }
22790      }
22791    }
22792
22793    function markSchedulerUnsuspended(ms) {
22794      {
22795        if (eventLog !== null) {
22796          logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]);
22797        }
22798      }
22799    }
22800    /* eslint-disable no-var */
22801    // Math.pow(2, 30) - 1
22802    // 0b111111111111111111111111111111
22803
22804
22805    var maxSigned31BitInt = 1073741823; // Times out immediately
22806
22807    var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out
22808
22809    var USER_BLOCKING_PRIORITY = 250;
22810    var NORMAL_PRIORITY_TIMEOUT = 5000;
22811    var LOW_PRIORITY_TIMEOUT = 10000; // Never times out
22812
22813    var IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored on a min heap
22814
22815    var taskQueue = [];
22816    var timerQueue = []; // Incrementing id counter. Used to maintain insertion order.
22817
22818    var taskIdCounter = 1; // Pausing the scheduler is useful for debugging.
22819
22820    var currentTask = null;
22821    var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy.
22822
22823    var isPerformingWork = false;
22824    var isHostCallbackScheduled = false;
22825    var isHostTimeoutScheduled = false;
22826
22827    function advanceTimers(currentTime) {
22828      // Check for tasks that are no longer delayed and add them to the queue.
22829      var timer = peek(timerQueue);
22830
22831      while (timer !== null) {
22832        if (timer.callback === null) {
22833          // Timer was cancelled.
22834          pop(timerQueue);
22835        } else if (timer.startTime <= currentTime) {
22836          // Timer fired. Transfer to the task queue.
22837          pop(timerQueue);
22838          timer.sortIndex = timer.expirationTime;
22839          push(taskQueue, timer);
22840          {
22841            markTaskStart(timer, currentTime);
22842            timer.isQueued = true;
22843          }
22844        } else {
22845          // Remaining timers are pending.
22846          return;
22847        }
22848
22849        timer = peek(timerQueue);
22850      }
22851    }
22852
22853    function handleTimeout(currentTime) {
22854      isHostTimeoutScheduled = false;
22855      advanceTimers(currentTime);
22856
22857      if (!isHostCallbackScheduled) {
22858        if (peek(taskQueue) !== null) {
22859          isHostCallbackScheduled = true;
22860          requestHostCallback(flushWork);
22861        } else {
22862          var firstTimer = peek(timerQueue);
22863
22864          if (firstTimer !== null) {
22865            requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
22866          }
22867        }
22868      }
22869    }
22870
22871    function flushWork(hasTimeRemaining, initialTime) {
22872      {
22873        markSchedulerUnsuspended(initialTime);
22874      } // We'll need a host callback the next time work is scheduled.
22875
22876      isHostCallbackScheduled = false;
22877
22878      if (isHostTimeoutScheduled) {
22879        // We scheduled a timeout but it's no longer needed. Cancel it.
22880        isHostTimeoutScheduled = false;
22881        cancelHostTimeout();
22882      }
22883
22884      isPerformingWork = true;
22885      var previousPriorityLevel = currentPriorityLevel;
22886
22887      try {
22888        if (enableProfiling) {
22889          try {
22890            return workLoop(hasTimeRemaining, initialTime);
22891          } catch (error) {
22892            if (currentTask !== null) {
22893              var currentTime = exports.unstable_now();
22894              markTaskErrored(currentTask, currentTime);
22895              currentTask.isQueued = false;
22896            }
22897
22898            throw error;
22899          }
22900        } else {
22901          // No catch in prod codepath.
22902          return workLoop(hasTimeRemaining, initialTime);
22903        }
22904      } finally {
22905        currentTask = null;
22906        currentPriorityLevel = previousPriorityLevel;
22907        isPerformingWork = false;
22908        {
22909          var _currentTime = exports.unstable_now();
22910
22911          markSchedulerSuspended(_currentTime);
22912        }
22913      }
22914    }
22915
22916    function workLoop(hasTimeRemaining, initialTime) {
22917      var currentTime = initialTime;
22918      advanceTimers(currentTime);
22919      currentTask = peek(taskQueue);
22920
22921      while (currentTask !== null && !enableSchedulerDebugging) {
22922        if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {
22923          // This currentTask hasn't expired, and we've reached the deadline.
22924          break;
22925        }
22926
22927        var callback = currentTask.callback;
22928
22929        if (callback !== null) {
22930          currentTask.callback = null;
22931          currentPriorityLevel = currentTask.priorityLevel;
22932          var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;
22933          markTaskRun(currentTask, currentTime);
22934          var continuationCallback = callback(didUserCallbackTimeout);
22935          currentTime = exports.unstable_now();
22936
22937          if (typeof continuationCallback === 'function') {
22938            currentTask.callback = continuationCallback;
22939            markTaskYield(currentTask, currentTime);
22940          } else {
22941            {
22942              markTaskCompleted(currentTask, currentTime);
22943              currentTask.isQueued = false;
22944            }
22945
22946            if (currentTask === peek(taskQueue)) {
22947              pop(taskQueue);
22948            }
22949          }
22950
22951          advanceTimers(currentTime);
22952        } else {
22953          pop(taskQueue);
22954        }
22955
22956        currentTask = peek(taskQueue);
22957      } // Return whether there's additional work
22958
22959
22960      if (currentTask !== null) {
22961        return true;
22962      } else {
22963        var firstTimer = peek(timerQueue);
22964
22965        if (firstTimer !== null) {
22966          requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
22967        }
22968
22969        return false;
22970      }
22971    }
22972
22973    function unstable_runWithPriority(priorityLevel, eventHandler) {
22974      switch (priorityLevel) {
22975        case ImmediatePriority:
22976        case UserBlockingPriority:
22977        case NormalPriority:
22978        case LowPriority:
22979        case IdlePriority:
22980          break;
22981
22982        default:
22983          priorityLevel = NormalPriority;
22984      }
22985
22986      var previousPriorityLevel = currentPriorityLevel;
22987      currentPriorityLevel = priorityLevel;
22988
22989      try {
22990        return eventHandler();
22991      } finally {
22992        currentPriorityLevel = previousPriorityLevel;
22993      }
22994    }
22995
22996    function unstable_next(eventHandler) {
22997      var priorityLevel;
22998
22999      switch (currentPriorityLevel) {
23000        case ImmediatePriority:
23001        case UserBlockingPriority:
23002        case NormalPriority:
23003          // Shift down to normal priority
23004          priorityLevel = NormalPriority;
23005          break;
23006
23007        default:
23008          // Anything lower than normal priority should remain at the current level.
23009          priorityLevel = currentPriorityLevel;
23010          break;
23011      }
23012
23013      var previousPriorityLevel = currentPriorityLevel;
23014      currentPriorityLevel = priorityLevel;
23015
23016      try {
23017        return eventHandler();
23018      } finally {
23019        currentPriorityLevel = previousPriorityLevel;
23020      }
23021    }
23022
23023    function unstable_wrapCallback(callback) {
23024      var parentPriorityLevel = currentPriorityLevel;
23025      return function () {
23026        // This is a fork of runWithPriority, inlined for performance.
23027        var previousPriorityLevel = currentPriorityLevel;
23028        currentPriorityLevel = parentPriorityLevel;
23029
23030        try {
23031          return callback.apply(this, arguments);
23032        } finally {
23033          currentPriorityLevel = previousPriorityLevel;
23034        }
23035      };
23036    }
23037
23038    function timeoutForPriorityLevel(priorityLevel) {
23039      switch (priorityLevel) {
23040        case ImmediatePriority:
23041          return IMMEDIATE_PRIORITY_TIMEOUT;
23042
23043        case UserBlockingPriority:
23044          return USER_BLOCKING_PRIORITY;
23045
23046        case IdlePriority:
23047          return IDLE_PRIORITY;
23048
23049        case LowPriority:
23050          return LOW_PRIORITY_TIMEOUT;
23051
23052        case NormalPriority:
23053        default:
23054          return NORMAL_PRIORITY_TIMEOUT;
23055      }
23056    }
23057
23058    function unstable_scheduleCallback(priorityLevel, callback, options) {
23059      var currentTime = exports.unstable_now();
23060      var startTime;
23061      var timeout;
23062
23063      if (typeof options === 'object' && options !== null) {
23064        var delay = options.delay;
23065
23066        if (typeof delay === 'number' && delay > 0) {
23067          startTime = currentTime + delay;
23068        } else {
23069          startTime = currentTime;
23070        }
23071
23072        timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel);
23073      } else {
23074        timeout = timeoutForPriorityLevel(priorityLevel);
23075        startTime = currentTime;
23076      }
23077
23078      var expirationTime = startTime + timeout;
23079      var newTask = {
23080        id: taskIdCounter++,
23081        callback: callback,
23082        priorityLevel: priorityLevel,
23083        startTime: startTime,
23084        expirationTime: expirationTime,
23085        sortIndex: -1
23086      };
23087      {
23088        newTask.isQueued = false;
23089      }
23090
23091      if (startTime > currentTime) {
23092        // This is a delayed task.
23093        newTask.sortIndex = startTime;
23094        push(timerQueue, newTask);
23095
23096        if (peek(taskQueue) === null && newTask === peek(timerQueue)) {
23097          // All tasks are delayed, and this is the task with the earliest delay.
23098          if (isHostTimeoutScheduled) {
23099            // Cancel an existing timeout.
23100            cancelHostTimeout();
23101          } else {
23102            isHostTimeoutScheduled = true;
23103          } // Schedule a timeout.
23104
23105
23106          requestHostTimeout(handleTimeout, startTime - currentTime);
23107        }
23108      } else {
23109        newTask.sortIndex = expirationTime;
23110        push(taskQueue, newTask);
23111        {
23112          markTaskStart(newTask, currentTime);
23113          newTask.isQueued = true;
23114        } // Schedule a host callback, if needed. If we're already performing work,
23115        // wait until the next time we yield.
23116
23117        if (!isHostCallbackScheduled && !isPerformingWork) {
23118          isHostCallbackScheduled = true;
23119          requestHostCallback(flushWork);
23120        }
23121      }
23122
23123      return newTask;
23124    }
23125
23126    function unstable_pauseExecution() {}
23127
23128    function unstable_continueExecution() {
23129      if (!isHostCallbackScheduled && !isPerformingWork) {
23130        isHostCallbackScheduled = true;
23131        requestHostCallback(flushWork);
23132      }
23133    }
23134
23135    function unstable_getFirstCallbackNode() {
23136      return peek(taskQueue);
23137    }
23138
23139    function unstable_cancelCallback(task) {
23140      {
23141        if (task.isQueued) {
23142          var currentTime = exports.unstable_now();
23143          markTaskCanceled(task, currentTime);
23144          task.isQueued = false;
23145        }
23146      } // Null out the callback to indicate the task has been canceled. (Can't
23147      // remove from the queue because you can't remove arbitrary nodes from an
23148      // array based heap, only the first one.)
23149
23150      task.callback = null;
23151    }
23152
23153    function unstable_getCurrentPriorityLevel() {
23154      return currentPriorityLevel;
23155    }
23156
23157    function unstable_shouldYield() {
23158      var currentTime = exports.unstable_now();
23159      advanceTimers(currentTime);
23160      var firstTask = peek(taskQueue);
23161      return firstTask !== currentTask && currentTask !== null && firstTask !== null && firstTask.callback !== null && firstTask.startTime <= currentTime && firstTask.expirationTime < currentTask.expirationTime || shouldYieldToHost();
23162    }
23163
23164    var unstable_requestPaint = requestPaint;
23165    var unstable_Profiling = {
23166      startLoggingProfilingEvents: startLoggingProfilingEvents,
23167      stopLoggingProfilingEvents: stopLoggingProfilingEvents,
23168      sharedProfilingBuffer: sharedProfilingBuffer
23169    };
23170    exports.unstable_IdlePriority = IdlePriority;
23171    exports.unstable_ImmediatePriority = ImmediatePriority;
23172    exports.unstable_LowPriority = LowPriority;
23173    exports.unstable_NormalPriority = NormalPriority;
23174    exports.unstable_Profiling = unstable_Profiling;
23175    exports.unstable_UserBlockingPriority = UserBlockingPriority;
23176    exports.unstable_cancelCallback = unstable_cancelCallback;
23177    exports.unstable_continueExecution = unstable_continueExecution;
23178    exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;
23179    exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
23180    exports.unstable_next = unstable_next;
23181    exports.unstable_pauseExecution = unstable_pauseExecution;
23182    exports.unstable_requestPaint = unstable_requestPaint;
23183    exports.unstable_runWithPriority = unstable_runWithPriority;
23184    exports.unstable_scheduleCallback = unstable_scheduleCallback;
23185    exports.unstable_shouldYield = unstable_shouldYield;
23186    exports.unstable_wrapCallback = unstable_wrapCallback;
23187  })();
23188}
23189
23190/***/ }),
23191
vendor: 457 bytes, lines 23192-23207
23192/***/ "./node_modules/scheduler/index.js":
23193/*!*****************************************!*\
23194  !*** ./node_modules/scheduler/index.js ***!
23195  \*****************************************/
23196/*! no static exports found */
23197/***/ (function(module, exports, __webpack_require__) {
23198
23199"use strict";
23200
23201
23202if (false) {} else {
23203  module.exports = __webpack_require__(/*! ./cjs/scheduler.development.js */ "./node_modules/scheduler/cjs/scheduler.development.js");
23204}
23205
23206/***/ }),
23207
vendor: 481 bytes, lines 23208-23223
23208/***/ "./node_modules/scheduler/tracing.js":
23209/*!*******************************************!*\
23210  !*** ./node_modules/scheduler/tracing.js ***!
23211  \*******************************************/
23212/*! no static exports found */
23213/***/ (function(module, exports, __webpack_require__) {
23214
23215"use strict";
23216
23217
23218if (false) {} else {
23219  module.exports = __webpack_require__(/*! ./cjs/scheduler-tracing.development.js */ "./node_modules/scheduler/cjs/scheduler-tracing.development.js");
23220}
23221
23222/***/ }),
23223
vendor: 6,944 bytes, lines 23224-23415
23224/***/ "./node_modules/spectacle/es/components/appear.js":
23225/*!********************************************************!*\
23226  !*** ./node_modules/spectacle/es/components/appear.js ***!
23227  \********************************************************/
23228/*! exports provided: default */
23229/***/ (function(module, __webpack_exports__, __webpack_require__) {
23230
23231"use strict";
23232__webpack_require__.r(__webpack_exports__);
23233/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
23234/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
23235/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
23236/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
23237/* harmony import */ var react_spring__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-spring */ "./node_modules/react-spring/web.js");
23238/* harmony import */ var _hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/use-transition-pipe */ "./node_modules/spectacle/es/hooks/use-transition-pipe.js");
23239/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js");
23240function ownKeys(object, enumerableOnly) {
23241  var keys = Object.keys(object);
23242
23243  if (Object.getOwnPropertySymbols) {
23244    var symbols = Object.getOwnPropertySymbols(object);
23245    if (enumerableOnly) symbols = symbols.filter(function (sym) {
23246      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
23247    });
23248    keys.push.apply(keys, symbols);
23249  }
23250
23251  return keys;
23252}
23253
23254function _objectSpread(target) {
23255  for (var i = 1; i < arguments.length; i++) {
23256    var source = arguments[i] != null ? arguments[i] : {};
23257
23258    if (i % 2) {
23259      ownKeys(Object(source), true).forEach(function (key) {
23260        _defineProperty(target, key, source[key]);
23261      });
23262    } else if (Object.getOwnPropertyDescriptors) {
23263      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
23264    } else {
23265      ownKeys(Object(source)).forEach(function (key) {
23266        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
23267      });
23268    }
23269  }
23270
23271  return target;
23272}
23273
23274function _defineProperty(obj, key, value) {
23275  if (key in obj) {
23276    Object.defineProperty(obj, key, {
23277      value: value,
23278      enumerable: true,
23279      configurable: true,
23280      writable: true
23281    });
23282  } else {
23283    obj[key] = value;
23284  }
23285
23286  return obj;
23287}
23288
23289function _slicedToArray(arr, i) {
23290  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
23291}
23292
23293function _nonIterableRest() {
23294  throw new TypeError("Invalid attempt to destructure non-iterable instance");
23295}
23296
23297function _iterableToArrayLimit(arr, i) {
23298  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
23299    return;
23300  }
23301
23302  var _arr = [];
23303  var _n = true;
23304  var _d = false;
23305  var _e = undefined;
23306
23307  try {
23308    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
23309      _arr.push(_s.value);
23310
23311      if (i && _arr.length === i) break;
23312    }
23313  } catch (err) {
23314    _d = true;
23315    _e = err;
23316  } finally {
23317    try {
23318      if (!_n && _i["return"] != null) _i["return"]();
23319    } finally {
23320      if (_d) throw _e;
23321    }
23322  }
23323
23324  return _arr;
23325}
23326
23327function _arrayWithHoles(arr) {
23328  if (Array.isArray(arr)) return arr;
23329}
23330
23331
23332
23333
23334
23335
23336/**
23337 * SlideElementWrapper provides a component for animating slideElements
23338 * Anything wrapped inside will be affected by the transition.
23339 *
23340 * It is currently using useSpring but ideally we will be able to switch
23341 * to whatever react-spring hook a user desires!
23342 *
23343 * Note: Immediate is a React-Spring property that we pass to the animations
23344 * essentially it skips animations.
23345 */
23346
23347var Appear = function Appear(_ref) {
23348  var elementNum = _ref.elementNum,
23349      transitionEffect = _ref.transitionEffect,
23350      children = _ref.children;
23351
23352  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_4__["SlideContext"]),
23353      _React$useContext$sta = _React$useContext.state,
23354      currentSlideElement = _React$useContext$sta.currentSlideElement,
23355      reverseDirection = _React$useContext$sta.reverseDirection,
23356      immediate = _React$useContext$sta.immediate;
23357
23358  var _React$useContext2 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_3__["TransitionPipeContext"]),
23359      signal = _React$useContext2.signal;
23360
23361  var activeElement = elementNum === currentSlideElement;
23362  var upcomingElement = elementNum > currentSlideElement && !reverseDirection || elementNum < currentSlideElement && reverseDirection;
23363  var previousElement = elementNum < currentSlideElement && !reverseDirection || elementNum > currentSlideElement && reverseDirection;
23364
23365  var _useSpring = Object(react_spring__WEBPACK_IMPORTED_MODULE_2__["useSpring"])(function () {
23366    if ((activeElement || upcomingElement) && !previousElement) {
23367      return reverseDirection ? transitionEffect.to : transitionEffect.from;
23368    } else if (previousElement) {
23369      return reverseDirection ? transitionEffect.from : transitionEffect.to;
23370    } else {
23371      return transitionEffect.to;
23372    }
23373  }),
23374      _useSpring2 = _slicedToArray(_useSpring, 2),
23375      styleProps = _useSpring2[0],
23376      set = _useSpring2[1];
23377
23378  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
23379    if (activeElement && !reverseDirection) {
23380      set(_objectSpread({}, transitionEffect.to, {
23381        immediate: immediate
23382      }));
23383    } else if (reverseDirection && previousElement) {
23384      set(_objectSpread({}, transitionEffect.from, {
23385        immediate: immediate
23386      }));
23387    }
23388  }, [activeElement, elementNum, immediate, previousElement, reverseDirection, set, signal, transitionEffect, upcomingElement]);
23389  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_spring__WEBPACK_IMPORTED_MODULE_2__["animated"].div, {
23390    style: styleProps
23391  }, children);
23392};
23393
23394Appear.propTypes = {
23395  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired,
23396  elementNum: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number.isRequired,
23397  transitionEffect: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({
23398    from: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object.isRequired,
23399    to: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object.isRequired
23400  })
23401};
23402Appear.defaultProps = {
23403  transitionEffect: {
23404    from: {
23405      opacity: 0
23406    },
23407    to: {
23408      opacity: 1
23409    }
23410  }
23411};
23412/* harmony default export */ __webpack_exports__["default"] = (Appear);
23413
23414/***/ }),
23415
vendor: 10,446 bytes, lines 23416-23662
23416/***/ "./node_modules/spectacle/es/components/code-pane.js":
23417/*!***********************************************************!*\
23418  !*** ./node_modules/spectacle/es/components/code-pane.js ***!
23419  \***********************************************************/
23420/*! exports provided: default */
23421/***/ (function(module, __webpack_exports__, __webpack_require__) {
23422
23423"use strict";
23424__webpack_require__.r(__webpack_exports__);
23425/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CodePane; });
23426/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
23427/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
23428/* harmony import */ var prism_react_renderer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prism-react-renderer */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/index.js");
23429/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
23430/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);
23431/* harmony import */ var prism_react_renderer_themes_vsDark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prism-react-renderer/themes/vsDark */ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/vsDark.js");
23432/* harmony import */ var prism_react_renderer_themes_vsDark__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prism_react_renderer_themes_vsDark__WEBPACK_IMPORTED_MODULE_3__);
23433/* harmony import */ var prism_react_renderer_themes_nightOwlLight__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prism-react-renderer/themes/nightOwlLight */ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/nightOwlLight.js");
23434/* harmony import */ var prism_react_renderer_themes_nightOwlLight__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prism_react_renderer_themes_nightOwlLight__WEBPACK_IMPORTED_MODULE_4__);
23435/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
23436/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js");
23437function _extends() {
23438  _extends = Object.assign || function (target) {
23439    for (var i = 1; i < arguments.length; i++) {
23440      var source = arguments[i];
23441
23442      for (var key in source) {
23443        if (Object.prototype.hasOwnProperty.call(source, key)) {
23444          target[key] = source[key];
23445        }
23446      }
23447    }
23448
23449    return target;
23450  };
23451
23452  return _extends.apply(this, arguments);
23453}
23454
23455function ownKeys(object, enumerableOnly) {
23456  var keys = Object.keys(object);
23457
23458  if (Object.getOwnPropertySymbols) {
23459    var symbols = Object.getOwnPropertySymbols(object);
23460    if (enumerableOnly) symbols = symbols.filter(function (sym) {
23461      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
23462    });
23463    keys.push.apply(keys, symbols);
23464  }
23465
23466  return keys;
23467}
23468
23469function _objectSpread(target) {
23470  for (var i = 1; i < arguments.length; i++) {
23471    var source = arguments[i] != null ? arguments[i] : {};
23472
23473    if (i % 2) {
23474      ownKeys(Object(source), true).forEach(function (key) {
23475        _defineProperty(target, key, source[key]);
23476      });
23477    } else if (Object.getOwnPropertyDescriptors) {
23478      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
23479    } else {
23480      ownKeys(Object(source)).forEach(function (key) {
23481        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
23482      });
23483    }
23484  }
23485
23486  return target;
23487}
23488
23489function _defineProperty(obj, key, value) {
23490  if (key in obj) {
23491    Object.defineProperty(obj, key, {
23492      value: value,
23493      enumerable: true,
23494      configurable: true,
23495      writable: true
23496    });
23497  } else {
23498    obj[key] = value;
23499  }
23500
23501  return obj;
23502}
23503
23504
23505
23506
23507
23508
23509
23510
23511var spaceSearch = /\S|$/;
23512var lineNumberStyles = {
23513  padding: '0 1em',
23514  borderRight: '1px solid hsla(0, 0%, 100%, 0.25)',
23515  flex: '0 1 30px',
23516  alignSelf: 'stretch'
23517};
23518function CodePane(props) {
23519  var canvas = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](document.createElement('canvas'));
23520  var context = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](canvas.current.getContext('2d'));
23521  var scrollContainerRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](null);
23522  var lineRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](null);
23523  var themeContext = react__WEBPACK_IMPORTED_MODULE_0__["useContext"](styled_components__WEBPACK_IMPORTED_MODULE_5__["ThemeContext"]);
23524
23525  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0__["useContext"](_hooks_use_deck__WEBPACK_IMPORTED_MODULE_6__["DeckContext"]),
23526      printMode = _React$useContext.state.printMode;
23527
23528  var font = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () {
23529    if (themeContext && themeContext.fonts && themeContext.fonts.monospace) {
23530      return themeContext.fonts.monospace;
23531    }
23532
23533    var _navigator = navigator,
23534        platform = _navigator.platform;
23535
23536    if (platform.toLowerCase().search('win') !== -1) {
23537      return 'Consolas';
23538    } else if (platform.toLowerCase().search('mac') !== -1) {
23539      return 'Menlo';
23540    } else {
23541      return 'monospace';
23542    }
23543  }, [themeContext]);
23544  var fontSize = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () {
23545    if (props && props.fontSize) {
23546      return props.fontSize;
23547    }
23548
23549    if (themeContext && themeContext.fontSizes && themeContext.fontSizes.monospace) {
23550      return themeContext.fontSizes.monospace;
23551    } // Default to 15px
23552
23553
23554    return 15;
23555  }, [themeContext, props.fontSize]);
23556  var preStyles = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () {
23557    return {
23558      fontFamily: font,
23559      fontSize: fontSize,
23560      maxHeight: themeContext.size.maxCodePaneHeight || 200,
23561      overflow: 'scroll',
23562      margin: 0,
23563      padding: '0.5em 1em 0.5em 0'
23564    };
23565  }, [font, fontSize, themeContext]);
23566  var isLineDimmed = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (lineNumber) {
23567    return lineNumber < props.highlightStart || lineNumber > props.highlightEnd;
23568  }, [props.highlightStart, props.highlightEnd]);
23569  var measureIndentation = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (indentation) {
23570    if (indentation === 0) {
23571      return 0;
23572    }
23573
23574    var indentString = ' '.repeat(props.indentSize) || ' ';
23575    var string = indentString.repeat(indentation);
23576    context.current.font = "".concat(props.fontSize, "px ").concat(font);
23577    var measurement = context.current.measureText(string);
23578    return measurement.width;
23579  }, [props.fontSize, font]); // Auto-scroll to highlighted range
23580
23581  react__WEBPACK_IMPORTED_MODULE_0__["useLayoutEffect"](function () {
23582    var lineHeight = lineRef.current.clientHeight;
23583    var top = Math.max(0, (props.highlightStart - 1) * lineHeight);
23584    scrollContainerRef.current.scroll({
23585      top: top,
23586      behavior: 'smooth'
23587    });
23588  }, [lineRef.current, props.highlightStart]);
23589  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](prism_react_renderer__WEBPACK_IMPORTED_MODULE_1__["default"], _extends({}, prism_react_renderer__WEBPACK_IMPORTED_MODULE_1__["defaultProps"], {
23590    code: props.children,
23591    language: props.language,
23592    theme: printMode ? prism_react_renderer_themes_nightOwlLight__WEBPACK_IMPORTED_MODULE_4___default.a : props.theme
23593  }), function (_ref) {
23594    var className = _ref.className,
23595        style = _ref.style,
23596        tokens = _ref.tokens,
23597        getLineProps = _ref.getLineProps,
23598        getTokenProps = _ref.getTokenProps;
23599    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("pre", {
23600      ref: scrollContainerRef,
23601      className: "".concat(className, " ").concat(props.autoFillHeight && 'spectacle-auto-height-fill'),
23602      style: _objectSpread({}, style, {}, preStyles)
23603    }, tokens.map(function (line, i) {
23604      var lineProps = getLineProps({
23605        line: line,
23606        key: i
23607      });
23608      var lineIndentation = line[0].content.search(spaceSearch);
23609      lineProps.style = _objectSpread({}, lineProps.style || {}, {
23610        whiteSpace: 'pre-wrap',
23611        display: 'flex',
23612        alignItems: 'center',
23613        justifyContent: 'flex-start',
23614        opacity: isLineDimmed(i + 1) ? 0.5 : 1
23615      });
23616
23617      if (line[0].content && !line[0].empty) {
23618        line[0].content = line[0].content.trimLeft();
23619      }
23620
23621      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", _extends({
23622        key: i
23623      }, lineProps, {
23624        ref: i === 0 ? lineRef : undefined
23625      }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", {
23626        style: lineNumberStyles
23627      }, i + 1), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", {
23628        style: {
23629          marginLeft: measureIndentation(lineIndentation),
23630          flex: 1,
23631          paddingLeft: '0.25em'
23632        }
23633      }, line.map(function (token, key) {
23634        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", _extends({
23635          key: key
23636        }, getTokenProps({
23637          token: token,
23638          key: key
23639        })));
23640      })));
23641    }));
23642  }));
23643}
23644CodePane.propTypes = {
23645  autoFillHeight: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,
23646  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,
23647  fontSize: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,
23648  highlightEnd: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,
23649  highlightStart: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,
23650  indentSize: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,
23651  language: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,
23652  theme: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object
23653};
23654CodePane.defaultProps = {
23655  language: 'javascript',
23656  theme: prism_react_renderer_themes_vsDark__WEBPACK_IMPORTED_MODULE_3___default.a,
23657  highlightStart: -Infinity,
23658  highlightEnd: Infinity
23659};
23660
23661/***/ }),
23662
vendor: 2,699 bytes, lines 23663-23712
23663/***/ "./node_modules/spectacle/es/components/deck/audience-deck.js":
23664/*!********************************************************************!*\
23665  !*** ./node_modules/spectacle/es/components/deck/audience-deck.js ***!
23666  \********************************************************************/
23667/*! exports provided: default */
23668/***/ (function(module, __webpack_exports__, __webpack_require__) {
23669
23670"use strict";
23671__webpack_require__.r(__webpack_exports__);
23672/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
23673/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
23674/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
23675/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
23676/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js");
23677/* harmony import */ var _hooks_use_presentation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-presentation */ "./node_modules/spectacle/es/hooks/use-presentation.js");
23678
23679
23680
23681
23682
23683var AudienceDeck = function AudienceDeck(props) {
23684  var addMessageHandler = props.addMessageHandler;
23685
23686  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_2__["DeckContext"]),
23687      dispatch = _React$useContext.dispatch;
23688
23689  var onMessageReceived = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (message) {
23690    // The PresentationDeck will send messages to
23691    // keep the AudienceDeck in sync.
23692    if (message.type === _hooks_use_presentation__WEBPACK_IMPORTED_MODULE_3__["MSG_SLIDE_STATE_CHANGE"]) {
23693      dispatch({
23694        type: 'GO_TO_SLIDE',
23695        payload: message.payload
23696      });
23697    }
23698  }, [dispatch]);
23699  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
23700    addMessageHandler(onMessageReceived);
23701  }, [addMessageHandler, onMessageReceived]);
23702  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, props.children);
23703};
23704
23705AudienceDeck.propTypes = {
23706  addMessageHandler: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,
23707  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired
23708};
23709/* harmony default export */ __webpack_exports__["default"] = (AudienceDeck);
23710
23711/***/ }),
23712
vendor: 22,012 bytes, lines 23713-24210
23713/***/ "./node_modules/spectacle/es/components/deck/index.js":
23714/*!************************************************************!*\
23715  !*** ./node_modules/spectacle/es/components/deck/index.js ***!
23716  \************************************************************/
23717/*! exports provided: default */
23718/***/ (function(module, __webpack_exports__, __webpack_require__) {
23719
23720"use strict";
23721__webpack_require__.r(__webpack_exports__);
23722/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
23723/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
23724/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
23725/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
23726/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
23727/* harmony import */ var normalize_newline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! normalize-newline */ "./node_modules/normalize-newline/index.js");
23728/* harmony import */ var normalize_newline__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(normalize_newline__WEBPACK_IMPORTED_MODULE_3__);
23729/* harmony import */ var _utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/indent-normalizer */ "./node_modules/spectacle/es/utils/indent-normalizer.js");
23730/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js");
23731/* harmony import */ var _utils_is_component_type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/is-component-type */ "./node_modules/spectacle/es/utils/is-component-type.js");
23732/* harmony import */ var _hooks_use_url_routing__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/use-url-routing */ "./node_modules/spectacle/es/hooks/use-url-routing.js");
23733/* harmony import */ var _presenter_deck__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./presenter-deck */ "./node_modules/spectacle/es/components/deck/presenter-deck.js");
23734/* harmony import */ var _audience_deck__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./audience-deck */ "./node_modules/spectacle/es/components/deck/audience-deck.js");
23735/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../theme */ "./node_modules/spectacle/es/theme/index.js");
23736/* harmony import */ var _print_deck__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./print-deck */ "./node_modules/spectacle/es/components/deck/print-deck.js");
23737/* harmony import */ var react_spring__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-spring */ "./node_modules/react-spring/web.js");
23738/* harmony import */ var _hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/use-transition-pipe */ "./node_modules/spectacle/es/hooks/use-transition-pipe.js");
23739/* harmony import */ var _hooks_use_presentation__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../hooks/use-presentation */ "./node_modules/spectacle/es/hooks/use-presentation.js");
23740/* harmony import */ var _hooks_use_keyboard_controls__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../hooks/use-keyboard-controls */ "./node_modules/spectacle/es/hooks/use-keyboard-controls.js");
23741/* harmony import */ var _hooks_use_touch_controls__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../hooks/use-touch-controls */ "./node_modules/spectacle/es/hooks/use-touch-controls.js");
23742/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils/constants */ "./node_modules/spectacle/es/utils/constants.js");
23743/* harmony import */ var _utils_search_children_appear__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../utils/search-children-appear */ "./node_modules/spectacle/es/utils/search-children-appear.js");
23744/* harmony import */ var _utils_search_children_stepper__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../utils/search-children-stepper */ "./node_modules/spectacle/es/utils/search-children-stepper.js");
23745/* harmony import */ var _overview_deck__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./overview-deck */ "./node_modules/spectacle/es/components/deck/overview-deck.js");
23746/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../index */ "./node_modules/spectacle/es/index.js");
23747/* harmony import */ var _utils_notes__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../utils/notes */ "./node_modules/spectacle/es/utils/notes.js");
23748function _typeof(obj) {
23749  "@babel/helpers - typeof";
23750
23751  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
23752    _typeof = function _typeof(obj) {
23753      return typeof obj;
23754    };
23755  } else {
23756    _typeof = function _typeof(obj) {
23757      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
23758    };
23759  }
23760
23761  return _typeof(obj);
23762}
23763
23764function ownKeys(object, enumerableOnly) {
23765  var keys = Object.keys(object);
23766
23767  if (Object.getOwnPropertySymbols) {
23768    var symbols = Object.getOwnPropertySymbols(object);
23769    if (enumerableOnly) symbols = symbols.filter(function (sym) {
23770      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
23771    });
23772    keys.push.apply(keys, symbols);
23773  }
23774
23775  return keys;
23776}
23777
23778function _objectSpread(target) {
23779  for (var i = 1; i < arguments.length; i++) {
23780    var source = arguments[i] != null ? arguments[i] : {};
23781
23782    if (i % 2) {
23783      ownKeys(Object(source), true).forEach(function (key) {
23784        _defineProperty(target, key, source[key]);
23785      });
23786    } else if (Object.getOwnPropertyDescriptors) {
23787      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
23788    } else {
23789      ownKeys(Object(source)).forEach(function (key) {
23790        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
23791      });
23792    }
23793  }
23794
23795  return target;
23796}
23797
23798function _defineProperty(obj, key, value) {
23799  if (key in obj) {
23800    Object.defineProperty(obj, key, {
23801      value: value,
23802      enumerable: true,
23803      configurable: true,
23804      writable: true
23805    });
23806  } else {
23807    obj[key] = value;
23808  }
23809
23810  return obj;
23811}
23812
23813function _templateObject() {
23814  var data = _taggedTemplateLiteral(["\n  height: 100vh;\n  width: 100vw;\n  position: fixed;\n"]);
23815
23816  _templateObject = function _templateObject() {
23817    return data;
23818  };
23819
23820  return data;
23821}
23822
23823function _taggedTemplateLiteral(strings, raw) {
23824  if (!raw) {
23825    raw = strings.slice(0);
23826  }
23827
23828  return Object.freeze(Object.defineProperties(strings, {
23829    raw: {
23830      value: Object.freeze(raw)
23831    }
23832  }));
23833}
23834
23835
23836
23837
23838
23839
23840
23841
23842
23843
23844
23845
23846
23847
23848
23849
23850
23851
23852
23853
23854
23855
23856
23857
23858var AnimatedDeckDiv = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])(react_spring__WEBPACK_IMPORTED_MODULE_12__["animated"].div)(_templateObject());
23859AnimatedDeckDiv.displayName = 'AnimatedDeckDiv';
23860var defaultTransition = {
23861  slide: {
23862    from: {
23863      position: 'fixed',
23864      transform: 'translate(100%, 0%)'
23865    },
23866    enter: {
23867      position: 'fixed',
23868      transform: 'translate(0, 0%)'
23869    },
23870    leave: {
23871      position: 'fixed',
23872      transform: 'translate(-100%, 0%)'
23873    },
23874    config: {
23875      precision: 0
23876    }
23877  },
23878  fade: {
23879    enter: {
23880      opacity: 1
23881    },
23882    from: {
23883      opacity: 0
23884    },
23885    leave: {
23886      opacity: 0
23887    },
23888    config: {
23889      precision: 0
23890    }
23891  },
23892  none: {
23893    enter: {},
23894    from: {},
23895    leave: {},
23896    config: {
23897      precision: 0
23898    }
23899  }
23900};
23901var builtInTransitions = Object.keys(defaultTransition);
23902/**
23903 * Provides top level state/context provider with useDeck hook
23904 * Should wrap all the presentation components (slides, etc)
23905 *
23906 * Props = {
23907 *  loop: bool (pass in true if you want slides to loop)
23908 * transitionEffect: based off of react sprint useTransition
23909 * }
23910 *
23911 * Note: Immediate is a React-Spring property that we pass to the animations
23912 * essentially it skips animations.
23913 */
23914
23915var initialState = {
23916  currentSlide: _utils_constants__WEBPACK_IMPORTED_MODULE_17__["DEFAULT_SLIDE_INDEX"],
23917  immediate: false,
23918  immediateElement: false,
23919  currentSlideElement: _utils_constants__WEBPACK_IMPORTED_MODULE_17__["DEFAULT_SLIDE_ELEMENT_INDEX"],
23920  reverseDirection: false,
23921  presenterMode: false,
23922  overviewMode: false,
23923  notes: {},
23924  resolvedInitialUrl: false
23925};
23926
23927var mapMarkdownIntoSlides = function mapMarkdownIntoSlides(child, index) {
23928  if (Object(_utils_is_component_type__WEBPACK_IMPORTED_MODULE_6__["default"])(child, _index__WEBPACK_IMPORTED_MODULE_21__["Markdown"].name) && Boolean(child.props.containsSlides)) {
23929    return child.props.children.split(/\n\s*---\n/).map(function (markdown, mdIndex) {
23930      var content = normalize_newline__WEBPACK_IMPORTED_MODULE_3___default()(Object(_utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_4__["default"])(markdown));
23931      var contentWithoutNotes = Object(_utils_notes__WEBPACK_IMPORTED_MODULE_22__["removeNotes"])(content);
23932      var notes = Object(_utils_notes__WEBPACK_IMPORTED_MODULE_22__["isolateNotes"])(content);
23933      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_index__WEBPACK_IMPORTED_MODULE_21__["Slide"], {
23934        key: "md-slide-".concat(index, "-").concat(mdIndex)
23935      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_index__WEBPACK_IMPORTED_MODULE_21__["Markdown"], null, contentWithoutNotes), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_index__WEBPACK_IMPORTED_MODULE_21__["Notes"], null, notes));
23936    });
23937  }
23938
23939  return child;
23940};
23941
23942var Deck = function Deck(props) {
23943  var children = props.children,
23944      loop = props.loop,
23945      keyboardControls = props.keyboardControls,
23946      animationsWhenGoingBack = props.animationsWhenGoingBack,
23947      backgroundColor = props.backgroundColor,
23948      textColor = props.textColor,
23949      template = props.template,
23950      transitionEffect = props.transitionEffect;
23951
23952  if (react__WEBPACK_IMPORTED_MODULE_0___default.a.Children.count(children) === 0) {
23953    throw new Error('Spectacle must have at least one slide to run.');
23954  }
23955
23956  var filteredChildren = react__WEBPACK_IMPORTED_MODULE_0___default.a.Children.map(children, mapMarkdownIntoSlides).reduce(function (acc, slide) {
23957    return acc.concat(slide);
23958  }, []).filter(function (child) {
23959    return Object(_utils_is_component_type__WEBPACK_IMPORTED_MODULE_6__["default"])(child, _index__WEBPACK_IMPORTED_MODULE_21__["Slide"].name);
23960  });
23961  var numberOfSlides = filteredChildren.length;
23962
23963  if (numberOfSlides === 0) {
23964    throw new Error('Spectacle must have at least one slide to run.');
23965  }
23966
23967  var slideElementMap = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () {
23968    return filteredChildren.reduce(function (map, slide, index) {
23969      var appearElements = Object(_utils_search_children_appear__WEBPACK_IMPORTED_MODULE_18__["default"])(slide.props.children);
23970      var stepperElements = Object(_utils_search_children_stepper__WEBPACK_IMPORTED_MODULE_19__["default"])(slide.props.children);
23971      map[index] = appearElements + stepperElements;
23972      return map;
23973    }, {});
23974  }, [filteredChildren]); // Initialise useDeck hook and get state and dispatch off of it
23975
23976  var _useDeck = Object(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_5__["default"])(_objectSpread({}, initialState, {
23977    numberOfSlides: numberOfSlides
23978  })),
23979      state = _useDeck.state,
23980      dispatch = _useDeck.dispatch;
23981
23982  var themeContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(styled_components__WEBPACK_IMPORTED_MODULE_2__["ThemeContext"]);
23983  react__WEBPACK_IMPORTED_MODULE_0___default.a.useLayoutEffect(function () {
23984    document.body.style.margin = '0';
23985    document.body.style.background = '#000';
23986    document.body.style.color = themeContext.colors[textColor] || textColor || themeContext.colors.primary;
23987  }, [backgroundColor, textColor, themeContext.colors]);
23988
23989  var _usePresentation = Object(_hooks_use_presentation__WEBPACK_IMPORTED_MODULE_14__["default"])(),
23990      startConnection = _usePresentation.startConnection,
23991      terminateConnection = _usePresentation.terminateConnection,
23992      sendMessage = _usePresentation.sendMessage,
23993      errors = _usePresentation.errors,
23994      addMessageHandler = _usePresentation.addMessageHandler,
23995      isReceiver = _usePresentation.isReceiver,
23996      isController = _usePresentation.isController;
23997
23998  var onUrlChange = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (update) {
23999    if (isController) {
24000      sendMessage({
24001        type: _hooks_use_presentation__WEBPACK_IMPORTED_MODULE_14__["MSG_SLIDE_STATE_CHANGE"],
24002        payload: update
24003      });
24004    }
24005  }, [sendMessage, isController]);
24006
24007  var _useUrlRouting = Object(_hooks_use_url_routing__WEBPACK_IMPORTED_MODULE_7__["default"])({
24008    dispatch: dispatch,
24009    currentSlide: state.currentSlide,
24010    currentSlideElement: state.currentSlideElement,
24011    currentPresenterMode: state.presenterMode,
24012    slideElementMap: slideElementMap,
24013    loop: loop,
24014    animationsWhenGoingBack: animationsWhenGoingBack,
24015    onUrlChange: onUrlChange
24016  }),
24017      navigateToNext = _useUrlRouting.navigateToNext,
24018      navigateToPrevious = _useUrlRouting.navigateToPrevious,
24019      navigateTo = _useUrlRouting.navigateTo,
24020      toggleMode = _useUrlRouting.toggleMode,
24021      goToSlide = _useUrlRouting.goToSlide;
24022
24023  Object(_hooks_use_keyboard_controls__WEBPACK_IMPORTED_MODULE_15__["default"])({
24024    keyboardControls: keyboardControls,
24025    navigateToNext: navigateToNext,
24026    navigateToPrevious: navigateToPrevious,
24027    toggleMode: toggleMode
24028  });
24029  Object(_hooks_use_touch_controls__WEBPACK_IMPORTED_MODULE_16__["default"])({
24030    navigateToNext: navigateToNext,
24031    navigateToPrevious: navigateToPrevious
24032  });
24033
24034  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_13__["TransitionPipeContext"]),
24035      runTransition = _React$useContext.runTransition;
24036
24037  var slideTransitionEffect = filteredChildren[state.currentSlide].props.transitionEffect || {};
24038  var transitionRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null);
24039  var broadcastChannelRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null);
24040  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
24041    if (typeof MessageChannel !== 'undefined') {
24042      broadcastChannelRef.current = new BroadcastChannel('spectacle_presenter_mode_channel');
24043    }
24044
24045    return function () {
24046      if (!broadcastChannelRef.current) {
24047        return;
24048      }
24049
24050      broadcastChannelRef.current.close();
24051    };
24052  }, []);
24053  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
24054    if (broadcastChannelRef.current && typeof broadcastChannelRef.current.postMessage === 'function') {
24055      broadcastChannelRef.current.onmessage = function (message) {
24056        if (state.presenterMode) {
24057          return;
24058        }
24059
24060        var _JSON$parse = JSON.parse(message.data),
24061            slide = _JSON$parse.slide,
24062            element = _JSON$parse.element;
24063
24064        navigateTo({
24065          slideIndex: slide,
24066          elementIndex: element
24067        });
24068      };
24069
24070      if (state.presenterMode) {
24071        var slideData = {
24072          slide: state.currentSlide,
24073          element: state.currentSlideElement
24074        };
24075        broadcastChannelRef.current.postMessage(JSON.stringify(slideData));
24076      }
24077    }
24078  }, [state.currentSlide, state.currentSlideElement, state.presenterMode, navigateTo]);
24079  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
24080    if (!transitionRef.current) {
24081      return;
24082    }
24083
24084    runTransition(transitionRef.current);
24085  }, [transitionRef, state.currentSlide, runTransition]);
24086  var currentTransition = {};
24087
24088  if (typeof slideTransitionEffect === 'string' && builtInTransitions.includes(slideTransitionEffect)) {
24089    currentTransition = defaultTransition[slideTransitionEffect];
24090  } else if (_typeof(slideTransitionEffect) === 'object' && Object.keys(slideTransitionEffect).length !== 0) {
24091    currentTransition = slideTransitionEffect;
24092  } else if (typeof transitionEffect === 'string' && builtInTransitions.includes(transitionEffect)) {
24093    currentTransition = defaultTransition[transitionEffect];
24094  } else if (_typeof(transitionEffect) === 'object' && Object.keys(transitionEffect).length !== 0) {
24095    currentTransition = transitionEffect;
24096  } else {
24097    currentTransition = defaultTransition['slide'];
24098  }
24099
24100  var transitions = Object(react_spring__WEBPACK_IMPORTED_MODULE_12__["useTransition"])(state.currentSlide, function (p) {
24101    return p;
24102  }, {
24103    ref: transitionRef,
24104    enter: currentTransition.enter,
24105    leave: currentTransition.leave,
24106    from: currentTransition.from,
24107    unique: true,
24108    immediate: state.immediate
24109  });
24110  var content = null;
24111
24112  if (state.resolvedInitialUrl) {
24113    if (state.overviewMode) {
24114      var staticSlides = filteredChildren.map(function (slide, index) {
24115        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(slide, {
24116          slideNum: index,
24117          template: template
24118        });
24119      });
24120      content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_overview_deck__WEBPACK_IMPORTED_MODULE_20__["default"], {
24121        goToSlide: goToSlide
24122      }, staticSlides);
24123    } else if (state.exportMode) {
24124      var _staticSlides = filteredChildren.map(function (slide, index) {
24125        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(slide, {
24126          slideNum: index,
24127          template: template
24128        });
24129      });
24130
24131      content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_print_deck__WEBPACK_IMPORTED_MODULE_11__["PrintDeck"], null, _staticSlides);
24132    } else if (state.presenterMode) {
24133      var _staticSlides2 = filteredChildren.map(function (slide, index) {
24134        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(slide, {
24135          slideNum: index,
24136          template: template
24137        });
24138      });
24139
24140      content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_presenter_deck__WEBPACK_IMPORTED_MODULE_8__["default"], {
24141        isController: isController,
24142        isReceiver: isReceiver,
24143        startConnection: startConnection,
24144        terminateConnection: terminateConnection
24145      }, _staticSlides2);
24146    } else {
24147      var animatedSlides = transitions.map(function (_ref) {
24148        var item = _ref.item,
24149            animatedStyleProps = _ref.props,
24150            key = _ref.key;
24151        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(AnimatedDeckDiv, {
24152          style: animatedStyleProps,
24153          key: key
24154        }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(filteredChildren[item], {
24155          slideNum: item,
24156          numberOfSlides: numberOfSlides,
24157          template: template
24158        }));
24159      });
24160      content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_audience_deck__WEBPACK_IMPORTED_MODULE_9__["default"], {
24161        addMessageHandler: addMessageHandler
24162      }, animatedSlides);
24163    }
24164  }
24165
24166  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_5__["DeckContext"].Provider, {
24167    value: {
24168      state: state,
24169      dispatch: dispatch,
24170      numberOfSlides: numberOfSlides,
24171      keyboardControls: keyboardControls,
24172      animationsWhenGoingBack: animationsWhenGoingBack,
24173      slideElementMap: slideElementMap,
24174      goToSlide: goToSlide
24175    }
24176  }, content));
24177};
24178
24179Deck.propTypes = {
24180  animationsWhenGoingBack: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired,
24181  backgroundColor: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
24182  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired,
24183  keyboardControls: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOf(['arrows', 'space']),
24184  loop: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired,
24185  template: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,
24186  textColor: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
24187  theme: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object,
24188  transitionEffect: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({
24189    from: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object,
24190    enter: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object,
24191    leave: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object
24192  }), prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOf(['fade', 'slide', 'none'])])
24193};
24194
24195var ConnectedDeck = function ConnectedDeck(props) {
24196  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styled_components__WEBPACK_IMPORTED_MODULE_2__["ThemeProvider"], {
24197    theme: Object(_theme__WEBPACK_IMPORTED_MODULE_10__["mergeTheme"])(props.theme)
24198  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_13__["TransitionPipeProvider"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Deck, props)));
24199};
24200
24201ConnectedDeck.propTypes = Deck.propTypes;
24202ConnectedDeck.defaultProps = {
24203  loop: false,
24204  keyboardControls: 'arrows',
24205  animationsWhenGoingBack: false
24206};
24207/* harmony default export */ __webpack_exports__["default"] = (ConnectedDeck);
24208
24209/***/ }),
24210
vendor: 2,948 bytes, lines 24211-24279
24211/***/ "./node_modules/spectacle/es/components/deck/overview-deck.js":
24212/*!********************************************************************!*\
24213  !*** ./node_modules/spectacle/es/components/deck/overview-deck.js ***!
24214  \********************************************************************/
24215/*! exports provided: default */
24216/***/ (function(module, __webpack_exports__, __webpack_require__) {
24217
24218"use strict";
24219__webpack_require__.r(__webpack_exports__);
24220/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OverviewDeck; });
24221/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
24222/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
24223/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
24224/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
24225/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
24226function _templateObject2() {
24227  var data = _taggedTemplateLiteral(["\n  height: 200px;\n\n  .spectacle-progress-indicator,\n  .spectacle-fullscreen-button {\n    display: none;\n  }\n"]);
24228
24229  _templateObject2 = function _templateObject2() {
24230    return data;
24231  };
24232
24233  return data;
24234}
24235
24236function _templateObject() {
24237  var data = _taggedTemplateLiteral(["\n  display: grid;\n  grid-template-columns: repeat(3, 30vw);\n  grid-column-gap: 3vw;\n  grid-row-gap: 15px;\n  padding: 15px;\n  width: 100vw;\n"]);
24238
24239  _templateObject = function _templateObject() {
24240    return data;
24241  };
24242
24243  return data;
24244}
24245
24246function _taggedTemplateLiteral(strings, raw) {
24247  if (!raw) {
24248    raw = strings.slice(0);
24249  }
24250
24251  return Object.freeze(Object.defineProperties(strings, {
24252    raw: {
24253      value: Object.freeze(raw)
24254    }
24255  }));
24256}
24257
24258
24259
24260
24261var SlideGrid = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject());
24262var SlideGridItem = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject2());
24263function OverviewDeck(props) {
24264  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](SlideGrid, null, props.children.map(function (child, idx) {
24265    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](SlideGridItem, {
24266      onClick: function onClick() {
24267        return props.goToSlide(idx);
24268      },
24269      key: "slide-".concat(idx)
24270    }, child);
24271  }));
24272}
24273OverviewDeck.propTypes = {
24274  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node,
24275  goToSlide: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired
24276};
24277
24278/***/ }),
24279
vendor: 13,350 bytes, lines 24280-24521
24280/***/ "./node_modules/spectacle/es/components/deck/presenter-deck.js":
24281/*!*********************************************************************!*\
24282  !*** ./node_modules/spectacle/es/components/deck/presenter-deck.js ***!
24283  \*********************************************************************/
24284/*! exports provided: default */
24285/***/ (function(module, __webpack_exports__, __webpack_require__) {
24286
24287"use strict";
24288__webpack_require__.r(__webpack_exports__);
24289/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
24290/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
24291/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
24292/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
24293/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js");
24294/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js");
24295/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
24296/* harmony import */ var _typography__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../typography */ "./node_modules/spectacle/es/components/typography.js");
24297/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../layout */ "./node_modules/spectacle/es/components/layout.js");
24298/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! query-string */ "./node_modules/query-string/index.js");
24299/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(query_string__WEBPACK_IMPORTED_MODULE_7__);
24300/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./timer */ "./node_modules/spectacle/es/components/deck/timer.js");
24301/* harmony import */ var _logo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../logo */ "./node_modules/spectacle/es/components/logo.js");
24302/* harmony import */ var _internal_button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../internal-button */ "./node_modules/spectacle/es/components/internal-button.js");
24303/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/constants */ "./node_modules/spectacle/es/utils/constants.js");
24304/* harmony import */ var broadcastchannel_polyfill__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! broadcastchannel-polyfill */ "./node_modules/broadcastchannel-polyfill/index.js");
24305/* harmony import */ var broadcastchannel_polyfill__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(broadcastchannel_polyfill__WEBPACK_IMPORTED_MODULE_12__);
24306function _templateObject8() {
24307  var data = _taggedTemplateLiteral(["\n  border-top: 1px solid black;\n  overflow-y: scroll;\n  background: #404040;\n  flex: 1;\n"]);
24308
24309  _templateObject8 = function _templateObject8() {
24310    return data;
24311  };
24312
24313  return data;
24314}
24315
24316function _templateObject7() {
24317  var data = _taggedTemplateLiteral(["\n  background: hsla(0, 0%, 100%, 0.1);\n  border-radius: 4px;\n  font-size: 0.7em;\n  padding: 1px 4px;\n"]);
24318
24319  _templateObject7 = function _templateObject7() {
24320    return data;
24321  };
24322
24323  return data;
24324}
24325
24326function _templateObject6() {
24327  var data = _taggedTemplateLiteral(["\n      flex: 0.8;\n    "]);
24328
24329  _templateObject6 = function _templateObject6() {
24330    return data;
24331  };
24332
24333  return data;
24334}
24335
24336function _templateObject5() {
24337  var data = _taggedTemplateLiteral(["\n  flex: 1;\n  width: 100%;\n  position: relative;\n\n  .spectacle-fullscreen-button {\n    display: none;\n  }\n\n  ", "\n"]);
24338
24339  _templateObject5 = function _templateObject5() {
24340    return data;
24341  };
24342
24343  return data;
24344}
24345
24346function _templateObject4() {
24347  var data = _taggedTemplateLiteral(["\n  display: flex;\n  flex-direction: column;\n  height: calc(50% - 1em);\n  width: 100%;\n  overflow: hidden;\n"]);
24348
24349  _templateObject4 = function _templateObject4() {
24350    return data;
24351  };
24352
24353  return data;
24354}
24355
24356function _templateObject3() {
24357  var data = _taggedTemplateLiteral(["\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  width: 50%;\n  > :first-child {\n    margin-bottom: 0.5em;\n  }\n"]);
24358
24359  _templateObject3 = function _templateObject3() {
24360    return data;
24361  };
24362
24363  return data;
24364}
24365
24366function _templateObject2() {
24367  var data = _taggedTemplateLiteral(["\n  padding: 0;\n  display: flex;\n  flex-direction: column;\n  background: #383838;\n  width: 50%;\n  border-right: 1px solid black;\n"]);
24368
24369  _templateObject2 = function _templateObject2() {
24370    return data;
24371  };
24372
24373  return data;
24374}
24375
24376function _templateObject() {
24377  var data = _taggedTemplateLiteral(["\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  flex-direction: row;\n  background-color: #282828;\n  overflow: hidden;\n"]);
24378
24379  _templateObject = function _templateObject() {
24380    return data;
24381  };
24382
24383  return data;
24384}
24385
24386function _taggedTemplateLiteral(strings, raw) {
24387  if (!raw) {
24388    raw = strings.slice(0);
24389  }
24390
24391  return Object.freeze(Object.defineProperties(strings, {
24392    raw: {
24393      value: Object.freeze(raw)
24394    }
24395  }));
24396}
24397
24398
24399
24400
24401
24402
24403
24404
24405
24406
24407
24408
24409
24410
24411var PresenterDeckContainer = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject());
24412var NotesColumn = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject2());
24413var PreviewColumn = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject3());
24414var SlideContainer = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject4());
24415var SlideWrapper = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject5(), function (_ref) {
24416  var small = _ref.small;
24417  return small && Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["css"])(_templateObject6());
24418});
24419var SlideCountLabel = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('span')(_templateObject7());
24420var NotesContainer = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject8());
24421
24422var PresenterDeck = function PresenterDeck(props) {
24423  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_2__["DeckContext"]),
24424      slideElementMap = _React$useContext.slideElementMap,
24425      _React$useContext$sta = _React$useContext.state,
24426      currentNotes = _React$useContext$sta.currentNotes,
24427      currentSlide = _React$useContext$sta.currentSlide,
24428      currentSlideElement = _React$useContext$sta.currentSlideElement,
24429      immediate = _React$useContext$sta.immediate,
24430      numberOfSlides = _React$useContext$sta.numberOfSlides;
24431
24432  var isController = props.isController,
24433      isReceiver = props.isReceiver,
24434      startConnection = props.startConnection,
24435      terminateConnection = props.terminateConnection,
24436      children = props.children;
24437  var countSlideElements = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (slideNumber) {
24438    return slideElementMap[slideNumber];
24439  }, [slideElementMap]);
24440  var onStartConnection = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function () {
24441    var urlParams = query_string__WEBPACK_IMPORTED_MODULE_7__["stringify"]({
24442      slide: currentSlide,
24443      slideElement: currentSlideElement,
24444      immediate: immediate || undefined
24445    });
24446    startConnection(urlParams);
24447  }, [currentSlide, currentSlideElement, immediate, startConnection]);
24448  var activeSlide = children.length > currentSlide ? children[currentSlide] : null; // Show next animation in the preview slide if there are animations left on the current slide
24449
24450  var showNextElement = currentSlideElement + 1 < countSlideElements(currentSlide); // If there are no animations left on the current slide, then show the next slide in the preview
24451
24452  var nextSlide = showNextElement ? activeSlide : children.length > currentSlide + 1 ? children[currentSlide + 1] : null;
24453  var castButton = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () {
24454    if (isReceiver || typeof window.navigator.presentation === 'undefined') {
24455      return null;
24456    }
24457
24458    if (isController) {
24459      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_internal_button__WEBPACK_IMPORTED_MODULE_10__["default"], {
24460        "data-testid": "Close Connection",
24461        onClick: terminateConnection
24462      }, "Stop Casting");
24463    }
24464
24465    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_internal_button__WEBPACK_IMPORTED_MODULE_10__["default"], {
24466      "data-testid": "Start Connection",
24467      onClick: onStartConnection
24468    }, "Cast to Secondary Display");
24469  }, []);
24470  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(PresenterDeckContainer, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(NotesColumn, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_layout__WEBPACK_IMPORTED_MODULE_6__["FlexBox"], {
24471    justifyContent: "space-between",
24472    paddingTop: 10,
24473    paddingX: 15
24474  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_logo__WEBPACK_IMPORTED_MODULE_9__["default"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_layout__WEBPACK_IMPORTED_MODULE_6__["FlexBox"], {
24475    width: 0.75,
24476    flexDirection: "column",
24477    alignItems: "flex-end"
24478  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_typography__WEBPACK_IMPORTED_MODULE_5__["Text"], {
24479    "data-testid": "use-browser-tab-text",
24480    fontSize: 15,
24481    fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_11__["SYSTEM_FONT"],
24482    textAlign: "right",
24483    padding: "0px",
24484    margin: "0px 0px 10px"
24485  }, "Open a second browser tab at ", window.location.host, " to use as the audience deck", !!castButton && ' or use Chrome’s display cast to present on a secondary display', "."), castButton)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_layout__WEBPACK_IMPORTED_MODULE_6__["Box"], {
24486    paddingRight: 15
24487  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_timer__WEBPACK_IMPORTED_MODULE_8__["Timer"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(NotesContainer, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_typography__WEBPACK_IMPORTED_MODULE_5__["Text"], {
24488    fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_11__["SYSTEM_FONT"],
24489    lineHeight: "1.2",
24490    fontSize: "1.5vw"
24491  }, currentNotes))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(PreviewColumn, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideContainer, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_typography__WEBPACK_IMPORTED_MODULE_5__["Text"], {
24492    fontSize: 20,
24493    fontWeight: "bold",
24494    fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_11__["SYSTEM_FONT"],
24495    textAlign: "center"
24496  }, "Current\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideCountLabel, null, "Slide ", activeSlide.props.slideNum + 1, " of ", numberOfSlides)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideWrapper, null, activeSlide)), !!nextSlide && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideContainer, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_typography__WEBPACK_IMPORTED_MODULE_5__["Text"], {
24497    fontSize: 20,
24498    fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_11__["SYSTEM_FONT"],
24499    fontWeight: "bold",
24500    textAlign: "center"
24501  }, "Next\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideCountLabel, null, "Slide ", nextSlide.props.slideNum + 1, " of ", numberOfSlides)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_3__["SlideNextElementContext"].Provider, {
24502    value: {
24503      showNextElement: showNextElement
24504    }
24505  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideWrapper, {
24506    small: true,
24507    "data-testid": "Next Slide"
24508  }, nextSlide)))));
24509};
24510
24511PresenterDeck.propTypes = {
24512  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired,
24513  isController: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired,
24514  isReceiver: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired,
24515  startConnection: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,
24516  terminateConnection: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired
24517};
24518/* harmony default export */ __webpack_exports__["default"] = (PresenterDeck);
24519
24520/***/ }),
24521
vendor: 2,156 bytes, lines 24522-24572
24522/***/ "./node_modules/spectacle/es/components/deck/print-deck.js":
24523/*!*****************************************************************!*\
24524  !*** ./node_modules/spectacle/es/components/deck/print-deck.js ***!
24525  \*****************************************************************/
24526/*! exports provided: PrintDeck */
24527/***/ (function(module, __webpack_exports__, __webpack_require__) {
24528
24529"use strict";
24530__webpack_require__.r(__webpack_exports__);
24531/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrintDeck", function() { return PrintDeck; });
24532/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
24533/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
24534/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
24535/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
24536/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
24537function _templateObject() {
24538  var data = _taggedTemplateLiteral(["\n  display: flex;\n  flex-direction: column;\n"]);
24539
24540  _templateObject = function _templateObject() {
24541    return data;
24542  };
24543
24544  return data;
24545}
24546
24547function _taggedTemplateLiteral(strings, raw) {
24548  if (!raw) {
24549    raw = strings.slice(0);
24550  }
24551
24552  return Object.freeze(Object.defineProperties(strings, {
24553    raw: {
24554      value: Object.freeze(raw)
24555    }
24556  }));
24557}
24558
24559
24560
24561
24562var SlidesContainer = styled_components__WEBPACK_IMPORTED_MODULE_2__["default"].div(_templateObject());
24563var PrintDeck = function PrintDeck(_ref) {
24564  var children = _ref.children;
24565  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](SlidesContainer, null, children);
24566};
24567PrintDeck.propTypes = {
24568  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired
24569};
24570
24571/***/ }),
24572
vendor: 4,522 bytes, lines 24573-24678
24573/***/ "./node_modules/spectacle/es/components/deck/timer.js":
24574/*!************************************************************!*\
24575  !*** ./node_modules/spectacle/es/components/deck/timer.js ***!
24576  \************************************************************/
24577/*! exports provided: Timer */
24578/***/ (function(module, __webpack_exports__, __webpack_require__) {
24579
24580"use strict";
24581__webpack_require__.r(__webpack_exports__);
24582/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return Timer; });
24583/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
24584/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
24585/* harmony import */ var _utils_use_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/use-timer */ "./node_modules/spectacle/es/utils/use-timer.js");
24586/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ */ "./node_modules/spectacle/es/index.js");
24587/* harmony import */ var _internal_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal-button */ "./node_modules/spectacle/es/components/internal-button.js");
24588/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/constants */ "./node_modules/spectacle/es/utils/constants.js");
24589function _slicedToArray(arr, i) {
24590  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
24591}
24592
24593function _nonIterableRest() {
24594  throw new TypeError("Invalid attempt to destructure non-iterable instance");
24595}
24596
24597function _iterableToArrayLimit(arr, i) {
24598  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
24599    return;
24600  }
24601
24602  var _arr = [];
24603  var _n = true;
24604  var _d = false;
24605  var _e = undefined;
24606
24607  try {
24608    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
24609      _arr.push(_s.value);
24610
24611      if (i && _arr.length === i) break;
24612    }
24613  } catch (err) {
24614    _d = true;
24615    _e = err;
24616  } finally {
24617    try {
24618      if (!_n && _i["return"] != null) _i["return"]();
24619    } finally {
24620      if (_d) throw _e;
24621    }
24622  }
24623
24624  return _arr;
24625}
24626
24627function _arrayWithHoles(arr) {
24628  if (Array.isArray(arr)) return arr;
24629}
24630
24631
24632
24633
24634
24635
24636var Timer = function Timer() {
24637  var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(0),
24638      _React$useState2 = _slicedToArray(_React$useState, 2),
24639      timer = _React$useState2[0],
24640      setTimer = _React$useState2[1];
24641
24642  var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(false),
24643      _React$useState4 = _slicedToArray(_React$useState3, 2),
24644      timerStarted = _React$useState4[0],
24645      setTimerStarted = _React$useState4[1];
24646
24647  var addToTimer = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (v) {
24648    return setTimer(function (s) {
24649      return s + v;
24650    });
24651  }, []);
24652  Object(_utils_use_timer__WEBPACK_IMPORTED_MODULE_1__["useTimer"])(addToTimer, 1000, timerStarted);
24653  var minutes = Math.floor(timer.toFixed(0) / 60);
24654  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_2__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_2__["FlexBox"], {
24655    justifyContent: "flex-start",
24656    flex: 1
24657  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_2__["Text"], {
24658    fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_4__["SYSTEM_FONT"],
24659    fontWeight: "bold",
24660    fontSize: "2.2vw",
24661    textAlign: "left"
24662  }, "".concat(String(minutes).padStart(2, '0'), ":").concat(String(timer.toFixed(0) - minutes * 60).padStart(2, '0')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_internal_button__WEBPACK_IMPORTED_MODULE_3__["default"], {
24663    onClick: function onClick() {
24664      return setTimerStarted(function (s) {
24665        return !s;
24666      });
24667    }
24668  }, timerStarted ? 'Stop Timer' : 'Start Timer'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_2__["Box"], {
24669    width: 8
24670  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_internal_button__WEBPACK_IMPORTED_MODULE_3__["default"], {
24671    onClick: function onClick() {
24672      return setTimer(0);
24673    }
24674  }, "Reset"));
24675};
24676
24677/***/ }),
24678
vendor: 3,234 bytes, lines 24679-24751
24679/***/ "./node_modules/spectacle/es/components/fullscreen.js":
24680/*!************************************************************!*\
24681  !*** ./node_modules/spectacle/es/components/fullscreen.js ***!
24682  \************************************************************/
24683/*! exports provided: default */
24684/***/ (function(module, __webpack_exports__, __webpack_require__) {
24685
24686"use strict";
24687__webpack_require__.r(__webpack_exports__);
24688/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
24689/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
24690/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
24691/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
24692/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
24693/* harmony import */ var _hooks_use_full_screen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/use-full-screen */ "./node_modules/spectacle/es/hooks/use-full-screen.js");
24694function _templateObject() {
24695  var data = _taggedTemplateLiteral(["\n    @media print {\n      display: none;\n    }\n  "]);
24696
24697  _templateObject = function _templateObject() {
24698    return data;
24699  };
24700
24701  return data;
24702}
24703
24704function _taggedTemplateLiteral(strings, raw) {
24705  if (!raw) {
24706    raw = strings.slice(0);
24707  }
24708
24709  return Object.freeze(Object.defineProperties(strings, {
24710    raw: {
24711      value: Object.freeze(raw)
24712    }
24713  }));
24714}
24715
24716
24717
24718
24719
24720
24721var FullScreen = function FullScreen(props) {
24722  var Container = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject());
24723  var toggleFullScreen = Object(_hooks_use_full_screen__WEBPACK_IMPORTED_MODULE_3__["useToggleFullScreen"])();
24724  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](Container, {
24725    className: "spectacle-fullscreen-button",
24726    onClick: toggleFullScreen,
24727    style: {
24728      pointerEvents: 'all'
24729    }
24730  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("svg", {
24731    width: props.size,
24732    height: props.size,
24733    viewBox: "0 0 512 512"
24734  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24735    fill: props.color,
24736    d: !!document.fullscreenElement || document.webkitIsFullScreen ? 'M64 371.2h76.795V448H192V320H64v51.2zm76.795-230.4H64V192h128V64h-51.205v76.8zM320 448h51.2v-76.8H448V320H320v128zm51.2-307.2V64H320v128h128v-51.2h-76.8z' : 'M396.795 396.8H320V448h128V320h-51.205zM396.8 115.205V192H448V64H320v51.205zM115.205 115.2H192V64H64v128h51.205zM115.2 396.795V320H64v128h128v-51.205z'
24737  })));
24738};
24739
24740FullScreen.propTypes = {
24741  color: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
24742  size: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number
24743};
24744FullScreen.defaultProps = {
24745  color: '#fff',
24746  size: 24
24747};
24748/* harmony default export */ __webpack_exports__["default"] = (FullScreen);
24749
24750/***/ }),
24751
vendor: 1,454 bytes, lines 24752-24776
24752/***/ "./node_modules/spectacle/es/components/image.js":
24753/*!*******************************************************!*\
24754  !*** ./node_modules/spectacle/es/components/image.js ***!
24755  \*******************************************************/
24756/*! exports provided: Image, FullSizeImage */
24757/***/ (function(module, __webpack_exports__, __webpack_require__) {
24758
24759"use strict";
24760__webpack_require__.r(__webpack_exports__);
24761/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return Image; });
24762/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullSizeImage", function() { return FullSizeImage; });
24763/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
24764/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js");
24765
24766
24767var Image = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('img')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"], styled_system__WEBPACK_IMPORTED_MODULE_1__["position"]));
24768var FullSizeImage = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])(Image);
24769FullSizeImage.defaultProps = {
24770  maxWidth: '100%',
24771  maxHeight: '100%'
24772};
24773
24774
24775/***/ }),
24776
vendor: 1,975 bytes, lines 24777-24821
24777/***/ "./node_modules/spectacle/es/components/internal-button.js":
24778/*!*****************************************************************!*\
24779  !*** ./node_modules/spectacle/es/components/internal-button.js ***!
24780  \*****************************************************************/
24781/*! exports provided: default */
24782/***/ (function(module, __webpack_exports__, __webpack_require__) {
24783
24784"use strict";
24785__webpack_require__.r(__webpack_exports__);
24786/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
24787/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/constants */ "./node_modules/spectacle/es/utils/constants.js");
24788function _templateObject() {
24789  var data = _taggedTemplateLiteral(["\n  background: #333;\n  border: 1px solid hsla(0, 0%, 0%, 0.4);\n  border-radius: 2px;\n  color: #fff;\n  box-shadow: inset 1px 1px 0 hsla(0, 0%, 100%, 0.1),\n    1px 1px 0 hsla(0, 0%, 0%, 0.1);\n  padding: 3px 20px;\n  font-size: 14px;\n  font-weight: bold;\n  font-family: ", ";\n\n  &:active {\n    box-shadow: inset 1px 1px 0 hsla(0, 0%, 0%, 0.25),\n      1px 1px 0 hsla(0, 0%, 0%, 0.1);\n  }\n"]);
24790
24791  _templateObject = function _templateObject() {
24792    return data;
24793  };
24794
24795  return data;
24796}
24797
24798function _taggedTemplateLiteral(strings, raw) {
24799  if (!raw) {
24800    raw = strings.slice(0);
24801  }
24802
24803  return Object.freeze(Object.defineProperties(strings, {
24804    raw: {
24805      value: Object.freeze(raw)
24806    }
24807  }));
24808}
24809
24810
24811
24812/**
24813 * This button is for internal controls like the presenter display.
24814 * It uses Formidable Spectacle-branded colors.
24815 */
24816
24817var InternalButton = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('button')(_templateObject(), _utils_constants__WEBPACK_IMPORTED_MODULE_1__["SYSTEM_FONT"]);
24818/* harmony default export */ __webpack_exports__["default"] = (InternalButton);
24819
24820/***/ }),
24821
vendor: 2,469 bytes, lines 24822-24852
24822/***/ "./node_modules/spectacle/es/components/layout.js":
24823/*!********************************************************!*\
24824  !*** ./node_modules/spectacle/es/components/layout.js ***!
24825  \********************************************************/
24826/*! exports provided: Box, FlexBox, Grid */
24827/***/ (function(module, __webpack_exports__, __webpack_require__) {
24828
24829"use strict";
24830__webpack_require__.r(__webpack_exports__);
24831/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return Box; });
24832/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FlexBox", function() { return FlexBox; });
24833/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return Grid; });
24834/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
24835/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js");
24836
24837
24838var Box = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('div')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"], styled_system__WEBPACK_IMPORTED_MODULE_1__["position"], styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"]));
24839var FlexBox = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('div')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["flexbox"], styled_system__WEBPACK_IMPORTED_MODULE_1__["position"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["color"]));
24840FlexBox.defaultProps = {
24841  alignItems: 'center',
24842  justifyContent: 'center',
24843  display: 'flex'
24844};
24845var Grid = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('div')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"], styled_system__WEBPACK_IMPORTED_MODULE_1__["grid"], styled_system__WEBPACK_IMPORTED_MODULE_1__["position"]));
24846Grid.defaultProps = {
24847  display: 'grid'
24848};
24849
24850
24851/***/ }),
24852
vendor: 13,691 bytes, lines 24853-25000
24853/***/ "./node_modules/spectacle/es/components/logo.js":
24854/*!******************************************************!*\
24855  !*** ./node_modules/spectacle/es/components/logo.js ***!
24856  \******************************************************/
24857/*! exports provided: default */
24858/***/ (function(module, __webpack_exports__, __webpack_require__) {
24859
24860"use strict";
24861__webpack_require__.r(__webpack_exports__);
24862/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SpectacleLogo; });
24863/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
24864/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
24865/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
24866/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
24867
24868
24869function SpectacleLogo(props) {
24870  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("svg", {
24871    xmlns: "http://www.w3.org/2000/svg",
24872    width: Math.floor(props.size * 1.012),
24873    height: props.size,
24874    viewBox: "0 0 601 595"
24875  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("title", null, "Spectacle"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", {
24876    id: "Finals",
24877    stroke: "none",
24878    strokeWidth: "1",
24879    fill: "none",
24880    fillRule: "evenodd"
24881  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", {
24882    id: "The-Good-Badges-for-OSS-usage",
24883    transform: "translate(-1006.000000, -337.000000)"
24884  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", {
24885    id: "Badge-Copy-4",
24886    transform: "translate(1006.666667, 327.000000)"
24887  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24888    d: "M342.276968,19.4007702 L538.247998,106.565184 C575.801346,123.268242 600,160.515702 600,201.616141 L600,413.57732 C600,454.677759 575.801346,491.925219 538.247998,508.628277 L342.276968,595.79269 C315.36338,607.763373 284.63662,607.763373 257.723032,595.79269 L61.7520017,508.628277 C24.1986538,491.925219 2.32856136e-14,454.677759 0,413.57732 L0,201.616141 C2.33883573e-14,160.515702 24.1986538,123.268242 61.7520017,106.565184 L257.723032,19.4007702 C284.63662,7.43008735 315.36338,7.43008735 342.276968,19.4007702 Z",
24889    id: "Polygon-Copy-4",
24890    fill: "#202020"
24891  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24892    d: "M332.268654,53.3025417 C311.655676,44.165094 288.140981,44.165094 267.528004,53.3025417 L76.380235,138.035705 C51.5383581,149.047766 35.5217047,173.667505 35.5217047,200.840733 L35.5217047,414.543463 C35.5217047,441.716691 51.5383581,466.336431 76.380235,477.348491 L267.528004,562.081654 C288.140981,571.219102 311.655676,571.219102 332.268654,562.081654 L523.416422,477.348491 C548.258299,466.336431 564.274953,441.716691 564.274953,414.543463 L564.274953,200.840733 C564.274953,173.667505 548.258299,149.047766 523.416422,138.035705 L332.268654,53.3025417 Z",
24893    id: "Polygon-Copy-5",
24894    stroke: "#FC6986",
24895    strokeWidth: "24.2467521",
24896    opacity: "0.499209449"
24897  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24898    d: "M337.398856,30.3681883 C313.590683,19.7787381 286.409317,19.7787381 262.601144,30.3681883 L66.6301133,117.532602 C33.409844,132.308384 12.0033426,165.25806 12.0033426,201.616141 L12.0033426,413.57732 C12.0033426,449.9354 33.409844,482.885076 66.6301133,497.660859 L262.601144,584.825272 C286.409317,595.414722 313.590683,595.414722 337.398856,584.825272 L533.369887,497.660859 C566.590156,482.885076 587.996657,449.9354 587.996657,413.57732 L587.996657,201.616141 C587.996657,165.25806 566.590156,132.308384 533.369887,117.532602 L337.398856,30.3681883 Z",
24899    id: "Polygon-Copy",
24900    stroke: "#FC6986",
24901    strokeWidth: "24.0066852"
24902  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", {
24903    id: "peacock",
24904    transform: "translate(130.000000, 145.000000)"
24905  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", {
24906    id: "Group-41"
24907  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24908    d: "M157.997195,216.513892 L50.113914,111.685631 C36.9081129,98.854247 38.4478205,77.1487901 53.3314404,66.3299245 C68.2150602,55.5097309 89.2138965,60.8288626 97.213107,77.4462524 L162.56147,213.195992 C163.953154,216.086954 160.294861,218.746188 157.997195,216.513892",
24909    id: "Fill-1",
24910    fill: "#F14E74"
24911  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24912    d: "M162.555456,213.170628 L97.0901287,77.4779906 C89.0763801,60.8685685 97.9452281,41.0169395 115.622789,35.9946062 C133.300351,30.9722728 151.201269,43.2180282 153.030415,61.5843374 L167.976813,211.630862 C168.295327,214.82659 163.949784,216.06159 162.555456,213.170628",
24913    id: "Fill-3",
24914    fill: "#FC6986"
24915  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24916    d: "M154.775373,221.155235 L17.5689228,160.054606 C0.774215205,152.575552 -5.21742807,131.664877 5.04905146,116.358181 C15.315531,101.050821 36.8535953,98.7813422 50.057414,111.614719 L157.924174,216.460907 C160.22118,218.693866 157.698174,222.456633 154.775373,221.155235",
24917    id: "Fill-5",
24918    fill: "#E13E65"
24919  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24920    d: "M4.00509006,118.137444 C4.74058129,116.629549 10.493669,105.879737 26.2614643,103.237103 C33.4148269,102.038622 43.6667684,104.383794 52.2309789,113.829552 L151.544102,210.171503 L152.259108,214.318713 L54.3264351,137.325095 C54.3264351,137.325095 38.7588678,125.12449 20.9537684,136.558199 L20.911476,136.512385 C18.9726339,137.716842 16.6947918,138.424643 14.2477801,138.424643 C7.23252865,138.424643 1.54618363,132.710444 1.54618363,125.662312 C1.54618363,122.844388 2.46604327,120.248896 4.00509006,118.137444",
24921    id: "Fill-8",
24922    fill: "#FC6986"
24923  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24924    d: "M51.445662,67.7016376 C52.6490129,66.5363554 61.7075158,58.4046108 77.4264105,61.3274441 C84.5573053,62.6527452 93.3970772,68.3735839 98.2402175,80.1890812 L158.827381,205.336412 L158.091229,209.480302 L92.2287497,102.992095 C92.2287497,102.992095 81.7395743,86.1861349 61.1207088,90.8280086 L61.0962585,90.7702425 C58.8646737,91.2383473 56.483083,91.1221511 54.1827731,90.2835462 C47.589124,87.8779522 44.184586,80.5569253 46.5780713,73.9317478 C47.5355977,71.2831376 49.2814807,69.1584065 51.445662,67.7016376",
24925    id: "Fill-10",
24926    fill: "#FF92AC"
24927  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24928    d: "M113.547092,36.7877285 C115.075565,36.1098065 126.366975,31.6080323 140.123899,39.7895753 C146.364671,43.4998871 152.704565,51.9284301 153.203484,64.6967366 L167.214162,203.152188 L165.103507,206.78747 L139.747893,84.0271425 C139.747893,84.0271425 135.656764,64.620379 114.70815,61.8469409 L114.704185,61.7845269 C112.448811,61.4518737 110.252911,60.5196478 108.380811,58.9353952 C103.014302,54.3971022 102.325729,46.3463629 106.842425,40.9535296 C108.648443,38.7975914 111.016156,37.4072204 113.547092,36.7877285",
24929    id: "Fill-12",
24930    fill: "#FF92AC"
24931  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24932    d: "M151.276404,53.9526349 L150.254778,187.165976 C150.254778,187.165976 154.309562,217.05032 159.359539,223.198097 L135.69496,212.686654 C126.754743,205.082108 129.101971,188.118122 129.101971,188.118122 L151.276404,53.9526349 Z",
24933    id: "Fill-14",
24934    fill: "#FF92AC"
24935  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24936    d: "M168.915836,224.707254 L168.915836,224.707254 C151.277263,224.707254 136.977807,210.340087 136.977807,192.617173 L155.552099,12.7699664 C156.26314,5.89048522 162.032088,0.663646505 168.915836,0.663646505 C175.798924,0.663646505 181.568532,5.89048522 182.279573,12.7699664 L200.853865,192.617173 C200.853865,210.340087 186.554409,224.707254 168.915836,224.707254",
24937    id: "Fill-16",
24938    fill: "#E13E65"
24939  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("polyline", {
24940    id: "Fill-19",
24941    fill: "#FF92AC",
24942    points: "159.624989 31.3611651 168.931299 47.8450952 178.284527 31.5716462"
24943  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24944    d: "M182.263846,14.0756137 C182.263846,21.4829578 179.448097,38.1116352 168.915968,38.1116352 C158.824606,38.1116352 155.56743,21.4829578 155.56743,14.0756137 C155.56743,6.6689336 161.543875,0.663912097 168.915968,0.663912097 C176.288062,0.663912097 182.263846,6.6689336 182.263846,14.0756137",
24945    id: "Fill-21",
24946    fill: "#FC6986"
24947  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24948    d: "M222.788685,35.994075 L222.788685,35.994075 C207.35196,31.608497 191.746065,40.3922685 186.819662,54.920118 L203.394317,156.089857 L241.320685,77.4787874 C249.334434,60.8687013 240.465586,41.0164083 222.788685,35.994075",
24949    id: "Fill-24",
24950    fill: "#FC6986"
24951  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24952    d: "M169.522798,201.453134 C168.427161,201.31569 151.604699,198.872249 152.015728,179.057803 L155.604635,89.921346 C156.096944,77.7174212 154.639178,65.5121685 151.287506,53.7703728 L136.968225,192.634835 C136.896196,193.331349 136.928576,194.013255 137.042237,194.669265 C137.411635,199.682303 139.575816,212.770647 151.963523,219.965518 C156.151792,222.397671 161.622711,224.640591 168.359757,224.697693 L168.361079,224.671798 C168.468132,224.675117 168.57188,224.687733 168.678933,224.687733 C175.076319,224.687733 180.262424,219.477494 180.262424,213.048854 C180.262424,206.907053 175.525015,201.888703 169.522798,201.453134",
24953    id: "Fill-26",
24954    fill: "#FC6986"
24955  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24956    d: "M140.85298,89.3432199 C140.85298,89.3432199 143.110998,103.144677 140.570811,118.648575 L143.110998,110.708056 L145.557349,91.8012683 L140.85298,89.3432199 Z",
24957    id: "Fill-28",
24958    fill: "#FF92AC"
24959  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24960    d: "M231.568785,40.9537952 C229.762768,38.797857 227.395054,37.407486 224.864119,36.7879941 C223.335645,36.110072 212.044236,31.6082978 198.287312,39.7891769 C193.774581,42.472978 189.22154,47.6360747 186.851183,55.1111446 L194.717569,103.130069 L198.663318,84.0274081 C198.663318,84.0274081 202.754446,64.6206446 223.70306,61.8478704 L223.707025,61.7847925 C225.962399,61.4521392 228.1583,60.5199134 230.030399,58.9363247 C235.397569,54.3973677 236.086142,46.3459645 231.568785,40.9537952",
24961    id: "Fill-30",
24962    fill: "#FF92AC"
24963  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24964    d: "M285.080233,66.3295925 L285.080233,66.3295925 C270.196613,55.5093989 249.197116,60.8291946 241.198566,77.4459204 L203.380572,156.005864 L208.708092,188.523547 C208.708092,188.523547 208.731882,188.680246 208.766244,188.964428 L288.297759,111.685963 C301.50356,98.8539151 299.963192,77.149122 285.080233,66.3295925",
24965    id: "Fill-32",
24966    fill: "#F14E74"
24967  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24968    d: "M291.833007,73.9316151 C290.876142,71.2836688 289.129598,69.1589376 286.966077,67.7015048 C285.762065,66.5362226 276.703563,58.404478 260.984668,61.3279753 C253.853773,62.6532763 245.014001,68.3734511 240.171522,80.1889484 L203.402247,156.138128 L205.477878,168.804846 L246.182329,102.992626 C246.182329,102.992626 256.671504,86.1860022 277.29037,90.8278758 L277.31482,90.7701097 C279.547065,91.2382145 281.927995,91.1226823 284.228305,90.2834134 C290.822615,87.8778194 294.227153,80.5574565 291.833007,73.9316151",
24969    id: "Fill-34",
24970    fill: "#FF92AC"
24971  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24972    d: "M333.361961,116.358181 L333.361961,116.357517 C323.095481,101.050821 301.557417,98.7813422 288.354259,111.614719 L208.767236,188.972861 C209.091698,191.673926 210.37699,205.93884 202.348704,212.821641 L320.842089,160.054606 C337.637458,152.575552 343.62844,131.665541 333.361961,116.358181",
24973    id: "Fill-36",
24974    fill: "#E13E65"
24975  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", {
24976    d: "M334.40612,118.137444 C333.670629,116.629549 327.917542,105.879737 312.149746,103.237767 C304.996384,102.037958 294.744442,104.383794 286.180232,113.830216 L208.765319,188.958054 C208.892857,190.015108 209.172384,192.904078 208.964887,196.434452 L284.085436,137.325095 C284.085436,137.325095 299.652343,125.123826 317.457442,136.558199 L317.499735,136.512385 C319.439237,137.717506 321.716419,138.424643 324.164091,138.424643 C331.178682,138.424643 336.865688,132.710444 336.865688,125.662312 C336.865688,122.844388 335.945167,120.248896 334.40612,118.137444",
24977    id: "Fill-39",
24978    fill: "#FC6986"
24979  }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("text", {
24980    id: "SPECTACLE",
24981    fontFamily: "Helvetica-Bold, Helvetica",
24982    fontSize: "52.0144847",
24983    fontWeight: "bold",
24984    "line-spacing": "40.0111421",
24985    letterSpacing: "3.85292292",
24986    fill: "#FC6986"
24987  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("tspan", {
24988    x: "125.5",
24989    y: "467"
24990  }, "SPECTACLE"))))));
24991}
24992SpectacleLogo.propTypes = {
24993  size: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number
24994};
24995SpectacleLogo.defaultProps = {
24996  size: 100
24997};
24998
24999/***/ }),
25000
vendor: 4,350 bytes, lines 25001-25107
25001/***/ "./node_modules/spectacle/es/components/markdown.js":
25002/*!**********************************************************!*\
25003  !*** ./node_modules/spectacle/es/components/markdown.js ***!
25004  \**********************************************************/
25005/*! exports provided: default */
25006/***/ (function(module, __webpack_exports__, __webpack_require__) {
25007
25008"use strict";
25009__webpack_require__.r(__webpack_exports__);
25010/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
25011/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
25012/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
25013/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
25014/* harmony import */ var marksy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! marksy */ "./node_modules/marksy/lib/index.js");
25015/* harmony import */ var marksy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(marksy__WEBPACK_IMPORTED_MODULE_2__);
25016/* harmony import */ var _utils_mdx_component_mapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/mdx-component-mapper */ "./node_modules/spectacle/es/utils/mdx-component-mapper.js");
25017/* harmony import */ var _utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/indent-normalizer */ "./node_modules/spectacle/es/utils/indent-normalizer.js");
25018/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../index */ "./node_modules/spectacle/es/index.js");
25019function ownKeys(object, enumerableOnly) {
25020  var keys = Object.keys(object);
25021
25022  if (Object.getOwnPropertySymbols) {
25023    var symbols = Object.getOwnPropertySymbols(object);
25024    if (enumerableOnly) symbols = symbols.filter(function (sym) {
25025      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
25026    });
25027    keys.push.apply(keys, symbols);
25028  }
25029
25030  return keys;
25031}
25032
25033function _objectSpread(target) {
25034  for (var i = 1; i < arguments.length; i++) {
25035    var source = arguments[i] != null ? arguments[i] : {};
25036
25037    if (i % 2) {
25038      ownKeys(Object(source), true).forEach(function (key) {
25039        _defineProperty(target, key, source[key]);
25040      });
25041    } else if (Object.getOwnPropertyDescriptors) {
25042      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
25043    } else {
25044      ownKeys(Object(source)).forEach(function (key) {
25045        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
25046      });
25047    }
25048  }
25049
25050  return target;
25051}
25052
25053function _defineProperty(obj, key, value) {
25054  if (key in obj) {
25055    Object.defineProperty(obj, key, {
25056      value: value,
25057      enumerable: true,
25058      configurable: true,
25059      writable: true
25060    });
25061  } else {
25062    obj[key] = value;
25063  }
25064
25065  return obj;
25066}
25067
25068
25069
25070
25071
25072
25073
25074
25075var _CodePane = function _CodePane(_ref) {
25076  var language = _ref.language,
25077      code = _ref.code;
25078  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_index__WEBPACK_IMPORTED_MODULE_5__["CodePane"], {
25079    autoFillHeight: true,
25080    language: language
25081  }, code);
25082};
25083
25084_CodePane.propTypes = {
25085  code: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,
25086  language: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired
25087};
25088var compile = marksy__WEBPACK_IMPORTED_MODULE_2___default()({
25089  createElement: react__WEBPACK_IMPORTED_MODULE_0__["createElement"],
25090  elements: _objectSpread({}, _utils_mdx_component_mapper__WEBPACK_IMPORTED_MODULE_3__["default"], {
25091    codeblock: _CodePane,
25092    code: _CodePane
25093  })
25094});
25095
25096var Markdown = function Markdown(props) {
25097  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, compile(Object(_utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_4__["default"])(props.children)).tree);
25098};
25099
25100Markdown.propTypes = {
25101  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,
25102  containsSlides: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool
25103};
25104/* harmony default export */ __webpack_exports__["default"] = (Markdown);
25105
25106/***/ }),
25107
vendor: 1,734 bytes, lines 25108-25144
25108/***/ "./node_modules/spectacle/es/components/notes.js":
25109/*!*******************************************************!*\
25110  !*** ./node_modules/spectacle/es/components/notes.js ***!
25111  \*******************************************************/
25112/*! exports provided: default */
25113/***/ (function(module, __webpack_exports__, __webpack_require__) {
25114
25115"use strict";
25116__webpack_require__.r(__webpack_exports__);
25117/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
25118/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
25119/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
25120/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
25121/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js");
25122
25123
25124
25125
25126var Notes = function Notes(_ref) {
25127  var children = _ref.children;
25128
25129  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["SlideContext"]),
25130      setNotes = _React$useContext.actions.setNotes;
25131
25132  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
25133    setNotes(children);
25134  }, [setNotes, children]);
25135  return null;
25136};
25137
25138Notes.propTypes = {
25139  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired
25140};
25141/* harmony default export */ __webpack_exports__["default"] = (Notes);
25142
25143/***/ }),
25144
vendor: 4,012 bytes, lines 25145-25249
25145/***/ "./node_modules/spectacle/es/components/progress.js":
25146/*!**********************************************************!*\
25147  !*** ./node_modules/spectacle/es/components/progress.js ***!
25148  \**********************************************************/
25149/*! exports provided: Circle, default */
25150/***/ (function(module, __webpack_exports__, __webpack_require__) {
25151
25152"use strict";
25153__webpack_require__.r(__webpack_exports__);
25154/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Circle", function() { return Circle; });
25155/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
25156/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
25157/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
25158/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
25159/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
25160/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js");
25161function _templateObject2() {
25162  var data = _taggedTemplateLiteral(["\n  @media print {\n    display: none;\n  }\n"]);
25163
25164  _templateObject2 = function _templateObject2() {
25165    return data;
25166  };
25167
25168  return data;
25169}
25170
25171function _templateObject() {
25172  var data = _taggedTemplateLiteral(["\n  width: ", "px;\n  height: ", "px;\n  display: inline-block;\n  border: 1px solid ", ";\n  background: ", ";\n  margin: ", "px;\n  border-radius: 50%;\n  pointer-events: all;\n  cursor: pointer;\n"]);
25173
25174  _templateObject = function _templateObject() {
25175    return data;
25176  };
25177
25178  return data;
25179}
25180
25181function _taggedTemplateLiteral(strings, raw) {
25182  if (!raw) {
25183    raw = strings.slice(0);
25184  }
25185
25186  return Object.freeze(Object.defineProperties(strings, {
25187    raw: {
25188      value: Object.freeze(raw)
25189    }
25190  }));
25191}
25192
25193
25194
25195
25196
25197var Circle = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject(), function (_ref) {
25198  var size = _ref.size;
25199  return size;
25200}, function (_ref2) {
25201  var size = _ref2.size;
25202  return size;
25203}, function (_ref3) {
25204  var color = _ref3.color;
25205  return color;
25206}, function (_ref4) {
25207  var color = _ref4.color,
25208      active = _ref4.active;
25209  return active ? color : 'transparent';
25210}, function (_ref5) {
25211  var size = _ref5.size;
25212  return size / 3;
25213});
25214var Container = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject2());
25215
25216var Progress = function Progress(props) {
25217  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0__["useContext"](_hooks_use_deck__WEBPACK_IMPORTED_MODULE_3__["DeckContext"]),
25218      numberOfSlides = _React$useContext.numberOfSlides,
25219      state = _React$useContext.state,
25220      goToSlide = _React$useContext.goToSlide;
25221
25222  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](Container, {
25223    className: "spectacle-progress-indicator"
25224  }, Array(numberOfSlides).fill(0).map(function (_, idx) {
25225    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](Circle, {
25226      key: "progress-circle-".concat(idx),
25227      color: props.color,
25228      active: state.currentSlide === idx,
25229      size: props.size,
25230      onClick: function onClick() {
25231        return goToSlide(idx);
25232      },
25233      "data-testid": "Progress Circle"
25234    });
25235  }));
25236};
25237
25238Progress.propTypes = {
25239  color: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
25240  size: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number
25241};
25242Progress.defaultProps = {
25243  color: '#fff',
25244  size: 10
25245};
25246/* harmony default export */ __webpack_exports__["default"] = (Progress);
25247
25248/***/ }),
25249
vendor: 14,752 bytes, lines 25250-25613
25250/***/ "./node_modules/spectacle/es/components/slide.js":
25251/*!*******************************************************!*\
25252  !*** ./node_modules/spectacle/es/components/slide.js ***!
25253  \*******************************************************/
25254/*! exports provided: default */
25255/***/ (function(module, __webpack_exports__, __webpack_require__) {
25256
25257"use strict";
25258__webpack_require__.r(__webpack_exports__);
25259/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
25260/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
25261/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
25262/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
25263/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js");
25264/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
25265/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js");
25266/* harmony import */ var _hooks_use_autofill_height__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/use-autofill-height */ "./node_modules/spectacle/es/hooks/use-autofill-height.js");
25267/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js");
25268function ownKeys(object, enumerableOnly) {
25269  var keys = Object.keys(object);
25270
25271  if (Object.getOwnPropertySymbols) {
25272    var symbols = Object.getOwnPropertySymbols(object);
25273    if (enumerableOnly) symbols = symbols.filter(function (sym) {
25274      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
25275    });
25276    keys.push.apply(keys, symbols);
25277  }
25278
25279  return keys;
25280}
25281
25282function _objectSpread(target) {
25283  for (var i = 1; i < arguments.length; i++) {
25284    var source = arguments[i] != null ? arguments[i] : {};
25285
25286    if (i % 2) {
25287      ownKeys(Object(source), true).forEach(function (key) {
25288        _defineProperty(target, key, source[key]);
25289      });
25290    } else if (Object.getOwnPropertyDescriptors) {
25291      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
25292    } else {
25293      ownKeys(Object(source)).forEach(function (key) {
25294        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
25295      });
25296    }
25297  }
25298
25299  return target;
25300}
25301
25302function _defineProperty(obj, key, value) {
25303  if (key in obj) {
25304    Object.defineProperty(obj, key, {
25305      value: value,
25306      enumerable: true,
25307      configurable: true,
25308      writable: true
25309    });
25310  } else {
25311    obj[key] = value;
25312  }
25313
25314  return obj;
25315}
25316
25317function _slicedToArray(arr, i) {
25318  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
25319}
25320
25321function _nonIterableRest() {
25322  throw new TypeError("Invalid attempt to destructure non-iterable instance");
25323}
25324
25325function _iterableToArrayLimit(arr, i) {
25326  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
25327    return;
25328  }
25329
25330  var _arr = [];
25331  var _n = true;
25332  var _d = false;
25333  var _e = undefined;
25334
25335  try {
25336    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
25337      _arr.push(_s.value);
25338
25339      if (i && _arr.length === i) break;
25340    }
25341  } catch (err) {
25342    _d = true;
25343    _e = err;
25344  } finally {
25345    try {
25346      if (!_n && _i["return"] != null) _i["return"]();
25347    } finally {
25348      if (_d) throw _e;
25349    }
25350  }
25351
25352  return _arr;
25353}
25354
25355function _arrayWithHoles(arr) {
25356  if (Array.isArray(arr)) return arr;
25357}
25358
25359function _templateObject5() {
25360  var data = _taggedTemplateLiteral(["\n  flex: 1;\n"]);
25361
25362  _templateObject5 = function _templateObject5() {
25363    return data;
25364  };
25365
25366  return data;
25367}
25368
25369function _templateObject4() {
25370  var data = _taggedTemplateLiteral(["\n        position: absolute;\n        top: 0;\n        left: 0;\n        right: 0;\n        bottom: 0;\n        pointer-events: none;\n      "]);
25371
25372  _templateObject4 = function _templateObject4() {
25373    return data;
25374  };
25375
25376  return data;
25377}
25378
25379function _templateObject3() {
25380  var data = _taggedTemplateLiteral(["\n        flex: 0 1 auto;\n        > div {\n          position: relative;\n        }\n      "]);
25381
25382  _templateObject3 = function _templateObject3() {
25383    return data;
25384  };
25385
25386  return data;
25387}
25388
25389function _templateObject2() {
25390  var data = _taggedTemplateLiteral(["\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    > div {\n      flex: 1;\n      display: flex;\n      flex-direction: column;\n      justify-content: flex-start;\n    }\n  "]);
25391
25392  _templateObject2 = function _templateObject2() {
25393    return data;
25394  };
25395
25396  return data;
25397}
25398
25399function _templateObject() {
25400  var data = _taggedTemplateLiteral(["\n  ", ";\n  width: ", "px;\n  height: ", "px;\n  overflow: hidden;\n  display: flex;\n  @media print {\n    page-break-before: always;\n    height: 100vh;\n    width: 100vw;\n  }\n  &:before {\n    ", ";\n    content: ' ';\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: -1;\n    opacity: ", ";\n  }\n"]);
25401
25402  _templateObject = function _templateObject() {
25403    return data;
25404  };
25405
25406  return data;
25407}
25408
25409function _taggedTemplateLiteral(strings, raw) {
25410  if (!raw) {
25411    raw = strings.slice(0);
25412  }
25413
25414  return Object.freeze(Object.defineProperties(strings, {
25415    raw: {
25416      value: Object.freeze(raw)
25417    }
25418  }));
25419}
25420
25421
25422
25423
25424
25425
25426
25427
25428var SlideContainer = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["default"])('div')(_templateObject(), styled_system__WEBPACK_IMPORTED_MODULE_4__["color"], function (_ref) {
25429  var theme = _ref.theme;
25430  return theme.size.width || 1366;
25431}, function (_ref2) {
25432  var theme = _ref2.theme;
25433  return theme.size.height || 768;
25434}, styled_system__WEBPACK_IMPORTED_MODULE_4__["background"], function (_ref3) {
25435  var backgroundOpacity = _ref3.backgroundOpacity;
25436  return backgroundOpacity;
25437});
25438var SlideWrapper = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["default"])('div')(styled_system__WEBPACK_IMPORTED_MODULE_4__["color"], styled_system__WEBPACK_IMPORTED_MODULE_4__["space"], Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject2()));
25439var TemplateWrapper = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["default"])('div')(function (_ref4) {
25440  var autoLayout = _ref4.autoLayout;
25441  return autoLayout ? Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject3()) : Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject4());
25442});
25443var InnerSlideRef = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["default"])('div')(_templateObject5());
25444/**
25445 * Slide component wraps anything going in a slide and maintains
25446 * the slides' internal state through useSlide.
25447 */
25448
25449var Slide = function Slide(props) {
25450  var children = props.children,
25451      slideNum = props.slideNum,
25452      backgroundColor = props.backgroundColor,
25453      backgroundImage = props.backgroundImage,
25454      backgroundOpacity = props.backgroundOpacity,
25455      backgroundPosition = props.backgroundPosition,
25456      backgroundRepeat = props.backgroundRepeat,
25457      backgroundSize = props.backgroundSize,
25458      textColor = props.textColor,
25459      template = props.template,
25460      scaleRatio = props.scaleRatio;
25461  var theme = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(styled_components__WEBPACK_IMPORTED_MODULE_3__["ThemeContext"]);
25462
25463  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_6__["DeckContext"]),
25464      state = _React$useContext.state;
25465
25466  var _ref5 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["SlideNextElementContext"]) || {},
25467      showNextElement = _ref5.showNextElement;
25468
25469  var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(scaleRatio || 1),
25470      _React$useState2 = _slicedToArray(_React$useState, 2),
25471      ratio = _React$useState2[0],
25472      setRatio = _React$useState2[1];
25473
25474  var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState({
25475    x: 0,
25476    y: 0
25477  }),
25478      _React$useState4 = _slicedToArray(_React$useState3, 2),
25479      origin = _React$useState4[0],
25480      setOrigin = _React$useState4[1];
25481
25482  var slideRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null);
25483  var slideWrapperRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null);
25484  var contentRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null);
25485  var templateRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null);
25486  var slideWidth = theme.size.width || 1366;
25487  var slideHeight = theme.size.height || 768;
25488  var transformForWindowSize = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function () {
25489    var clientWidth = slideRef.current.parentElement.clientWidth;
25490    var clientHeight = slideRef.current.parentElement.clientHeight;
25491    var useVerticalRatio = clientWidth / clientHeight > slideWidth / slideHeight;
25492    var newRatio = useVerticalRatio ? clientHeight / slideHeight : clientWidth / slideWidth;
25493    var clientRects = slideRef.current.getClientRects();
25494
25495    if (!clientRects || clientRects.length === 0) {
25496      return;
25497    }
25498
25499    setRatio(newRatio);
25500    setOrigin({
25501      x: useVerticalRatio ? "".concat((clientWidth - clientRects[0].width) / 2 / (1 - newRatio), "px") : 'left',
25502      y: useVerticalRatio ? 'top' : "".concat((clientHeight - clientRects[0].height) / 2 / (1 - newRatio), "px")
25503    });
25504  }, [slideHeight, slideWidth]);
25505  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
25506    var clientWidth = slideRef.current.parentElement.clientWidth;
25507    var clientHeight = slideRef.current.parentElement.clientHeight;
25508    var useVerticalRatio = clientWidth / clientHeight > slideWidth / slideHeight;
25509    var clientRects = slideRef.current.getClientRects();
25510
25511    if (!clientRects || clientRects.length === 0) {
25512      return;
25513    }
25514
25515    setOrigin({
25516      x: useVerticalRatio ? "".concat((clientWidth - clientRects[0].width) / 2 / (1 - ratio), "px") : 'left',
25517      y: useVerticalRatio ? 'top' : "".concat((clientHeight - clientRects[0].height) / 2 / (1 - ratio), "px")
25518    });
25519  }, [ratio, slideHeight, slideWidth, theme]);
25520  react__WEBPACK_IMPORTED_MODULE_0___default.a.useLayoutEffect(function () {
25521    if (!isNaN(scaleRatio)) {
25522      return;
25523    }
25524
25525    transformForWindowSize();
25526    window.addEventListener('resize', transformForWindowSize); // eslint-disable-next-line consistent-return
25527
25528    return function () {
25529      return window.removeEventListener('resize', transformForWindowSize);
25530    };
25531  }, [transformForWindowSize, scaleRatio]);
25532  var transforms = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () {
25533    return state.exportMode ? {} : {
25534      transform: "scale(".concat(ratio, ")"),
25535      transformOrigin: "".concat(origin.x, " ").concat(origin.y),
25536      position: 'absolute',
25537      top: 0,
25538      left: 0
25539    };
25540  }, [state.exportMode, origin, ratio]);
25541  var value = Object(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["default"])(slideNum);
25542  var numberOfSlides = value.state.numberOfSlides;
25543  Object(_hooks_use_autofill_height__WEBPACK_IMPORTED_MODULE_5__["default"])({
25544    slideWrapperRef: slideWrapperRef,
25545    templateRef: templateRef,
25546    contentRef: contentRef,
25547    slideHeight: slideHeight
25548  });
25549
25550  if (showNextElement) {
25551    // Next slide preview in the presenter mode might need to show the next animation
25552    value = _objectSpread({}, value, {
25553      state: _objectSpread({}, value.state, {
25554        currentSlideElement: value.state.currentSlideElement + 1
25555      })
25556    });
25557  }
25558
25559  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideContainer, {
25560    ref: slideRef,
25561    backgroundColor: state.printMode ? '#ffffff' : backgroundColor,
25562    backgroundImage: state.printMode ? undefined : backgroundImage,
25563    backgroundOpacity: backgroundOpacity,
25564    backgroundPosition: backgroundPosition,
25565    backgroundRepeat: backgroundRepeat,
25566    backgroundSize: backgroundSize,
25567    style: transforms
25568  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(TemplateWrapper, {
25569    ref: templateRef
25570  }, typeof template === 'function' && template({
25571    slideNumber: slideNum,
25572    numberOfSlides: numberOfSlides
25573  })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideWrapper, {
25574    ref: slideWrapperRef,
25575    padding: 2,
25576    color: textColor
25577  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["SlideContext"].Provider, {
25578    value: value
25579  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(InnerSlideRef, {
25580    ref: contentRef
25581  }, children))));
25582};
25583
25584Slide.propTypes = {
25585  backgroundColor: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
25586  backgroundImage: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
25587  backgroundOpacity: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number,
25588  backgroundPosition: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
25589  backgroundRepeat: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
25590  backgroundSize: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
25591  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired,
25592  scaleRatio: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number,
25593  slideNum: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number,
25594  template: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,
25595  textColor: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,
25596  transitionEffect: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({
25597    from: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object,
25598    enter: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object,
25599    leave: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object
25600  }), prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOf(['fade', 'slide', 'none'])])
25601};
25602Slide.defaultProps = {
25603  textColor: 'primary',
25604  backgroundColor: 'tertiary',
25605  backgroundOpacity: 1,
25606  backgroundPosition: 'center',
25607  backgroundRepeat: 'no-repeat',
25608  backgroundSize: 'cover'
25609};
25610/* harmony default export */ __webpack_exports__["default"] = (Slide);
25611
25612/***/ }),
25613
vendor: 1,835 bytes, lines 25614-25651
25614/***/ "./node_modules/spectacle/es/components/stepper.js":
25615/*!*********************************************************!*\
25616  !*** ./node_modules/spectacle/es/components/stepper.js ***!
25617  \*********************************************************/
25618/*! exports provided: default */
25619/***/ (function(module, __webpack_exports__, __webpack_require__) {
25620
25621"use strict";
25622__webpack_require__.r(__webpack_exports__);
25623/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
25624/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
25625/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
25626/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
25627/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js");
25628
25629
25630
25631
25632var Stepper = function Stepper(_ref) {
25633  var render = _ref.children,
25634      values = _ref.values,
25635      defaultValue = _ref.defaultValue;
25636
25637  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0__["useContext"](_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["SlideContext"]),
25638      step = _React$useContext.state.currentSlideElement;
25639
25640  var value = step === -1 ? defaultValue : values[step];
25641  return render(value, step);
25642};
25643
25644Stepper.propTypes = {
25645  values: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.array.isRequired,
25646  defaultValue: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.array
25647};
25648/* harmony default export */ __webpack_exports__["default"] = (Stepper);
25649
25650/***/ }),
25651
vendor: 4,266 bytes, lines 25652-25716
25652/***/ "./node_modules/spectacle/es/components/table.js":
25653/*!*******************************************************!*\
25654  !*** ./node_modules/spectacle/es/components/table.js ***!
25655  \*******************************************************/
25656/*! exports provided: Table, TableCell, TableRow, TableHeader, TableBody */
25657/***/ (function(module, __webpack_exports__, __webpack_require__) {
25658
25659"use strict";
25660__webpack_require__.r(__webpack_exports__);
25661/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Table", function() { return Table; });
25662/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TableCell", function() { return TableCell; });
25663/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TableRow", function() { return TableRow; });
25664/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TableHeader", function() { return TableHeader; });
25665/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TableBody", function() { return TableBody; });
25666/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
25667/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js");
25668
25669
25670var Table = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('table')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"]));
25671Table.defaultProps = {
25672  color: 'primary',
25673  fontFamily: 'text',
25674  fontSize: 'text',
25675  textAlign: 'left',
25676  margin: 'listMargin',
25677  width: 1
25678};
25679var TableHeader = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('thead')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"]));
25680TableHeader.defaultProps = {
25681  color: 'primary',
25682  fontFamily: 'text',
25683  fontSize: 'text',
25684  fontWeight: 'bold',
25685  textAlign: 'left',
25686  margin: 'listMargin'
25687};
25688var TableBody = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"]));
25689TableBody.defaultProps = {
25690  color: 'primary',
25691  fontFamily: 'text',
25692  fontSize: 'text',
25693  textAlign: 'left',
25694  margin: 'listMargin',
25695  width: 1
25696};
25697var TableRow = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('tr')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"]));
25698TableRow.defaultProps = {
25699  color: 'primary',
25700  fontFamily: 'text',
25701  fontSize: 'text',
25702  textAlign: 'left',
25703  margin: 'listMargin'
25704};
25705var TableCell = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('td')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"]));
25706TableCell.defaultProps = {
25707  color: 'primary',
25708  fontFamily: 'text',
25709  fontSize: 'text',
25710  textAlign: 'left',
25711  margin: 'listMargin'
25712};
25713
25714
25715/***/ }),
25716
vendor: 6,780 bytes, lines 25717-25877
25717/***/ "./node_modules/spectacle/es/components/typography.js":
25718/*!************************************************************!*\
25719  !*** ./node_modules/spectacle/es/components/typography.js ***!
25720  \************************************************************/
25721/*! exports provided: Text, Heading, Quote, OrderedList, UnorderedList, ListItem, Link, CodeSpan */
25722/***/ (function(module, __webpack_exports__, __webpack_require__) {
25723
25724"use strict";
25725__webpack_require__.r(__webpack_exports__);
25726/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Text", function() { return Text; });
25727/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Heading", function() { return Heading; });
25728/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Quote", function() { return Quote; });
25729/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OrderedList", function() { return OrderedList; });
25730/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnorderedList", function() { return UnorderedList; });
25731/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ListItem", function() { return ListItem; });
25732/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Link", function() { return Link; });
25733/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CodeSpan", function() { return CodeSpan; });
25734/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
25735/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js");
25736function _templateObject() {
25737  var data = _taggedTemplateLiteral(["\n  border-left: 1px solid\n    ", ";\n\n  div {\n    margin: 0;\n  }\n"]);
25738
25739  _templateObject = function _templateObject() {
25740    return data;
25741  };
25742
25743  return data;
25744}
25745
25746function _taggedTemplateLiteral(strings, raw) {
25747  if (!raw) {
25748    raw = strings.slice(0);
25749  }
25750
25751  return Object.freeze(Object.defineProperties(strings, {
25752    raw: {
25753      value: Object.freeze(raw)
25754    }
25755  }));
25756}
25757
25758function ownKeys(object, enumerableOnly) {
25759  var keys = Object.keys(object);
25760
25761  if (Object.getOwnPropertySymbols) {
25762    var symbols = Object.getOwnPropertySymbols(object);
25763    if (enumerableOnly) symbols = symbols.filter(function (sym) {
25764      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
25765    });
25766    keys.push.apply(keys, symbols);
25767  }
25768
25769  return keys;
25770}
25771
25772function _objectSpread(target) {
25773  for (var i = 1; i < arguments.length; i++) {
25774    var source = arguments[i] != null ? arguments[i] : {};
25775
25776    if (i % 2) {
25777      ownKeys(Object(source), true).forEach(function (key) {
25778        _defineProperty(target, key, source[key]);
25779      });
25780    } else if (Object.getOwnPropertyDescriptors) {
25781      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
25782    } else {
25783      ownKeys(Object(source)).forEach(function (key) {
25784        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
25785      });
25786    }
25787  }
25788
25789  return target;
25790}
25791
25792function _defineProperty(obj, key, value) {
25793  if (key in obj) {
25794    Object.defineProperty(obj, key, {
25795      value: value,
25796      enumerable: true,
25797      configurable: true,
25798      writable: true
25799    });
25800  } else {
25801    obj[key] = value;
25802  }
25803
25804  return obj;
25805}
25806
25807
25808
25809var decoration = Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["system"])({
25810  textDecoration: true
25811});
25812var Text = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('div')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"]));
25813Text.defaultProps = {
25814  color: 'primary',
25815  fontFamily: 'text',
25816  fontSize: 'text',
25817  textAlign: 'left',
25818  padding: 0,
25819  margin: 0
25820};
25821var CodeSpan = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('code')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"]));
25822CodeSpan.defaultProps = {
25823  fontFamily: 'monospace',
25824  fontSize: 'text'
25825};
25826var Link = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('a')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], decoration));
25827Link.defaultProps = _objectSpread({}, Text.defaultProps, {
25828  textDecoration: 'underline',
25829  color: 'quaternary'
25830});
25831var Heading = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])(Text)({});
25832Heading.defaultProps = {
25833  color: 'secondary',
25834  fontFamily: 'header',
25835  fontSize: 'h1',
25836  fontWeight: 'bold',
25837  textAlign: 'center',
25838  margin: 1
25839};
25840var Quote = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])(Text)(_templateObject(), function (_ref) {
25841  var theme = _ref.theme,
25842      borderColor = _ref.borderColor;
25843  return borderColor || theme.colors.secondary;
25844});
25845Quote.defaultProps = {
25846  color: 'primary',
25847  fontFamily: 'text',
25848  fontSize: 'text',
25849  textAlign: 'left',
25850  fontStyle: 'italic',
25851  padding: '16px 0 16px 8px',
25852  margin: 0
25853};
25854var OrderedList = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('ol')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"]));
25855OrderedList.defaultProps = {
25856  color: 'primary',
25857  fontFamily: 'text',
25858  fontSize: 'text',
25859  textAlign: 'left',
25860  margin: 0
25861};
25862var UnorderedList = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('ul')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"]));
25863UnorderedList.defaultProps = {
25864  color: 'primary',
25865  fontFamily: 'text',
25866  fontSize: 'text',
25867  textAlign: 'left',
25868  margin: 0
25869};
25870var ListItem = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('li')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"]));
25871ListItem.defaultProps = {
25872  margin: 0
25873};
25874
25875
25876/***/ }),
25877
vendor: 3,400 bytes, lines 25878-25959
25878/***/ "./node_modules/spectacle/es/hooks/use-autofill-height.js":
25879/*!****************************************************************!*\
25880  !*** ./node_modules/spectacle/es/hooks/use-autofill-height.js ***!
25881  \****************************************************************/
25882/*! exports provided: default */
25883/***/ (function(module, __webpack_exports__, __webpack_require__) {
25884
25885"use strict";
25886__webpack_require__.r(__webpack_exports__);
25887/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return useAutofillHeight; });
25888/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
25889/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
25890
25891
25892var getNodeFullHeight = function getNodeFullHeight(node) {
25893  var style = getComputedStyle(node);
25894  var nextSiblingMarginTop = 0;
25895
25896  if (node.nextSibling) {
25897    nextSiblingMarginTop = parseFloat(getComputedStyle(node.nextSibling).marginTop);
25898  }
25899
25900  var height = node.offsetHeight + parseFloat(style.marginTop) - nextSiblingMarginTop + parseFloat(style.marginBottom);
25901  return height;
25902};
25903
25904var isCurrentNodeAutoFill = function isCurrentNodeAutoFill(current) {
25905  return current.classList.contains('spectacle-auto-height-fill') || current.tagName.toLowerCase().includes('pre') && current.childNodes && current.childNodes[0].classList.contains('spectacle-auto-height-fill');
25906};
25907
25908function useAutofillHeight(_ref) {
25909  var slideWrapperRef = _ref.slideWrapperRef,
25910      contentRef = _ref.contentRef,
25911      templateRef = _ref.templateRef,
25912      slideHeight = _ref.slideHeight;
25913  react__WEBPACK_IMPORTED_MODULE_0__["useLayoutEffect"](function () {
25914    if (!contentRef.current.hasChildNodes()) {
25915      return;
25916    }
25917
25918    var childNodes = [].slice.call(contentRef.current.childNodes);
25919    var metrics = childNodes.reduce(function (memo, current) {
25920      var currentNodeIsAutoFill = isCurrentNodeAutoFill(current);
25921      var nodeHeight = currentNodeIsAutoFill ? 0 : getNodeFullHeight(current);
25922      return {
25923        totalHeight: nodeHeight + memo.totalHeight,
25924        numberAutoFills: currentNodeIsAutoFill ? memo.numberAutoFills + 1 : memo.numberAutoFills
25925      };
25926    }, {
25927      totalHeight: 0,
25928      autoFillsHeight: 0,
25929      numberAutoFills: 0
25930    });
25931
25932    if (templateRef.current.hasChildNodes()) {
25933      var templateChildNodes = [].slice.call(templateRef.current.childNodes);
25934      metrics.templateHeight = templateChildNodes.reduce(function (memo, current) {
25935        return memo + getNodeFullHeight(current);
25936      }, 0);
25937    } else {
25938      metrics.templateHeight = 0;
25939    }
25940
25941    var slideWrapperStyle = getComputedStyle(slideWrapperRef.current);
25942    var totalSlideSpace = slideHeight - (parseFloat(slideWrapperStyle.paddingTop) + parseFloat(slideWrapperStyle.paddingBottom));
25943    var emptySpace = totalSlideSpace - (metrics.totalHeight + metrics.templateHeight);
25944    childNodes.forEach(function (node) {
25945      if (!isCurrentNodeAutoFill(node)) {
25946        return;
25947      }
25948
25949      if (node.childNodes[0] && node.childNodes[0].tagName.toLowerCase() === 'pre') {
25950        node = node.childNodes[0];
25951      }
25952
25953      node.style.maxHeight = "".concat(emptySpace / metrics.numberAutoFills, "px");
25954    });
25955  }, [slideWrapperRef, contentRef, templateRef, slideHeight]);
25956}
25957
25958/***/ }),
25959
vendor: 5,227 bytes, lines 25960-26133
25960/***/ "./node_modules/spectacle/es/hooks/use-deck.js":
25961/*!*****************************************************!*\
25962  !*** ./node_modules/spectacle/es/hooks/use-deck.js ***!
25963  \*****************************************************/
25964/*! exports provided: DeckContext, default */
25965/***/ (function(module, __webpack_exports__, __webpack_require__) {
25966
25967"use strict";
25968__webpack_require__.r(__webpack_exports__);
25969/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeckContext", function() { return DeckContext; });
25970/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
25971/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
25972function _slicedToArray(arr, i) {
25973  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
25974}
25975
25976function _nonIterableRest() {
25977  throw new TypeError("Invalid attempt to destructure non-iterable instance");
25978}
25979
25980function _iterableToArrayLimit(arr, i) {
25981  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
25982    return;
25983  }
25984
25985  var _arr = [];
25986  var _n = true;
25987  var _d = false;
25988  var _e = undefined;
25989
25990  try {
25991    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
25992      _arr.push(_s.value);
25993
25994      if (i && _arr.length === i) break;
25995    }
25996  } catch (err) {
25997    _d = true;
25998    _e = err;
25999  } finally {
26000    try {
26001      if (!_n && _i["return"] != null) _i["return"]();
26002    } finally {
26003      if (_d) throw _e;
26004    }
26005  }
26006
26007  return _arr;
26008}
26009
26010function _arrayWithHoles(arr) {
26011  if (Array.isArray(arr)) return arr;
26012}
26013
26014function ownKeys(object, enumerableOnly) {
26015  var keys = Object.keys(object);
26016
26017  if (Object.getOwnPropertySymbols) {
26018    var symbols = Object.getOwnPropertySymbols(object);
26019    if (enumerableOnly) symbols = symbols.filter(function (sym) {
26020      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
26021    });
26022    keys.push.apply(keys, symbols);
26023  }
26024
26025  return keys;
26026}
26027
26028function _objectSpread(target) {
26029  for (var i = 1; i < arguments.length; i++) {
26030    var source = arguments[i] != null ? arguments[i] : {};
26031
26032    if (i % 2) {
26033      ownKeys(Object(source), true).forEach(function (key) {
26034        _defineProperty(target, key, source[key]);
26035      });
26036    } else if (Object.getOwnPropertyDescriptors) {
26037      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
26038    } else {
26039      ownKeys(Object(source)).forEach(function (key) {
26040        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
26041      });
26042    }
26043  }
26044
26045  return target;
26046}
26047
26048function _defineProperty(obj, key, value) {
26049  if (key in obj) {
26050    Object.defineProperty(obj, key, {
26051      value: value,
26052      enumerable: true,
26053      configurable: true,
26054      writable: true
26055    });
26056  } else {
26057    obj[key] = value;
26058  }
26059
26060  return obj;
26061}
26062
26063
26064/**
26065 * Performs logic operations for all of the deck domain level.
26066 * Note: Immediate is a React-Spring property that we pass to the animations
26067 * essentially it skips animations.
26068 */
26069
26070var DeckContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext();
26071
26072function useDeck(initialState) {
26073  function reducer(state, action) {
26074    switch (action.type) {
26075      case 'GO_TO_SLIDE':
26076        {
26077          var newState = _objectSpread({}, state, {
26078            currentSlideElement: action.payload.slideElementNumber,
26079            currentSlide: action.payload.slideNumber,
26080            immediate: action.payload.immediate,
26081            immediateElement: false,
26082            reverseDirection: action.payload.reverseDirection,
26083            presenterMode: action.payload.presenterMode,
26084            overviewMode: action.payload.overviewMode,
26085            exportMode: action.payload.exportMode,
26086            printMode: action.payload.printMode,
26087            resolvedInitialUrl: true
26088          });
26089
26090          return newState;
26091        }
26092
26093      case 'SET_NOTES':
26094        {
26095          return _objectSpread({}, state, {
26096            notes: _objectSpread({}, state.notes, _defineProperty({}, action.payload.slideNumber, action.payload.notes))
26097          });
26098        }
26099
26100      case 'TOGGLE_MODE':
26101        {
26102          return _objectSpread({}, state, _defineProperty({}, action.payload.mode, !state[action.payload.mode]));
26103        }
26104
26105      default:
26106        return _objectSpread({}, state);
26107    }
26108  }
26109
26110  var _React$useReducer = react__WEBPACK_IMPORTED_MODULE_0___default.a.useReducer(reducer, initialState),
26111      _React$useReducer2 = _slicedToArray(_React$useReducer, 2),
26112      state = _React$useReducer2[0],
26113      dispatch = _React$useReducer2[1]; // derived state
26114
26115
26116  var currentNotes = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () {
26117    return state.notes[state.currentSlide];
26118  }, [state.currentSlide, state.notes]);
26119  var allState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () {
26120    return _objectSpread({}, state, {
26121      currentNotes: currentNotes
26122    });
26123  }, [currentNotes, state]);
26124  return {
26125    state: allState,
26126    dispatch: dispatch
26127  };
26128}
26129
26130/* harmony default export */ __webpack_exports__["default"] = (useDeck);
26131
26132/***/ }),
26133
vendor: 1,616 bytes, lines 26134-26169
26134/***/ "./node_modules/spectacle/es/hooks/use-full-screen.js":
26135/*!************************************************************!*\
26136  !*** ./node_modules/spectacle/es/hooks/use-full-screen.js ***!
26137  \************************************************************/
26138/*! exports provided: useToggleFullScreen */
26139/***/ (function(module, __webpack_exports__, __webpack_require__) {
26140
26141"use strict";
26142__webpack_require__.r(__webpack_exports__);
26143/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useToggleFullScreen", function() { return useToggleFullScreen; });
26144/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
26145/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
26146
26147var useToggleFullScreen = function useToggleFullScreen() {
26148  return react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function () {
26149    // https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen
26150    if ('requestFullscreen' in document.documentElement) {
26151      // Chrome/FF
26152      if (!document.fullscreenElement) {
26153        document.documentElement.requestFullscreen();
26154      } else {
26155        document.exitFullscreen();
26156      }
26157    } else if ('webkitRequestFullScreen' in document.documentElement) {
26158      // Safari still doesn't support standard.
26159      if (!document.webkitIsFullScreen) {
26160        document.documentElement.webkitRequestFullScreen();
26161      } else {
26162        document.webkitCancelFullScreen();
26163      }
26164    }
26165  }, []);
26166};
26167
26168/***/ }),
26169
vendor: 4,019 bytes, lines 26170-26279
26170/***/ "./node_modules/spectacle/es/hooks/use-keyboard-controls.js":
26171/*!******************************************************************!*\
26172  !*** ./node_modules/spectacle/es/hooks/use-keyboard-controls.js ***!
26173  \******************************************************************/
26174/*! exports provided: default */
26175/***/ (function(module, __webpack_exports__, __webpack_require__) {
26176
26177"use strict";
26178__webpack_require__.r(__webpack_exports__);
26179/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
26180/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
26181/* harmony import */ var _utils_debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/debounce */ "./node_modules/spectacle/es/utils/debounce.js");
26182/* harmony import */ var _use_full_screen__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-full-screen */ "./node_modules/spectacle/es/hooks/use-full-screen.js");
26183/* harmony import */ var _utils_detect_platform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/detect-platform */ "./node_modules/spectacle/es/utils/detect-platform.js");
26184
26185
26186
26187
26188
26189var useKeyboardControls = function useKeyboardControls(_ref) {
26190  var _ref$keyboardControls = _ref.keyboardControls,
26191      keyboardControls = _ref$keyboardControls === void 0 ? 'arrows' : _ref$keyboardControls,
26192      navigateToNext = _ref.navigateToNext,
26193      navigateToPrevious = _ref.navigateToPrevious,
26194      toggleMode = _ref.toggleMode;
26195  var keyPressCount = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(0);
26196  var toggleFullScreen = Object(_use_full_screen__WEBPACK_IMPORTED_MODULE_2__["useToggleFullScreen"])();
26197  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
26198    // Keep track of the number of next slide presses for debounce
26199    // Create ref for debounceing function
26200    var debouncedDispatch = Object(_utils_debounce__WEBPACK_IMPORTED_MODULE_1__["default"])(function () {
26201      var immediate = keyPressCount.current !== 1;
26202      navigateToNext({
26203        immediate: immediate
26204      });
26205      keyPressCount.current = 0;
26206    }, 200);
26207
26208    function handleKeyDown(e) {
26209      if (keyboardControls === 'arrows') {
26210        if (e.key === 'ArrowLeft') {
26211          navigateToPrevious();
26212        }
26213
26214        if (e.key === 'ArrowRight') {
26215          keyPressCount.current++;
26216          debouncedDispatch();
26217        }
26218      }
26219
26220      if (keyboardControls === 'space') {
26221        if (e.code === 'Space') {
26222          keyPressCount.current++;
26223          debouncedDispatch();
26224          e.preventDefault();
26225        }
26226      }
26227
26228      if (e.altKey && Object(_utils_detect_platform__WEBPACK_IMPORTED_MODULE_3__["isMacOS"])()) {
26229        var key = e.key.toLowerCase();
26230
26231        switch (key) {
26232          case 'ø':
26233            toggleMode('overviewMode');
26234            break;
26235
26236          case 'π':
26237            toggleMode('presenterMode');
26238            break;
26239
26240          case 'ƒ':
26241            toggleFullScreen();
26242            break;
26243
26244          default:
26245            null;
26246        }
26247      } else if (e.altKey && (Object(_utils_detect_platform__WEBPACK_IMPORTED_MODULE_3__["isWindows"])() || Object(_utils_detect_platform__WEBPACK_IMPORTED_MODULE_3__["isLinux"])())) {
26248        var _key = e.key.toUpperCase();
26249
26250        switch (_key) {
26251          case 'O':
26252            toggleMode('overviewMode');
26253            break;
26254
26255          case 'P':
26256            toggleMode('presenterMode');
26257            break;
26258
26259          case 'F':
26260            toggleFullScreen();
26261            break;
26262
26263          default:
26264            null;
26265        }
26266      }
26267    }
26268
26269    window.addEventListener('keydown', handleKeyDown);
26270    return function () {
26271      window.removeEventListener('keydown', handleKeyDown);
26272    };
26273  }, [keyboardControls, navigateToNext, navigateToPrevious, toggleFullScreen, toggleMode]);
26274};
26275
26276/* harmony default export */ __webpack_exports__["default"] = (useKeyboardControls);
26277
26278/***/ }),
26279
vendor: 6,002 bytes, lines 26280-26462
26280/***/ "./node_modules/spectacle/es/hooks/use-presentation.js":
26281/*!*************************************************************!*\
26282  !*** ./node_modules/spectacle/es/hooks/use-presentation.js ***!
26283  \*************************************************************/
26284/*! exports provided: default, MSG_SLIDE_STATE_CHANGE */
26285/***/ (function(module, __webpack_exports__, __webpack_require__) {
26286
26287"use strict";
26288__webpack_require__.r(__webpack_exports__);
26289/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MSG_SLIDE_STATE_CHANGE", function() { return MSG_SLIDE_STATE_CHANGE; });
26290/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
26291/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
26292function _toConsumableArray(arr) {
26293  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
26294}
26295
26296function _nonIterableSpread() {
26297  throw new TypeError("Invalid attempt to spread non-iterable instance");
26298}
26299
26300function _iterableToArray(iter) {
26301  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
26302}
26303
26304function _arrayWithoutHoles(arr) {
26305  if (Array.isArray(arr)) {
26306    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
26307      arr2[i] = arr[i];
26308    }
26309
26310    return arr2;
26311  }
26312}
26313
26314function _slicedToArray(arr, i) {
26315  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
26316}
26317
26318function _nonIterableRest() {
26319  throw new TypeError("Invalid attempt to destructure non-iterable instance");
26320}
26321
26322function _iterableToArrayLimit(arr, i) {
26323  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
26324    return;
26325  }
26326
26327  var _arr = [];
26328  var _n = true;
26329  var _d = false;
26330  var _e = undefined;
26331
26332  try {
26333    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
26334      _arr.push(_s.value);
26335
26336      if (i && _arr.length === i) break;
26337    }
26338  } catch (err) {
26339    _d = true;
26340    _e = err;
26341  } finally {
26342    try {
26343      if (!_n && _i["return"] != null) _i["return"]();
26344    } finally {
26345      if (_d) throw _e;
26346    }
26347  }
26348
26349  return _arr;
26350}
26351
26352function _arrayWithHoles(arr) {
26353  if (Array.isArray(arr)) return arr;
26354}
26355
26356
26357
26358function getReceiver() {
26359  return window.navigator && window.navigator.presentation && window.navigator.presentation.receiver;
26360}
26361
26362function usePresentation() {
26363  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(null),
26364      _useState2 = _slicedToArray(_useState, 2),
26365      connection = _useState2[0],
26366      setConnection = _useState2[1];
26367
26368  var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])([]),
26369      _useState4 = _slicedToArray(_useState3, 2),
26370      errors = _useState4[0],
26371      setErrors = _useState4[1];
26372
26373  var requestRef = Object(react__WEBPACK_IMPORTED_MODULE_0__["useRef"])(null); // Open to suggestions for better error handling
26374
26375  var addError = function addError(e) {
26376    return setErrors(function (es) {
26377      return [].concat(_toConsumableArray(es), [e]);
26378    });
26379  }; // Create a presentation request and store it as a ref
26380
26381
26382  Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(function () {
26383    if (!window.PresentationRequest) {
26384      addError(new Error('Browser does not support Presentation API'));
26385    }
26386
26387    return terminateConnection;
26388  }, [connection, terminateConnection]); // Add a message handler
26389
26390  var addMessageHandler = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function (handler) {
26391    var receiver = getReceiver();
26392
26393    if (receiver) {
26394      var handleConnectionList = function handleConnectionList(list) {
26395        list.connections.forEach(function (listConnection) {
26396          var oldHandler = listConnection.onmessage || function () {};
26397
26398          listConnection.onmessage = function (event) {
26399            var parsedData = JSON.parse(event.data);
26400            handler(parsedData);
26401            oldHandler(event);
26402          };
26403        });
26404      };
26405
26406      receiver.connectionList.then(handleConnectionList).catch(addError);
26407    }
26408  }, []);
26409  var terminateConnection = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function () {
26410    if (connection) {
26411      connection.terminate();
26412      setConnection(null);
26413    }
26414  }, [connection]); // Opens the display selection dialog box
26415
26416  var startConnection = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function (urlParams) {
26417    requestRef.current = new PresentationRequest(["/?".concat(urlParams)]);
26418    var request = requestRef && requestRef.current;
26419
26420    if (request) {
26421      request.start().then(function (requestConnection) {
26422        requestConnection.onclose = function () {
26423          return setConnection(null);
26424        }; // Detect user closing presentation window
26425
26426
26427        setConnection(requestConnection);
26428      }).catch(function (e) {
26429        return addError(new Error('User (probably) exited display selection dialog box', e));
26430      });
26431    }
26432  }, []); // Send a message from the controller to the presenter
26433
26434  var sendMessage = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function (msg) {
26435    // This may throw if message isn't stringify-able
26436    try {
26437      if (connection) {
26438        connection.send(JSON.stringify(msg));
26439      } else {
26440        addError(new Error('Cannot send message before starting a conection'));
26441      }
26442    } catch (e) {
26443      console.log('error', e);
26444      addError(e);
26445    }
26446  }, [connection]);
26447  return {
26448    startConnection: startConnection,
26449    terminateConnection: terminateConnection,
26450    sendMessage: sendMessage,
26451    errors: errors,
26452    addMessageHandler: addMessageHandler,
26453    isReceiver: Boolean(getReceiver()),
26454    isController: Boolean(connection)
26455  };
26456}
26457
26458/* harmony default export */ __webpack_exports__["default"] = (usePresentation);
26459var MSG_SLIDE_STATE_CHANGE = 'MSG_SLIDE_STATE_CHANGE';
26460
26461/***/ }),
26462
vendor: 3,596 bytes, lines 26463-26540
26463/***/ "./node_modules/spectacle/es/hooks/use-slide.js":
26464/*!******************************************************!*\
26465  !*** ./node_modules/spectacle/es/hooks/use-slide.js ***!
26466  \******************************************************/
26467/*! exports provided: SlideContext, SlideNextElementContext, default */
26468/***/ (function(module, __webpack_exports__, __webpack_require__) {
26469
26470"use strict";
26471__webpack_require__.r(__webpack_exports__);
26472/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SlideContext", function() { return SlideContext; });
26473/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SlideNextElementContext", function() { return SlideNextElementContext; });
26474/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
26475/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
26476/* harmony import */ var _use_deck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js");
26477/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/constants */ "./node_modules/spectacle/es/utils/constants.js");
26478
26479
26480
26481/**
26482 * Performs logic operations for all of the slide domain level.
26483 * slideElements are dynamic elements within the slide that may
26484 * appear/ move around etc.
26485 * If remaining elements in slide, these are brought in one by one.
26486 * If not, we tell the deck to take us to the next slide.
26487 *
26488 * Note: Immediate is a React-Spring property that we pass to the animations
26489 * essentially it skips animations.
26490 */
26491// Initialise SlideContext.
26492
26493var SlideContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext();
26494var SlideNextElementContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext();
26495
26496function useSlide(slideNum) {
26497  // Gets state, dispatch and number of slides off DeckContext.
26498  var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_use_deck__WEBPACK_IMPORTED_MODULE_1__["DeckContext"]),
26499      deckContextState = _React$useContext.state,
26500      deckContextDispatch = _React$useContext.dispatch,
26501      slideElementMap = _React$useContext.slideElementMap,
26502      numberOfSlides = _React$useContext.numberOfSlides;
26503
26504  if (slideNum === 'undefined') {
26505    throw new Error('Must provide slide number to useSlide. Provided undefined instead.');
26506  }
26507
26508  var reverseDirection = deckContextState.reverseDirection,
26509      immediate = deckContextState.immediate;
26510  var slideElementsLength = slideElementMap[slideNum];
26511  var isActiveSlide = deckContextState.currentSlide === slideNum;
26512  var setNotes = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (notes) {
26513    deckContextDispatch({
26514      type: 'SET_NOTES',
26515      payload: {
26516        notes: notes,
26517        slideNumber: slideNum
26518      }
26519    });
26520  }, [deckContextDispatch, slideNum]);
26521  var currentSlideElement = isActiveSlide ? deckContextState.currentSlideElement : _utils_constants__WEBPACK_IMPORTED_MODULE_2__["DEFAULT_SLIDE_ELEMENT_INDEX"];
26522  return {
26523    state: {
26524      reverseDirection: reverseDirection,
26525      slideElementsLength: slideElementsLength,
26526      currentSlideElement: currentSlideElement,
26527      immediate: immediate,
26528      isActiveSlide: isActiveSlide,
26529      numberOfSlides: numberOfSlides
26530    },
26531    actions: {
26532      setNotes: setNotes
26533    }
26534  };
26535}
26536
26537/* harmony default export */ __webpack_exports__["default"] = (useSlide);
26538
26539/***/ }),
26540
vendor: 2,785 bytes, lines 26541-26618
26541/***/ "./node_modules/spectacle/es/hooks/use-touch-controls.js":
26542/*!***************************************************************!*\
26543  !*** ./node_modules/spectacle/es/hooks/use-touch-controls.js ***!
26544  \***************************************************************/
26545/*! exports provided: default */
26546/***/ (function(module, __webpack_exports__, __webpack_require__) {
26547
26548"use strict";
26549__webpack_require__.r(__webpack_exports__);
26550/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
26551/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
26552
26553/**
26554 * Hook that navigates to next or previous slide when the user swipes
26555 * left or right in a touch device, where there is no keyboard.
26556 */
26557
26558var useTouchControls = function useTouchControls(_ref) {
26559  var navigateToNext = _ref.navigateToNext,
26560      navigateToPrevious = _ref.navigateToPrevious;
26561  var touchId = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null); // To keep track of which touch started the swipe.
26562
26563  var startTouchX = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(0); // Where the swipe started.
26564
26565  var threshold = 100; // Pixels the user must drag to trigger a slide swipe.
26566
26567  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
26568    /**
26569     * Keep track of which touch even we're following.
26570     */
26571    function handleTouchStart(e) {
26572      if (touchId.current === null) {
26573        var touch = e.changedTouches[0];
26574        touchId.current = touch.identifier;
26575        startTouchX.current = touch.clientX;
26576      }
26577    }
26578    /**
26579     * Only care about the touch we're tracking.
26580     * See how much the user swiped, if it's more than
26581     * the threshold, navigate to the previous or next slide.
26582     */
26583
26584
26585    function handleTouchEnd(e) {
26586      var touchList = e.changedTouches;
26587
26588      for (var i = 0; i < touchList.length; i++) {
26589        var touch = touchList[i];
26590
26591        if (touch.identifier === touchId.current) {
26592          touchId.current = null;
26593          var distance = touch.clientX - startTouchX.current;
26594
26595          if (distance > threshold) {
26596            navigateToPrevious();
26597          } else if (distance < -threshold) {
26598            navigateToNext();
26599          }
26600
26601          break;
26602        }
26603      }
26604    }
26605
26606    window.addEventListener('touchstart', handleTouchStart);
26607    window.addEventListener('touchend', handleTouchEnd);
26608    return function () {
26609      window.removeEventListener('touchstart', handleTouchStart);
26610      window.removeEventListener('touchend', handleTouchEnd);
26611    };
26612  }, [navigateToNext, navigateToPrevious]);
26613};
26614
26615/* harmony default export */ __webpack_exports__["default"] = (useTouchControls);
26616
26617/***/ }),
26618
vendor: 3,381 bytes, lines 26619-26707
26619/***/ "./node_modules/spectacle/es/hooks/use-transition-pipe.js":
26620/*!****************************************************************!*\
26621  !*** ./node_modules/spectacle/es/hooks/use-transition-pipe.js ***!
26622  \****************************************************************/
26623/*! exports provided: TransitionPipeContext, TransitionPipeProvider */
26624/***/ (function(module, __webpack_exports__, __webpack_require__) {
26625
26626"use strict";
26627__webpack_require__.r(__webpack_exports__);
26628/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransitionPipeContext", function() { return TransitionPipeContext; });
26629/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransitionPipeProvider", function() { return TransitionPipeProvider; });
26630/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
26631/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
26632/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
26633/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
26634/* harmony import */ var wonka__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! wonka */ "./node_modules/wonka/dist/wonka.es.js");
26635function _slicedToArray(arr, i) {
26636  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
26637}
26638
26639function _nonIterableRest() {
26640  throw new TypeError("Invalid attempt to destructure non-iterable instance");
26641}
26642
26643function _iterableToArrayLimit(arr, i) {
26644  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
26645    return;
26646  }
26647
26648  var _arr = [];
26649  var _n = true;
26650  var _d = false;
26651  var _e = undefined;
26652
26653  try {
26654    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
26655      _arr.push(_s.value);
26656
26657      if (i && _arr.length === i) break;
26658    }
26659  } catch (err) {
26660    _d = true;
26661    _e = err;
26662  } finally {
26663    try {
26664      if (!_n && _i["return"] != null) _i["return"]();
26665    } finally {
26666      if (_d) throw _e;
26667    }
26668  }
26669
26670  return _arr;
26671}
26672
26673function _arrayWithHoles(arr) {
26674  if (Array.isArray(arr)) return arr;
26675}
26676
26677
26678
26679
26680var TransitionPipeContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createContext"]({});
26681
26682function TransitionPipeProvider(props) {
26683  var runTransition = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () {
26684    var _makeSubject = Object(wonka__WEBPACK_IMPORTED_MODULE_2__["makeSubject"])(),
26685        _makeSubject2 = _slicedToArray(_makeSubject, 2),
26686        transitionSource = _makeSubject2[0],
26687        nextTransition = _makeSubject2[1];
26688
26689    Object(wonka__WEBPACK_IMPORTED_MODULE_2__["pipe"])(transitionSource, Object(wonka__WEBPACK_IMPORTED_MODULE_2__["subscribe"])(function (transition) {
26690      return transition.start();
26691    }));
26692    return nextTransition;
26693  }, []);
26694  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](TransitionPipeContext.Provider, {
26695    value: {
26696      runTransition: runTransition
26697    }
26698  }, props.children);
26699}
26700
26701TransitionPipeProvider.propTypes = {
26702  children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node
26703};
26704
26705
26706/***/ }),
26707
vendor: 14,788 bytes, lines 26708-27036
26708/***/ "./node_modules/spectacle/es/hooks/use-url-routing.js":
26709/*!************************************************************!*\
26710  !*** ./node_modules/spectacle/es/hooks/use-url-routing.js ***!
26711  \************************************************************/
26712/*! exports provided: default */
26713/***/ (function(module, __webpack_exports__, __webpack_require__) {
26714
26715"use strict";
26716__webpack_require__.r(__webpack_exports__);
26717/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return useUrlRouting; });
26718/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
26719/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
26720/* harmony import */ var history__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! history */ "./node_modules/history/esm/history.js");
26721/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! query-string */ "./node_modules/query-string/index.js");
26722/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(query_string__WEBPACK_IMPORTED_MODULE_2__);
26723/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/constants */ "./node_modules/spectacle/es/utils/constants.js");
26724function ownKeys(object, enumerableOnly) {
26725  var keys = Object.keys(object);
26726
26727  if (Object.getOwnPropertySymbols) {
26728    var symbols = Object.getOwnPropertySymbols(object);
26729    if (enumerableOnly) symbols = symbols.filter(function (sym) {
26730      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
26731    });
26732    keys.push.apply(keys, symbols);
26733  }
26734
26735  return keys;
26736}
26737
26738function _objectSpread(target) {
26739  for (var i = 1; i < arguments.length; i++) {
26740    var source = arguments[i] != null ? arguments[i] : {};
26741
26742    if (i % 2) {
26743      ownKeys(Object(source), true).forEach(function (key) {
26744        _defineProperty(target, key, source[key]);
26745      });
26746    } else if (Object.getOwnPropertyDescriptors) {
26747      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
26748    } else {
26749      ownKeys(Object(source)).forEach(function (key) {
26750        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
26751      });
26752    }
26753  }
26754
26755  return target;
26756}
26757
26758function _defineProperty(obj, key, value) {
26759  if (key in obj) {
26760    Object.defineProperty(obj, key, {
26761      value: value,
26762      enumerable: true,
26763      configurable: true,
26764      writable: true
26765    });
26766  } else {
26767    obj[key] = value;
26768  }
26769
26770  return obj;
26771}
26772
26773
26774
26775
26776
26777function useUrlRouting(options) {
26778  var dispatch = options.dispatch,
26779      slideElementMap = options.slideElementMap,
26780      currentSlide = options.currentSlide,
26781      currentSlideElement = options.currentSlideElement,
26782      currentPresenterMode = options.currentPresenterMode,
26783      currentOverviewMode = options.currentOverviewMode,
26784      currentExportMode = options.currentExportMode,
26785      currentPrintMode = options.currentPrintMode,
26786      loop = options.loop,
26787      animationsWhenGoingBack = options.animationsWhenGoingBack,
26788      onUrlChange = options.onUrlChange,
26789      customHistory = options.customHistory;
26790  var history = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](customHistory || Object(history__WEBPACK_IMPORTED_MODULE_1__["createBrowserHistory"])());
26791  var numberOfSlides = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () {
26792    return Object.getOwnPropertyNames(slideElementMap).length;
26793  }, [slideElementMap]);
26794  var countSlideElements = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (slideNumber) {
26795    return slideElementMap[slideNumber];
26796  }, [slideElementMap]);
26797  var isSlideOutOfBounds = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (proposedSlideNumber) {
26798    return isNaN(proposedSlideNumber) || numberOfSlides - 1 < proposedSlideNumber;
26799  }, [numberOfSlides]);
26800  var isSlideElementOutOfBounds = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (proposedSlideElementNumber, slideElementsLength) {
26801    var val = isNaN(proposedSlideElementNumber) || proposedSlideElementNumber >= slideElementsLength || proposedSlideElementNumber < _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"];
26802    return val;
26803  }, []);
26804  var stateFromUrl = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (url) {
26805    var query = query_string__WEBPACK_IMPORTED_MODULE_2__["parse"](url);
26806    var immediate = Boolean(query.immediate);
26807    var presenterMode = Boolean(query.presenterMode);
26808    var exportMode = Boolean(query.exportMode);
26809    var printMode = Boolean(query.printMode);
26810    var overviewMode = Boolean(query.overviewMode);
26811    var proposedSlideNumber = parseInt(query.slide, 10);
26812    var proposedSlideElementNumber = parseInt(query.slideElement, 10);
26813    var slideNumber = isSlideOutOfBounds(proposedSlideNumber) ? _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_INDEX"] : proposedSlideNumber;
26814    var slideElementsLength = countSlideElements(slideNumber);
26815    var slideElementNumber = isSlideElementOutOfBounds(proposedSlideElementNumber, slideElementsLength) ? _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"] : proposedSlideElementNumber;
26816
26817    if (overviewMode && presenterMode) {
26818      throw new Error('Presenter Mode and Overview Mode cannot be used at the same time.');
26819    }
26820
26821    return {
26822      immediate: immediate,
26823      presenterMode: presenterMode,
26824      overviewMode: overviewMode,
26825      proposedSlideNumber: proposedSlideNumber,
26826      proposedSlideElementNumber: proposedSlideElementNumber,
26827      slideNumber: slideNumber,
26828      slideElementNumber: slideElementNumber,
26829      exportMode: exportMode,
26830      printMode: printMode
26831    };
26832  }, [countSlideElements, isSlideElementOutOfBounds, isSlideOutOfBounds]);
26833  var goToSlide = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (slideNumber) {
26834    var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
26835    var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({
26836      presenterMode: currentPresenterMode || undefined,
26837      overviewMode: currentOverviewMode || undefined,
26838      exportMode: currentExportMode || undefined,
26839      immediate: immediate,
26840      slide: slideNumber,
26841      slideElement: _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"],
26842      printMode: currentPrintMode || undefined
26843    });
26844    history.current.push("?".concat(qs));
26845  }, [currentPresenterMode, currentOverviewMode, currentExportMode, currentPrintMode]);
26846  var onHistoryChange = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () {
26847    var _stateFromUrl = stateFromUrl(window.location.search),
26848        slideNumber = _stateFromUrl.slideNumber,
26849        slideElementNumber = _stateFromUrl.slideElementNumber,
26850        proposedSlideNumber = _stateFromUrl.proposedSlideNumber,
26851        proposedSlideElementNumber = _stateFromUrl.proposedSlideElementNumber,
26852        presenterMode = _stateFromUrl.presenterMode,
26853        overviewMode = _stateFromUrl.overviewMode,
26854        immediate = _stateFromUrl.immediate,
26855        exportMode = _stateFromUrl.exportMode,
26856        printMode = _stateFromUrl.printMode;
26857    /**
26858     * If the proposed URL slide index is out-of-bounds or is not a valid
26859     * integer, navigate to the first slide. Do nothing if the proposed slide
26860     * number is the same as the current slide.
26861     */
26862
26863
26864    if (proposedSlideNumber !== slideNumber || proposedSlideElementNumber !== slideElementNumber) {
26865      var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({
26866        slide: slideNumber,
26867        slideElement: slideElementNumber,
26868        immediate: immediate || undefined,
26869        presenterMode: presenterMode || undefined,
26870        overviewMode: overviewMode || undefined,
26871        exportMode: exportMode || undefined,
26872        printMode: printMode || undefined
26873      });
26874      history.current.replace("?".concat(qs));
26875      return;
26876    }
26877
26878    var reverseDirection = slideNumber < currentSlide || slideNumber == currentSlide && slideElementNumber < currentSlideElement;
26879    var update = {
26880      slideNumber: slideNumber,
26881      slideElementNumber: slideElementNumber,
26882      reverseDirection: reverseDirection,
26883      immediate: immediate
26884    };
26885    dispatch({
26886      type: 'GO_TO_SLIDE',
26887      payload: _objectSpread({}, update, {
26888        presenterMode: presenterMode,
26889        overviewMode: overviewMode,
26890        exportMode: exportMode,
26891        printMode: printMode
26892      })
26893    });
26894    onUrlChange(update);
26895  }, [stateFromUrl, currentSlide, currentSlideElement, dispatch, onUrlChange]);
26896  var nextSafeSlide = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () {
26897    if (currentSlide + 1 > numberOfSlides - 1 && loop) {
26898      return _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_INDEX"];
26899    }
26900
26901    return Math.min(currentSlide + 1, numberOfSlides - 1);
26902  }, [currentSlide, loop, numberOfSlides]);
26903  /**
26904   * This method will navigate to whatever index is specified. It is for
26905   * internal use only, such as presenter mode, as it does not check bounds.
26906   */
26907
26908  var navigateTo = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (_ref) {
26909    var slideIndex = _ref.slideIndex,
26910        elementIndex = _ref.elementIndex,
26911        _ref$immediate = _ref.immediate,
26912        immediate = _ref$immediate === void 0 ? false : _ref$immediate;
26913    var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({
26914      slide: slideIndex,
26915      slideElement: elementIndex,
26916      immediate: immediate || undefined,
26917      presenterMode: currentPresenterMode || undefined,
26918      overviewMode: currentOverviewMode || undefined,
26919      exportMode: currentExportMode || undefined,
26920      printMode: currentPrintMode || undefined
26921    });
26922    history.current.push("?".concat(qs));
26923  });
26924  var navigateToNext = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () {
26925    var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
26926        immediate = _ref2.immediate;
26927
26928    var slideElementsLength = countSlideElements(currentSlide);
26929    var atLastElement = currentSlideElement + 1 === slideElementsLength || slideElementsLength === 0;
26930    var atLastSlide = currentSlide + 1 === numberOfSlides || numberOfSlides === 0;
26931    var nextSafeSlideIndex = currentSlide;
26932    var nextSafeSlideElementIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"];
26933
26934    if (atLastElement && atLastSlide) {
26935      if (!loop) {
26936        return;
26937      }
26938
26939      nextSafeSlideIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_INDEX"];
26940      nextSafeSlideElementIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"];
26941    } else if (atLastElement) {
26942      // advance to the next safe slide
26943      nextSafeSlideIndex = nextSafeSlide();
26944      nextSafeSlideElementIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"];
26945    } else {
26946      // advance to the next slide element
26947      nextSafeSlideElementIndex = currentSlideElement + 1;
26948    }
26949
26950    var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({
26951      slide: nextSafeSlideIndex,
26952      slideElement: nextSafeSlideElementIndex,
26953      immediate: immediate || undefined,
26954      presenterMode: currentPresenterMode || undefined,
26955      overviewMode: currentOverviewMode || undefined,
26956      exportMode: currentExportMode || undefined,
26957      printMode: currentPrintMode || undefined
26958    });
26959    history.current.push("?".concat(qs));
26960  }, [countSlideElements, currentSlide, currentSlideElement, numberOfSlides, currentPresenterMode, currentOverviewMode, currentExportMode, currentPrintMode, loop, nextSafeSlide]);
26961  var previousSafeSlide = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () {
26962    if (currentSlide - 1 < 0 && loop) {
26963      return numberOfSlides - 1;
26964    }
26965
26966    return Math.max(0, currentSlide - 1);
26967  }, [currentSlide, loop, numberOfSlides]);
26968  var navigateToPrevious = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () {
26969    var immediate = !animationsWhenGoingBack;
26970    var slideElementsLength = countSlideElements(currentSlide);
26971    var atNoElement = currentSlideElement === _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"] || slideElementsLength === 0;
26972    var atFirstSlide = currentSlide === 0 || numberOfSlides === 0;
26973    var previousSafeSlideIndex = currentSlide;
26974    var previousSafeSlideElementIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"];
26975
26976    if (atNoElement && atFirstSlide) {
26977      if (!loop) {
26978        return;
26979      }
26980
26981      previousSafeSlideIndex = numberOfSlides - 1;
26982    } else if (currentSlideElement < 0) {
26983      // back up to the previous safe slide
26984      previousSafeSlideIndex = previousSafeSlide();
26985      previousSafeSlideElementIndex = countSlideElements(previousSafeSlideIndex) - 1;
26986    } else {
26987      // back up to the previous slide element
26988      previousSafeSlideElementIndex = currentSlideElement - 1;
26989    }
26990
26991    var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({
26992      slide: previousSafeSlideIndex,
26993      slideElement: previousSafeSlideElementIndex,
26994      immediate: immediate || undefined,
26995      presenterMode: currentPresenterMode || undefined,
26996      overviewMode: currentOverviewMode || undefined,
26997      exportMode: currentExportMode || undefined
26998    });
26999    history.current.push("?".concat(qs));
27000  }, [animationsWhenGoingBack, countSlideElements, currentSlide, currentSlideElement, numberOfSlides, currentPresenterMode, currentOverviewMode, currentExportMode, loop, previousSafeSlide]);
27001  react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](function () {
27002    var removeHistoryListener = history.current.listen(onHistoryChange);
27003    return function () {
27004      removeHistoryListener();
27005    };
27006  }, [onHistoryChange]);
27007  /**
27008   * In order for Deck to render the correct type of sub-deck,
27009   * we need for certain state from the url to be written to the
27010   * DeckContext. For example, we need to know whether or not this
27011   * browser is in presenter mode.
27012   */
27013
27014  react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](function () {
27015    onHistoryChange();
27016  }, // eslint-disable-next-line react-hooks/exhaustive-deps
27017  []);
27018  var toggleMode = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (s) {
27019    return dispatch({
27020      type: 'TOGGLE_MODE',
27021      payload: {
27022        mode: s
27023      }
27024    });
27025  }, [dispatch]);
27026  return {
27027    navigateToNext: navigateToNext,
27028    navigateToPrevious: navigateToPrevious,
27029    navigateTo: navigateTo,
27030    toggleMode: toggleMode,
27031    goToSlide: goToSlide
27032  };
27033}
27034
27035/***/ }),
27036
vendor: 9,246 bytes, lines 27037-27147
27037/***/ "./node_modules/spectacle/es/index.js":
27038/*!********************************************!*\
27039  !*** ./node_modules/spectacle/es/index.js ***!
27040  \********************************************/
27041/*! exports provided: Deck, Slide, Appear, CodePane, Box, FlexBox, Grid, Image, FullSizeImage, OrderedList, Quote, Heading, ListItem, UnorderedList, Text, Link, CodeSpan, Notes, Progress, FullScreen, Markdown, SpectacleLogo, Stepper, Table, TableCell, TableRow, TableHeader, TableBody, mdxComponentMap, removeNotes, isolateNotes, indentNormalizer */
27042/***/ (function(module, __webpack_exports__, __webpack_require__) {
27043
27044"use strict";
27045__webpack_require__.r(__webpack_exports__);
27046/* harmony import */ var _components_deck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/deck */ "./node_modules/spectacle/es/components/deck/index.js");
27047/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Deck", function() { return _components_deck__WEBPACK_IMPORTED_MODULE_0__["default"]; });
27048
27049/* harmony import */ var _components_slide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/slide */ "./node_modules/spectacle/es/components/slide.js");
27050/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Slide", function() { return _components_slide__WEBPACK_IMPORTED_MODULE_1__["default"]; });
27051
27052/* harmony import */ var _components_appear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/appear */ "./node_modules/spectacle/es/components/appear.js");
27053/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Appear", function() { return _components_appear__WEBPACK_IMPORTED_MODULE_2__["default"]; });
27054
27055/* harmony import */ var _components_code_pane__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/code-pane */ "./node_modules/spectacle/es/components/code-pane.js");
27056/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CodePane", function() { return _components_code_pane__WEBPACK_IMPORTED_MODULE_3__["default"]; });
27057
27058/* harmony import */ var _components_stepper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/stepper */ "./node_modules/spectacle/es/components/stepper.js");
27059/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Stepper", function() { return _components_stepper__WEBPACK_IMPORTED_MODULE_4__["default"]; });
27060
27061/* harmony import */ var _components_typography__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/typography */ "./node_modules/spectacle/es/components/typography.js");
27062/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OrderedList", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["OrderedList"]; });
27063
27064/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Quote", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["Quote"]; });
27065
27066/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Heading", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["Heading"]; });
27067
27068/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ListItem", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["ListItem"]; });
27069
27070/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnorderedList", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["UnorderedList"]; });
27071
27072/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Text", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["Text"]; });
27073
27074/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Link", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["Link"]; });
27075
27076/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CodeSpan", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["CodeSpan"]; });
27077
27078/* harmony import */ var _components_table__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/table */ "./node_modules/spectacle/es/components/table.js");
27079/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Table", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["Table"]; });
27080
27081/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableCell", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["TableCell"]; });
27082
27083/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableRow", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["TableRow"]; });
27084
27085/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableHeader", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["TableHeader"]; });
27086
27087/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableBody", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["TableBody"]; });
27088
27089/* harmony import */ var _components_layout__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/layout */ "./node_modules/spectacle/es/components/layout.js");
27090/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return _components_layout__WEBPACK_IMPORTED_MODULE_7__["Box"]; });
27091
27092/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FlexBox", function() { return _components_layout__WEBPACK_IMPORTED_MODULE_7__["FlexBox"]; });
27093
27094/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return _components_layout__WEBPACK_IMPORTED_MODULE_7__["Grid"]; });
27095
27096/* harmony import */ var _components_image__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/image */ "./node_modules/spectacle/es/components/image.js");
27097/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return _components_image__WEBPACK_IMPORTED_MODULE_8__["Image"]; });
27098
27099/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FullSizeImage", function() { return _components_image__WEBPACK_IMPORTED_MODULE_8__["FullSizeImage"]; });
27100
27101/* harmony import */ var _components_notes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/notes */ "./node_modules/spectacle/es/components/notes.js");
27102/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notes", function() { return _components_notes__WEBPACK_IMPORTED_MODULE_9__["default"]; });
27103
27104/* harmony import */ var _components_progress__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/progress */ "./node_modules/spectacle/es/components/progress.js");
27105/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Progress", function() { return _components_progress__WEBPACK_IMPORTED_MODULE_10__["default"]; });
27106
27107/* harmony import */ var _components_fullscreen__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/fullscreen */ "./node_modules/spectacle/es/components/fullscreen.js");
27108/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FullScreen", function() { return _components_fullscreen__WEBPACK_IMPORTED_MODULE_11__["default"]; });
27109
27110/* harmony import */ var _components_markdown__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/markdown */ "./node_modules/spectacle/es/components/markdown.js");
27111/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Markdown", function() { return _components_markdown__WEBPACK_IMPORTED_MODULE_12__["default"]; });
27112
27113/* harmony import */ var _components_logo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/logo */ "./node_modules/spectacle/es/components/logo.js");
27114/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SpectacleLogo", function() { return _components_logo__WEBPACK_IMPORTED_MODULE_13__["default"]; });
27115
27116/* harmony import */ var _utils_mdx_component_mapper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/mdx-component-mapper */ "./node_modules/spectacle/es/utils/mdx-component-mapper.js");
27117/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mdxComponentMap", function() { return _utils_mdx_component_mapper__WEBPACK_IMPORTED_MODULE_14__["default"]; });
27118
27119/* harmony import */ var _utils_notes__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils/notes */ "./node_modules/spectacle/es/utils/notes.js");
27120/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeNotes", function() { return _utils_notes__WEBPACK_IMPORTED_MODULE_15__["removeNotes"]; });
27121
27122/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isolateNotes", function() { return _utils_notes__WEBPACK_IMPORTED_MODULE_15__["isolateNotes"]; });
27123
27124/* harmony import */ var _utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./utils/indent-normalizer */ "./node_modules/spectacle/es/utils/indent-normalizer.js");
27125/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "indentNormalizer", function() { return _utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_16__["default"]; });
27126
27127
27128
27129
27130
27131
27132
27133
27134
27135
27136
27137
27138
27139
27140
27141
27142
27143
27144
27145
27146/***/ }),
27147
vendor: 1,026 bytes, lines 27148-27186
27148/***/ "./node_modules/spectacle/es/theme/default-theme.js":
27149/*!**********************************************************!*\
27150  !*** ./node_modules/spectacle/es/theme/default-theme.js ***!
27151  \**********************************************************/
27152/*! exports provided: default */
27153/***/ (function(module, __webpack_exports__, __webpack_require__) {
27154
27155"use strict";
27156__webpack_require__.r(__webpack_exports__);
27157/* harmony default export */ __webpack_exports__["default"] = ({
27158  size: {
27159    width: 1366,
27160    height: 768,
27161    maxCodePaneHeight: 200
27162  },
27163  colors: {
27164    primary: '#ebe5da',
27165    secondary: '#fc6986',
27166    tertiary: '#1e2852',
27167    quaternary: '#ffc951',
27168    quinary: '#8bddfd'
27169  },
27170  fonts: {
27171    header: '"Helvetica Neue", Helvetica, Arial, sans-serif',
27172    text: '"Helvetica Neue", Helvetica, Arial, sans-serif',
27173    monospace: '"Consolas", "Menlo", monospace'
27174  },
27175  fontSizes: {
27176    h1: '72px',
27177    h2: '64px',
27178    h3: '56px',
27179    text: '44px',
27180    monospace: '20px'
27181  },
27182  space: [16, 24, 32]
27183});
27184
27185/***/ }),
27186
vendor: 2,743 bytes, lines 27187-27267
27187/***/ "./node_modules/spectacle/es/theme/index.js":
27188/*!**************************************************!*\
27189  !*** ./node_modules/spectacle/es/theme/index.js ***!
27190  \**************************************************/
27191/*! exports provided: mergeTheme */
27192/***/ (function(module, __webpack_exports__, __webpack_require__) {
27193
27194"use strict";
27195__webpack_require__.r(__webpack_exports__);
27196/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeTheme", function() { return mergeTheme; });
27197/* harmony import */ var _default_theme__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./default-theme */ "./node_modules/spectacle/es/theme/default-theme.js");
27198/* harmony import */ var _print_theme__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./print-theme */ "./node_modules/spectacle/es/theme/print-theme.js");
27199function ownKeys(object, enumerableOnly) {
27200  var keys = Object.keys(object);
27201
27202  if (Object.getOwnPropertySymbols) {
27203    var symbols = Object.getOwnPropertySymbols(object);
27204    if (enumerableOnly) symbols = symbols.filter(function (sym) {
27205      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
27206    });
27207    keys.push.apply(keys, symbols);
27208  }
27209
27210  return keys;
27211}
27212
27213function _objectSpread(target) {
27214  for (var i = 1; i < arguments.length; i++) {
27215    var source = arguments[i] != null ? arguments[i] : {};
27216
27217    if (i % 2) {
27218      ownKeys(Object(source), true).forEach(function (key) {
27219        _defineProperty(target, key, source[key]);
27220      });
27221    } else if (Object.getOwnPropertyDescriptors) {
27222      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
27223    } else {
27224      ownKeys(Object(source)).forEach(function (key) {
27225        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
27226      });
27227    }
27228  }
27229
27230  return target;
27231}
27232
27233function _defineProperty(obj, key, value) {
27234  if (key in obj) {
27235    Object.defineProperty(obj, key, {
27236      value: value,
27237      enumerable: true,
27238      configurable: true,
27239      writable: true
27240    });
27241  } else {
27242    obj[key] = value;
27243  }
27244
27245  return obj;
27246}
27247
27248
27249
27250
27251var mergeKeys = function mergeKeys(base, override) {
27252  return Object.keys(override || {}).reduce(function (merged, key) {
27253    merged[key] = _objectSpread({}, merged[key], {}, override[key]);
27254    return merged;
27255  }, _objectSpread({}, base));
27256};
27257
27258var mergeTheme = function mergeTheme(theme) {
27259  var isPrintMode = window.location.search.includes('printMode');
27260  var merged = mergeKeys(_default_theme__WEBPACK_IMPORTED_MODULE_0__["default"], theme); // if is print mode then do the above for printTheme else return the
27261  // above merged themes
27262
27263  return isPrintMode ? mergeKeys(merged, _print_theme__WEBPACK_IMPORTED_MODULE_1__["default"]) : merged;
27264};
27265
27266/***/ }),
27267
vendor: 631 bytes, lines 27268-27288
27268/***/ "./node_modules/spectacle/es/theme/print-theme.js":
27269/*!********************************************************!*\
27270  !*** ./node_modules/spectacle/es/theme/print-theme.js ***!
27271  \********************************************************/
27272/*! exports provided: default */
27273/***/ (function(module, __webpack_exports__, __webpack_require__) {
27274
27275"use strict";
27276__webpack_require__.r(__webpack_exports__);
27277/* harmony default export */ __webpack_exports__["default"] = ({
27278  colors: {
27279    primary: '#00000096',
27280    secondary: '#00000069',
27281    tertiary: '#00000085',
27282    quaternary: '#000000',
27283    quinary: '#000000'
27284  }
27285});
27286
27287/***/ }),
27288
vendor: 1,072 bytes, lines 27289-27306
27289/***/ "./node_modules/spectacle/es/utils/constants.js":
27290/*!******************************************************!*\
27291  !*** ./node_modules/spectacle/es/utils/constants.js ***!
27292  \******************************************************/
27293/*! exports provided: DEFAULT_SLIDE_ELEMENT_INDEX, DEFAULT_SLIDE_INDEX, SYSTEM_FONT */
27294/***/ (function(module, __webpack_exports__, __webpack_require__) {
27295
27296"use strict";
27297__webpack_require__.r(__webpack_exports__);
27298/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_SLIDE_ELEMENT_INDEX", function() { return DEFAULT_SLIDE_ELEMENT_INDEX; });
27299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_SLIDE_INDEX", function() { return DEFAULT_SLIDE_INDEX; });
27300/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SYSTEM_FONT", function() { return SYSTEM_FONT; });
27301var DEFAULT_SLIDE_ELEMENT_INDEX = -1;
27302var DEFAULT_SLIDE_INDEX = 0;
27303var SYSTEM_FONT = '-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Helvetica, sans-serif';
27304
27305/***/ }),
27306
vendor: 975 bytes, lines 27307-27338
27307/***/ "./node_modules/spectacle/es/utils/debounce.js":
27308/*!*****************************************************!*\
27309  !*** ./node_modules/spectacle/es/utils/debounce.js ***!
27310  \*****************************************************/
27311/*! exports provided: default */
27312/***/ (function(module, __webpack_exports__, __webpack_require__) {
27313
27314"use strict";
27315__webpack_require__.r(__webpack_exports__);
27316// Credit David Walsh (https://davidwalsh.name/javascript-debounce-function)
27317function debounce(func, wait, immediate) {
27318  var timeout;
27319  return function executedFunction() {
27320    var context = this;
27321    var args = arguments;
27322
27323    var later = function later() {
27324      timeout = null;
27325      if (!immediate) func.apply(context, args);
27326    };
27327
27328    var callNow = immediate && !timeout;
27329    clearTimeout(timeout);
27330    timeout = setTimeout(later, wait);
27331    if (callNow) func.apply(context, args);
27332  };
27333}
27334
27335/* harmony default export */ __webpack_exports__["default"] = (debounce);
27336
27337/***/ }),
27338
vendor: 1,113 bytes, lines 27339-27362
27339/***/ "./node_modules/spectacle/es/utils/detect-platform.js":
27340/*!************************************************************!*\
27341  !*** ./node_modules/spectacle/es/utils/detect-platform.js ***!
27342  \************************************************************/
27343/*! exports provided: isWindows, isMacOS, isLinux */
27344/***/ (function(module, __webpack_exports__, __webpack_require__) {
27345
27346"use strict";
27347__webpack_require__.r(__webpack_exports__);
27348/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWindows", function() { return isWindows; });
27349/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isMacOS", function() { return isMacOS; });
27350/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLinux", function() { return isLinux; });
27351var isWindows = function isWindows() {
27352  return navigator.platform.toLowerCase().includes('win32');
27353};
27354var isMacOS = function isMacOS() {
27355  return navigator.platform.toLowerCase().includes('macintel');
27356};
27357var isLinux = function isLinux() {
27358  return navigator.platform.toLowerCase().includes('linux');
27359};
27360
27361/***/ }),
27362
vendor: 2,053 bytes, lines 27363-27432
27363/***/ "./node_modules/spectacle/es/utils/indent-normalizer.js":
27364/*!**************************************************************!*\
27365  !*** ./node_modules/spectacle/es/utils/indent-normalizer.js ***!
27366  \**************************************************************/
27367/*! exports provided: default */
27368/***/ (function(module, __webpack_exports__, __webpack_require__) {
27369
27370"use strict";
27371__webpack_require__.r(__webpack_exports__);
27372function _slicedToArray(arr, i) {
27373  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
27374}
27375
27376function _nonIterableRest() {
27377  throw new TypeError("Invalid attempt to destructure non-iterable instance");
27378}
27379
27380function _iterableToArrayLimit(arr, i) {
27381  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
27382    return;
27383  }
27384
27385  var _arr = [];
27386  var _n = true;
27387  var _d = false;
27388  var _e = undefined;
27389
27390  try {
27391    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
27392      _arr.push(_s.value);
27393
27394      if (i && _arr.length === i) break;
27395    }
27396  } catch (err) {
27397    _d = true;
27398    _e = err;
27399  } finally {
27400    try {
27401      if (!_n && _i["return"] != null) _i["return"]();
27402    } finally {
27403      if (_d) throw _e;
27404    }
27405  }
27406
27407  return _arr;
27408}
27409
27410function _arrayWithHoles(arr) {
27411  if (Array.isArray(arr)) return arr;
27412} // Indent to smallest non-empty whitespace level and trim start / end of string.
27413
27414
27415var indentNormalizer = function indentNormalizer(val) {
27416  var prefix = null;
27417  return (val || '').split('\n').filter(function (line) {
27418    var _slice = (line.match(/^([ ]*)([^ ]+)/) || []).slice(1),
27419        _slice2 = _slicedToArray(_slice, 2),
27420        cur = _slice2[0],
27421        remainder = _slice2[1];
27422
27423    return remainder ? (prefix = null === prefix || cur.length < prefix.length ? cur : prefix, !0) : null !== prefix;
27424  }).map(function (line) {
27425    return prefix ? line.replace(prefix, '') : line;
27426  }).join('\n').trimRight();
27427};
27428
27429/* harmony default export */ __webpack_exports__["default"] = (indentNormalizer);
27430
27431/***/ }),
27432
vendor: 1,133 bytes, lines 27433-27458
27433/***/ "./node_modules/spectacle/es/utils/is-component-type.js":
27434/*!**************************************************************!*\
27435  !*** ./node_modules/spectacle/es/utils/is-component-type.js ***!
27436  \**************************************************************/
27437/*! exports provided: default */
27438/***/ (function(module, __webpack_exports__, __webpack_require__) {
27439
27440"use strict";
27441__webpack_require__.r(__webpack_exports__);
27442/** isComponentType(Component, String)
27443 * Takes Component and name (String) of component type you want to test for
27444 * Returns a boolean
27445 * Turned into a util to avoid having to repeatedly check:
27446 * mdx or regular component types.
27447 * May be unnecessary in future, if we treat MDX differently
27448 *
27449 * **Note**: Make sure to pass `Component.name` instead of a string name as
27450 * the `name` parameter or else minification may break functionality.
27451 * See: https://github.com/FormidableLabs/spectacle/issues/763
27452 */
27453/* harmony default export */ __webpack_exports__["default"] = (function (component, name) {
27454  return (component.props || {}).mdxType === name || (component.type || {}).name === name;
27455});
27456
27457/***/ }),
27458
vendor: 3,188 bytes, lines 27459-27539
27459/***/ "./node_modules/spectacle/es/utils/mdx-component-mapper.js":
27460/*!*****************************************************************!*\
27461  !*** ./node_modules/spectacle/es/utils/mdx-component-mapper.js ***!
27462  \*****************************************************************/
27463/*! exports provided: default */
27464/***/ (function(module, __webpack_exports__, __webpack_require__) {
27465
27466"use strict";
27467__webpack_require__.r(__webpack_exports__);
27468/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
27469/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
27470/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ */ "./node_modules/spectacle/es/index.js");
27471function _extends() {
27472  _extends = Object.assign || function (target) {
27473    for (var i = 1; i < arguments.length; i++) {
27474      var source = arguments[i];
27475
27476      for (var key in source) {
27477        if (Object.prototype.hasOwnProperty.call(source, key)) {
27478          target[key] = source[key];
27479        }
27480      }
27481    }
27482
27483    return target;
27484  };
27485
27486  return _extends.apply(this, arguments);
27487}
27488/* eslint-disable react/display-name */
27489
27490
27491
27492
27493var mdxComponentMap = {
27494  p: ___WEBPACK_IMPORTED_MODULE_1__["Text"],
27495  h1: function h1(props) {
27496    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["Heading"], _extends({}, props, {
27497      fontSize: "h1"
27498    }));
27499  },
27500  h2: function h2(props) {
27501    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["Heading"], _extends({}, props, {
27502      fontSize: "h2"
27503    }));
27504  },
27505  h3: function h3(props) {
27506    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["Heading"], _extends({}, props, {
27507      fontSize: "h3"
27508    }));
27509  },
27510  h4: function h4(props) {
27511    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["Heading"], _extends({}, props, {
27512      fontSize: "h4"
27513    }));
27514  },
27515  blockquote: ___WEBPACK_IMPORTED_MODULE_1__["Quote"],
27516  ul: ___WEBPACK_IMPORTED_MODULE_1__["UnorderedList"],
27517  ol: ___WEBPACK_IMPORTED_MODULE_1__["OrderedList"],
27518  li: ___WEBPACK_IMPORTED_MODULE_1__["ListItem"],
27519  img: ___WEBPACK_IMPORTED_MODULE_1__["Image"],
27520  a: ___WEBPACK_IMPORTED_MODULE_1__["Link"],
27521  codeblock: function codeblock(props) {
27522    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["CodePane"], _extends({
27523      autoFillHeight: true
27524    }, props));
27525  },
27526  code: function code(props) {
27527    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["CodePane"], _extends({
27528      autoFillHeight: true
27529    }, props));
27530  },
27531  inlineCode: ___WEBPACK_IMPORTED_MODULE_1__["CodeSpan"],
27532  table: ___WEBPACK_IMPORTED_MODULE_1__["Table"],
27533  tr: ___WEBPACK_IMPORTED_MODULE_1__["TableRow"],
27534  td: ___WEBPACK_IMPORTED_MODULE_1__["TableCell"]
27535};
27536/* harmony default export */ __webpack_exports__["default"] = (mdxComponentMap);
27537
27538/***/ }),
27539
vendor: 1,544 bytes, lines 27540-27585
27540/***/ "./node_modules/spectacle/es/utils/notes.js":
27541/*!**************************************************!*\
27542  !*** ./node_modules/spectacle/es/utils/notes.js ***!
27543  \**************************************************/
27544/*! exports provided: isolateNotes, removeNotes */
27545/***/ (function(module, __webpack_exports__, __webpack_require__) {
27546
27547"use strict";
27548__webpack_require__.r(__webpack_exports__);
27549/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isolateNotes", function() { return isolateNotes; });
27550/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeNotes", function() { return removeNotes; });
27551var NOTES_MARKER = 'Notes: ';
27552var NOTES_REG = new RegExp("^".concat(NOTES_MARKER), 'm');
27553/*
27554 * We want to pull the notes out of each slide. This RegEx looks for "Notes: "
27555 * that starts on a new line. Anything after the notes marker will be considered notes.
27556 */
27557
27558var isolateNotes = function isolateNotes(content) {
27559  var indexOfNotes = content.search(NOTES_REG);
27560
27561  if (indexOfNotes >= 0) {
27562    // found the notes marker!
27563    return content.substring(indexOfNotes + NOTES_MARKER.length);
27564  }
27565
27566  return '';
27567};
27568/*
27569 * When generating the slide components, we only want the slide content to be
27570 * compiled by mdx.sync. Remove all the notes content.
27571 */
27572
27573var removeNotes = function removeNotes(content) {
27574  var indexOfNotes = content.search(NOTES_REG);
27575
27576  if (indexOfNotes >= 0) {
27577    // found the notes marker!
27578    return content.substring(0, indexOfNotes);
27579  }
27580
27581  return content;
27582};
27583
27584/***/ }),
27585
vendor: 1,878 bytes, lines 27586-27623
27586/***/ "./node_modules/spectacle/es/utils/search-children-appear.js":
27587/*!*******************************************************************!*\
27588  !*** ./node_modules/spectacle/es/utils/search-children-appear.js ***!
27589  \*******************************************************************/
27590/*! exports provided: default */
27591/***/ (function(module, __webpack_exports__, __webpack_require__) {
27592
27593"use strict";
27594__webpack_require__.r(__webpack_exports__);
27595/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return searchChildrenForAppear; });
27596/* harmony import */ var _utils_is_component_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/is-component-type */ "./node_modules/spectacle/es/utils/is-component-type.js");
27597/* harmony import */ var _components_appear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/appear */ "./node_modules/spectacle/es/components/appear.js");
27598
27599
27600function searchChildrenForAppear(children) {
27601  var _ref, _children$props;
27602
27603  var isSingleChild = (_ref = children === null || children === void 0 ? void 0 : (_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.children) !== null && _ref !== void 0 ? _ref : false;
27604
27605  if (!Array.isArray(children) && !isSingleChild) {
27606    return 0;
27607  }
27608
27609  return (isSingleChild ? [children] : children).reduce(function (memo, current) {
27610    if (Object(_utils_is_component_type__WEBPACK_IMPORTED_MODULE_0__["default"])(current, _components_appear__WEBPACK_IMPORTED_MODULE_1__["default"].name)) {
27611      memo += 1;
27612    } else {
27613      var _current$props;
27614
27615      memo += searchChildrenForAppear(current === null || current === void 0 ? void 0 : (_current$props = current.props) === null || _current$props === void 0 ? void 0 : _current$props.children);
27616    }
27617
27618    return memo;
27619  }, 0);
27620}
27621
27622/***/ }),
27623
vendor: 1,800 bytes, lines 27624-27658
27624/***/ "./node_modules/spectacle/es/utils/search-children-stepper.js":
27625/*!********************************************************************!*\
27626  !*** ./node_modules/spectacle/es/utils/search-children-stepper.js ***!
27627  \********************************************************************/
27628/*! exports provided: default */
27629/***/ (function(module, __webpack_exports__, __webpack_require__) {
27630
27631"use strict";
27632__webpack_require__.r(__webpack_exports__);
27633/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return searchChildrenForStepper; });
27634/* harmony import */ var _is_component_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-component-type */ "./node_modules/spectacle/es/utils/is-component-type.js");
27635/* harmony import */ var _components_stepper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/stepper */ "./node_modules/spectacle/es/components/stepper.js");
27636
27637
27638function searchChildrenForStepper(children) {
27639  if (!Array.isArray(children)) {
27640    return 0;
27641  }
27642
27643  return children.reduce(function (memo, current) {
27644    var _current$props, _current$props$childr;
27645
27646    if (Object(_is_component_type__WEBPACK_IMPORTED_MODULE_0__["default"])(current, _components_stepper__WEBPACK_IMPORTED_MODULE_1__["default"].name)) {
27647      var values = current.props.values;
27648      memo += Array.isArray(values) ? values.length : 0;
27649    } else if ((current === null || current === void 0 ? void 0 : (_current$props = current.props) === null || _current$props === void 0 ? void 0 : (_current$props$childr = _current$props.children) === null || _current$props$childr === void 0 ? void 0 : _current$props$childr.length) > 0) {
27650      memo += searchChildrenForStepper(current.props.children);
27651    }
27652
27653    return memo;
27654  }, 0);
27655}
27656
27657/***/ }),
27658
vendor: 2,851 bytes, lines 27659-27744
27659/***/ "./node_modules/spectacle/es/utils/use-timer.js":
27660/*!******************************************************!*\
27661  !*** ./node_modules/spectacle/es/utils/use-timer.js ***!
27662  \******************************************************/
27663/*! exports provided: useTimer */
27664/***/ (function(module, __webpack_exports__, __webpack_require__) {
27665
27666"use strict";
27667__webpack_require__.r(__webpack_exports__);
27668/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useTimer", function() { return useTimer; });
27669/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
27670/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
27671function _slicedToArray(arr, i) {
27672  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
27673}
27674
27675function _nonIterableRest() {
27676  throw new TypeError("Invalid attempt to destructure non-iterable instance");
27677}
27678
27679function _iterableToArrayLimit(arr, i) {
27680  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
27681    return;
27682  }
27683
27684  var _arr = [];
27685  var _n = true;
27686  var _d = false;
27687  var _e = undefined;
27688
27689  try {
27690    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
27691      _arr.push(_s.value);
27692
27693      if (i && _arr.length === i) break;
27694    }
27695  } catch (err) {
27696    _d = true;
27697    _e = err;
27698  } finally {
27699    try {
27700      if (!_n && _i["return"] != null) _i["return"]();
27701    } finally {
27702      if (_d) throw _e;
27703    }
27704  }
27705
27706  return _arr;
27707}
27708
27709function _arrayWithHoles(arr) {
27710  if (Array.isArray(arr)) return arr;
27711}
27712
27713
27714var useTimer = function useTimer(handler, period, isActive) {
27715  var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(1),
27716      _React$useState2 = _slicedToArray(_React$useState, 2),
27717      timeDelay = _React$useState2[0],
27718      setTimeDelay = _React$useState2[1];
27719
27720  var initialTime = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef();
27721  var callBack = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef();
27722  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
27723    callBack.current = handler;
27724  }, [handler]); // eslint-disable-next-line consistent-return
27725
27726  react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {
27727    if (isActive) {
27728      initialTime.current = new Date().getTime();
27729      var timer = setInterval(function () {
27730        var currentTime = new Date().getTime();
27731        var delay = currentTime - initialTime.current;
27732        initialTime.current = currentTime;
27733        setTimeDelay(delay / 1000);
27734        callBack.current(timeDelay);
27735      }, period);
27736      return function () {
27737        clearInterval(timer);
27738      };
27739    }
27740  }, [period, isActive, timeDelay]);
27741};
27742
27743/***/ }),
27744
vendor: 6,396 bytes, lines 27745-27935
27745/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/components/Highlight.js":
27746/*!*********************************************************************************************!*\
27747  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/components/Highlight.js ***!
27748  \*********************************************************************************************/
27749/*! exports provided: default */
27750/***/ (function(module, __webpack_exports__, __webpack_require__) {
27751
27752"use strict";
27753__webpack_require__.r(__webpack_exports__);
27754/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
27755/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
27756/* harmony import */ var _utils_normalizeTokens__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/normalizeTokens */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/normalizeTokens.js");
27757/* harmony import */ var _utils_themeToDict__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/themeToDict */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/themeToDict.js");
27758function _extends() {
27759  _extends = Object.assign || function (target) {
27760    for (var i = 1; i < arguments.length; i++) {
27761      var source = arguments[i];
27762
27763      for (var key in source) {
27764        if (Object.prototype.hasOwnProperty.call(source, key)) {
27765          target[key] = source[key];
27766        }
27767      }
27768    }
27769
27770    return target;
27771  };
27772
27773  return _extends.apply(this, arguments);
27774}
27775
27776function _objectWithoutPropertiesLoose(source, excluded) {
27777  if (source == null) return {};
27778  var target = {};
27779  var sourceKeys = Object.keys(source);
27780  var key, i;
27781
27782  for (i = 0; i < sourceKeys.length; i++) {
27783    key = sourceKeys[i];
27784    if (excluded.indexOf(key) >= 0) continue;
27785    target[key] = source[key];
27786  }
27787
27788  return target;
27789}
27790
27791function _inheritsLoose(subClass, superClass) {
27792  subClass.prototype = Object.create(superClass.prototype);
27793  subClass.prototype.constructor = subClass;
27794  subClass.__proto__ = superClass;
27795}
27796
27797
27798
27799
27800
27801var Highlight = /*#__PURE__*/function (_Component) {
27802  _inheritsLoose(Highlight, _Component);
27803
27804  function Highlight() {
27805    var _this;
27806
27807    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
27808      args[_key] = arguments[_key];
27809    }
27810
27811    _this = _Component.call.apply(_Component, [this].concat(args)) || this;
27812    _this.prevTheme = void 0;
27813    _this.prevLanguage = void 0;
27814    _this.themeDict = void 0;
27815
27816    _this.getThemeDict = function (props) {
27817      if (_this.themeDict !== undefined && props.theme === _this.prevTheme && props.language === _this.prevLanguage) {
27818        return _this.themeDict;
27819      }
27820
27821      _this.prevTheme = props.theme;
27822      _this.prevLanguage = props.language;
27823      var themeDict = props.theme ? Object(_utils_themeToDict__WEBPACK_IMPORTED_MODULE_2__["default"])(props.theme, props.language) : undefined;
27824      return _this.themeDict = themeDict;
27825    };
27826
27827    _this.getLineProps = function (_ref) {
27828      var key = _ref.key,
27829          className = _ref.className,
27830          style = _ref.style,
27831          line = _ref.line,
27832          rest = _objectWithoutPropertiesLoose(_ref, ["key", "className", "style", "line"]);
27833
27834      var output = _extends({}, rest, {
27835        className: "token-line",
27836        style: undefined,
27837        key: undefined
27838      });
27839
27840      var themeDict = _this.getThemeDict(_this.props);
27841
27842      if (themeDict !== undefined) {
27843        output.style = themeDict.plain;
27844      }
27845
27846      if (style !== undefined) {
27847        output.style = output.style !== undefined ? _extends({}, output.style, style) : style;
27848      }
27849
27850      if (key !== undefined) output.key = key;
27851      if (className) output.className += " " + className;
27852      return output;
27853    };
27854
27855    _this.getStyleForToken = function (_ref2) {
27856      var types = _ref2.types,
27857          empty = _ref2.empty;
27858      var typesSize = types.length;
27859
27860      var themeDict = _this.getThemeDict(_this.props);
27861
27862      if (themeDict === undefined) {
27863        return undefined;
27864      } else if (typesSize === 1 && types[0] === "plain") {
27865        return empty ? {
27866          display: "inline-block"
27867        } : undefined;
27868      } else if (typesSize === 1 && !empty) {
27869        return themeDict[types[0]];
27870      }
27871
27872      var baseStyle = empty ? {
27873        display: "inline-block"
27874      } : {}; // $FlowFixMe
27875
27876      var typeStyles = types.map(function (type) {
27877        return themeDict[type];
27878      });
27879      return Object.assign.apply(Object, [baseStyle].concat(typeStyles));
27880    };
27881
27882    _this.getTokenProps = function (_ref3) {
27883      var key = _ref3.key,
27884          className = _ref3.className,
27885          style = _ref3.style,
27886          token = _ref3.token,
27887          rest = _objectWithoutPropertiesLoose(_ref3, ["key", "className", "style", "token"]);
27888
27889      var output = _extends({}, rest, {
27890        className: "token " + token.types.join(" "),
27891        children: token.content,
27892        style: _this.getStyleForToken(token),
27893        key: undefined
27894      });
27895
27896      if (style !== undefined) {
27897        output.style = output.style !== undefined ? _extends({}, output.style, style) : style;
27898      }
27899
27900      if (key !== undefined) output.key = key;
27901      if (className) output.className += " " + className;
27902      return output;
27903    };
27904
27905    return _this;
27906  }
27907
27908  var _proto = Highlight.prototype;
27909
27910  _proto.render = function render() {
27911    var _this$props = this.props,
27912        Prism = _this$props.Prism,
27913        language = _this$props.language,
27914        code = _this$props.code,
27915        children = _this$props.children;
27916    var themeDict = this.getThemeDict(this.props);
27917    var grammar = Prism.languages[language];
27918    var mixedTokens = grammar !== undefined ? Prism.tokenize(code, grammar, language) : [code];
27919    var tokens = Object(_utils_normalizeTokens__WEBPACK_IMPORTED_MODULE_1__["default"])(mixedTokens);
27920    return children({
27921      tokens: tokens,
27922      className: "prism-code language-" + language,
27923      style: themeDict !== undefined ? themeDict.root : {},
27924      getLineProps: this.getLineProps,
27925      getTokenProps: this.getTokenProps
27926    });
27927  };
27928
27929  return Highlight;
27930}(react__WEBPACK_IMPORTED_MODULE_0__["Component"]);
27931
27932/* harmony default export */ __webpack_exports__["default"] = (Highlight);
27933
27934/***/ }),
27935
vendor: 1,363 bytes, lines 27936-27958
27936/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/defaultProps.js":
27937/*!*************************************************************************************!*\
27938  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/defaultProps.js ***!
27939  \*************************************************************************************/
27940/*! exports provided: default */
27941/***/ (function(module, __webpack_exports__, __webpack_require__) {
27942
27943"use strict";
27944__webpack_require__.r(__webpack_exports__);
27945/* harmony import */ var _vendor_prism__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vendor/prism */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/index.js");
27946/* harmony import */ var _themes_duotoneDark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../themes/duotoneDark */ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/duotoneDark.js");
27947/* harmony import */ var _themes_duotoneDark__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_themes_duotoneDark__WEBPACK_IMPORTED_MODULE_1__);
27948
27949
27950var defaultProps = {
27951  // $FlowFixMe
27952  Prism: _vendor_prism__WEBPACK_IMPORTED_MODULE_0__["default"],
27953  theme: _themes_duotoneDark__WEBPACK_IMPORTED_MODULE_1___default.a
27954};
27955/* harmony default export */ __webpack_exports__["default"] = (defaultProps);
27956
27957/***/ }),
27958
vendor: 1,598 bytes, lines 27959-27982
27959/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/index.js":
27960/*!******************************************************************************!*\
27961  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/index.js ***!
27962  \******************************************************************************/
27963/*! exports provided: Prism, defaultProps, default */
27964/***/ (function(module, __webpack_exports__, __webpack_require__) {
27965
27966"use strict";
27967__webpack_require__.r(__webpack_exports__);
27968/* harmony import */ var _vendor_prism__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vendor/prism */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/index.js");
27969/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Prism", function() { return _vendor_prism__WEBPACK_IMPORTED_MODULE_0__["default"]; });
27970
27971/* harmony import */ var _defaultProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultProps */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/defaultProps.js");
27972/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultProps", function() { return _defaultProps__WEBPACK_IMPORTED_MODULE_1__["default"]; });
27973
27974/* harmony import */ var _components_Highlight__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Highlight */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/components/Highlight.js");
27975
27976
27977
27978
27979/* harmony default export */ __webpack_exports__["default"] = (_components_Highlight__WEBPACK_IMPORTED_MODULE_2__["default"]);
27980
27981/***/ }),
27982
vendor: 3,584 bytes, lines 27983-28095
27983/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/normalizeTokens.js":
27984/*!**********************************************************************************************!*\
27985  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/normalizeTokens.js ***!
27986  \**********************************************************************************************/
27987/*! exports provided: default */
27988/***/ (function(module, __webpack_exports__, __webpack_require__) {
27989
27990"use strict";
27991__webpack_require__.r(__webpack_exports__);
27992var newlineRe = /\r\n|\r|\n/; // Empty lines need to contain a single empty token, denoted with { empty: true }
27993
27994var normalizeEmptyLines = function normalizeEmptyLines(line) {
27995  if (line.length === 0) {
27996    line.push({
27997      types: ["plain"],
27998      content: "",
27999      empty: true
28000    });
28001  } else if (line.length === 1 && line[0].content === "") {
28002    line[0].empty = true;
28003  }
28004};
28005
28006var appendTypes = function appendTypes(types, add) {
28007  var typesSize = types.length;
28008
28009  if (typesSize > 0 && types[typesSize - 1] === add) {
28010    return types;
28011  }
28012
28013  return types.concat(add);
28014}; // Takes an array of Prism's tokens and groups them by line, turning plain
28015// strings into tokens as well. Tokens can become recursive in some cases,
28016// which means that their types are concatenated. Plain-string tokens however
28017// are always of type "plain".
28018// This is not recursive to avoid exceeding the call-stack limit, since it's unclear
28019// how nested Prism's tokens can become
28020
28021
28022var normalizeTokens = function normalizeTokens(tokens) {
28023  var typeArrStack = [[]];
28024  var tokenArrStack = [tokens];
28025  var tokenArrIndexStack = [0];
28026  var tokenArrSizeStack = [tokens.length];
28027  var i = 0;
28028  var stackIndex = 0;
28029  var currentLine = [];
28030  var acc = [currentLine];
28031
28032  while (stackIndex > -1) {
28033    while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {
28034      var content = void 0;
28035      var types = typeArrStack[stackIndex];
28036      var tokenArr = tokenArrStack[stackIndex];
28037      var token = tokenArr[i]; // Determine content and append type to types if necessary
28038
28039      if (typeof token === "string") {
28040        types = stackIndex > 0 ? types : ["plain"];
28041        content = token;
28042      } else {
28043        types = appendTypes(types, token.type);
28044
28045        if (token.alias) {
28046          types = appendTypes(types, token.alias);
28047        }
28048
28049        content = token.content;
28050      } // If token.content is an array, increase the stack depth and repeat this while-loop
28051
28052
28053      if (typeof content !== "string") {
28054        stackIndex++;
28055        typeArrStack.push(types);
28056        tokenArrStack.push(content);
28057        tokenArrIndexStack.push(0);
28058        tokenArrSizeStack.push(content.length);
28059        continue;
28060      } // Split by newlines
28061
28062
28063      var splitByNewlines = content.split(newlineRe);
28064      var newlineCount = splitByNewlines.length;
28065      currentLine.push({
28066        types: types,
28067        content: splitByNewlines[0]
28068      }); // Create a new line for each string on a new line
28069
28070      for (var _i = 1; _i < newlineCount; _i++) {
28071        normalizeEmptyLines(currentLine);
28072        acc.push(currentLine = []);
28073        currentLine.push({
28074          types: types,
28075          content: splitByNewlines[_i]
28076        });
28077      }
28078    } // Decreate the stack depth
28079
28080
28081    stackIndex--;
28082    typeArrStack.pop();
28083    tokenArrStack.pop();
28084    tokenArrIndexStack.pop();
28085    tokenArrSizeStack.pop();
28086  }
28087
28088  normalizeEmptyLines(currentLine);
28089  return acc;
28090};
28091
28092/* harmony default export */ __webpack_exports__["default"] = (normalizeTokens);
28093
28094/***/ }),
28095
vendor: 1,742 bytes, lines 28096-28156
28096/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/themeToDict.js":
28097/*!******************************************************************************************!*\
28098  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/themeToDict.js ***!
28099  \******************************************************************************************/
28100/*! exports provided: default */
28101/***/ (function(module, __webpack_exports__, __webpack_require__) {
28102
28103"use strict";
28104__webpack_require__.r(__webpack_exports__);
28105function _extends() {
28106  _extends = Object.assign || function (target) {
28107    for (var i = 1; i < arguments.length; i++) {
28108      var source = arguments[i];
28109
28110      for (var key in source) {
28111        if (Object.prototype.hasOwnProperty.call(source, key)) {
28112          target[key] = source[key];
28113        }
28114      }
28115    }
28116
28117    return target;
28118  };
28119
28120  return _extends.apply(this, arguments);
28121}
28122
28123var themeToDict = function themeToDict(theme, language) {
28124  var plain = theme.plain; // $FlowFixMe
28125
28126  var base = Object.create(null);
28127  var themeDict = theme.styles.reduce(function (acc, themeEntry) {
28128    var types = themeEntry.types,
28129        languages = themeEntry.languages,
28130        style = themeEntry.style;
28131
28132    if (languages && !languages.includes(language)) {
28133      return acc;
28134    }
28135
28136    themeEntry.types.forEach(function (type) {
28137      // $FlowFixMe
28138      var accStyle = _extends({}, acc[type], style);
28139
28140      acc[type] = accStyle;
28141    });
28142    return acc;
28143  }, base); // $FlowFixMe
28144
28145  themeDict.root = plain; // $FlowFixMe
28146
28147  themeDict.plain = _extends({}, plain, {
28148    backgroundColor: null
28149  });
28150  return themeDict;
28151};
28152
28153/* harmony default export */ __webpack_exports__["default"] = (themeToDict);
28154
28155/***/ }),
28156
vendor: 84,254 bytes, lines 28157-30378
28157/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/index.js":
28158/*!*******************************************************************************************!*\
28159  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/index.js ***!
28160  \*******************************************************************************************/
28161/*! exports provided: default */
28162/***/ (function(module, __webpack_exports__, __webpack_require__) {
28163
28164"use strict";
28165__webpack_require__.r(__webpack_exports__);
28166/* harmony import */ var _prism_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prism-core */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/prism-core.js");
28167/* harmony import */ var _prism_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_prism_core__WEBPACK_IMPORTED_MODULE_0__);
28168
28169/* This content is auto-generated to include some prismjs language components: */
28170
28171/* "prismjs/components/prism-markup" */
28172
28173_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup = {
28174  'comment': /<!--[\s\S]*?-->/,
28175  'prolog': /<\?[\s\S]+?\?>/,
28176  'doctype': /<!DOCTYPE[\s\S]+?>/i,
28177  'cdata': /<!\[CDATA\[[\s\S]*?]]>/i,
28178  'tag': {
28179    pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,
28180    greedy: true,
28181    inside: {
28182      'tag': {
28183        pattern: /^<\/?[^\s>\/]+/i,
28184        inside: {
28185          'punctuation': /^<\/?/,
28186          'namespace': /^[^\s>\/:]+:/
28187        }
28188      },
28189      'attr-value': {
28190        pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,
28191        inside: {
28192          'punctuation': [/^=/, {
28193            pattern: /^(\s*)["']|["']$/,
28194            lookbehind: true
28195          }]
28196        }
28197      },
28198      'punctuation': /\/?>/,
28199      'attr-name': {
28200        pattern: /[^\s>\/]+/,
28201        inside: {
28202          'namespace': /^[^\s>\/:]+:/
28203        }
28204      }
28205    }
28206  },
28207  'entity': /&#?[\da-z]{1,8};/i
28208};
28209_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup['tag'].inside['attr-value'].inside['entity'] = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup['entity']; // Plugin to make entity title show the real entity, idea by Roman Komarov
28210
28211_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.hooks.add('wrap', function (env) {
28212  if (env.type === 'entity') {
28213    env.attributes['title'] = env.content.replace(/&amp;/, '&');
28214  }
28215});
28216Object.defineProperty(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup.tag, 'addInlined', {
28217  /**
28218   * Adds an inlined language to markup.
28219   *
28220   * An example of an inlined language is CSS with `<style>` tags.
28221   *
28222   * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as
28223   * case insensitive.
28224   * @param {string} lang The language key.
28225   * @example
28226   * addInlined('style', 'css');
28227   */
28228  value: function addInlined(tagName, lang) {
28229    var includedCdataInside = {};
28230    includedCdataInside['language-' + lang] = {
28231      pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,
28232      lookbehind: true,
28233      inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages[lang]
28234    };
28235    includedCdataInside['cdata'] = /^<!\[CDATA\[|\]\]>$/i;
28236    var inside = {
28237      'included-cdata': {
28238        pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
28239        inside: includedCdataInside
28240      }
28241    };
28242    inside['language-' + lang] = {
28243      pattern: /[\s\S]+/,
28244      inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages[lang]
28245    };
28246    var def = {};
28247    def[tagName] = {
28248      pattern: RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g, tagName), 'i'),
28249      lookbehind: true,
28250      greedy: true,
28251      inside: inside
28252    };
28253    _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('markup', 'cdata', def);
28254  }
28255});
28256_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.xml = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('markup', {});
28257_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.html = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup;
28258_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.mathml = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup;
28259_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.svg = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup;
28260/* "prismjs/components/prism-bash" */
28261
28262(function (Prism) {
28263  var insideString = {
28264    variable: [// Arithmetic Environment
28265    {
28266      pattern: /\$?\(\([\s\S]+?\)\)/,
28267      inside: {
28268        // If there is a $ sign at the beginning highlight $(( and )) as variable
28269        variable: [{
28270          pattern: /(^\$\(\([\s\S]+)\)\)/,
28271          lookbehind: true
28272        }, /^\$\(\(/],
28273        number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,
28274        // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic
28275        operator: /--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,
28276        // If there is no $ sign at the beginning highlight (( and )) as punctuation
28277        punctuation: /\(\(?|\)\)?|,|;/
28278      }
28279    }, // Command Substitution
28280    {
28281      pattern: /\$\([^)]+\)|`[^`]+`/,
28282      greedy: true,
28283      inside: {
28284        variable: /^\$\(|^`|\)$|`$/
28285      }
28286    }, /\$(?:[\w#?*!@]+|\{[^}]+\})/i]
28287  };
28288  Prism.languages.bash = {
28289    'shebang': {
28290      pattern: /^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,
28291      alias: 'important'
28292    },
28293    'comment': {
28294      pattern: /(^|[^"{\\])#.*/,
28295      lookbehind: true
28296    },
28297    'string': [//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document
28298    {
28299      pattern: /((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,
28300      lookbehind: true,
28301      greedy: true,
28302      inside: insideString
28303    }, {
28304      pattern: /(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,
28305      greedy: true,
28306      inside: insideString
28307    }],
28308    'variable': insideString.variable,
28309    // Originally based on http://ss64.com/bash/
28310    'function': {
28311      pattern: /(^|[\s;|&])(?:add|alias|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|hash|head|help|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logout|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tail|tar|tee|test|time|timeout|times|top|touch|tr|traceroute|trap|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zip|zypper)(?=$|[\s;|&])/,
28312      lookbehind: true
28313    },
28314    'keyword': {
28315      pattern: /(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,
28316      lookbehind: true
28317    },
28318    'boolean': {
28319      pattern: /(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,
28320      lookbehind: true
28321    },
28322    'operator': /&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/,
28323    'punctuation': /\$?\(\(?|\)\)?|\.\.|[{}[\];]/
28324  };
28325  var inside = insideString.variable[1].inside;
28326  inside.string = Prism.languages.bash.string;
28327  inside['function'] = Prism.languages.bash['function'];
28328  inside.keyword = Prism.languages.bash.keyword;
28329  inside['boolean'] = Prism.languages.bash['boolean'];
28330  inside.operator = Prism.languages.bash.operator;
28331  inside.punctuation = Prism.languages.bash.punctuation;
28332  Prism.languages.shell = Prism.languages.bash;
28333})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
28334/* "prismjs/components/prism-clike" */
28335
28336
28337_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.clike = {
28338  'comment': [{
28339    pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,
28340    lookbehind: true
28341  }, {
28342    pattern: /(^|[^\\:])\/\/.*/,
28343    lookbehind: true,
28344    greedy: true
28345  }],
28346  'string': {
28347    pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
28348    greedy: true
28349  },
28350  'class-name': {
28351    pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,
28352    lookbehind: true,
28353    inside: {
28354      punctuation: /[.\\]/
28355    }
28356  },
28357  'keyword': /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
28358  'boolean': /\b(?:true|false)\b/,
28359  'function': /\w+(?=\()/,
28360  'number': /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,
28361  'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
28362  'punctuation': /[{}[\];(),.:]/
28363};
28364/* "prismjs/components/prism-c" */
28365
28366_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.c = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('clike', {
28367  'class-name': {
28368    pattern: /(\b(?:enum|struct)\s+)\w+/,
28369    lookbehind: true
28370  },
28371  'keyword': /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,
28372  'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,
28373  'number': /(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i
28374});
28375_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('c', 'string', {
28376  'macro': {
28377    // allow for multiline macro definitions
28378    // spaces after the # character compile fine with gcc
28379    pattern: /(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,
28380    lookbehind: true,
28381    alias: 'property',
28382    inside: {
28383      // highlight the path of the include statement as a string
28384      'string': {
28385        pattern: /(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,
28386        lookbehind: true
28387      },
28388      // highlight macro directives as keywords
28389      'directive': {
28390        pattern: /(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,
28391        lookbehind: true,
28392        alias: 'keyword'
28393      }
28394    }
28395  },
28396  // highlight predefined macros as constants
28397  'constant': /\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/
28398});
28399delete _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.c['boolean'];
28400/* "prismjs/components/prism-cpp" */
28401
28402_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.cpp = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('c', {
28403  'class-name': {
28404    pattern: /(\b(?:class|enum|struct)\s+)\w+/,
28405    lookbehind: true
28406  },
28407  'keyword': /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,
28408  'boolean': /\b(?:true|false)\b/,
28409  'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/
28410});
28411_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('cpp', 'string', {
28412  'raw-string': {
28413    pattern: /R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,
28414    alias: 'string',
28415    greedy: true
28416  }
28417});
28418/* "prismjs/components/prism-css" */
28419
28420(function (Prism) {
28421  var string = /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;
28422  Prism.languages.css = {
28423    'comment': /\/\*[\s\S]*?\*\//,
28424    'atrule': {
28425      pattern: /@[\w-]+?[\s\S]*?(?:;|(?=\s*\{))/i,
28426      inside: {
28427        'rule': /@[\w-]+/ // See rest below
28428
28429      }
28430    },
28431    'url': RegExp('url\\((?:' + string.source + '|.*?)\\)', 'i'),
28432    'selector': RegExp('[^{}\\s](?:[^{};"\']|' + string.source + ')*?(?=\\s*\\{)'),
28433    'string': {
28434      pattern: string,
28435      greedy: true
28436    },
28437    'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,
28438    'important': /!important\b/i,
28439    'function': /[-a-z0-9]+(?=\()/i,
28440    'punctuation': /[(){};:,]/
28441  };
28442  Prism.languages.css['atrule'].inside.rest = Prism.languages.css;
28443  var markup = Prism.languages.markup;
28444
28445  if (markup) {
28446    markup.tag.addInlined('style', 'css');
28447    Prism.languages.insertBefore('inside', 'attr-value', {
28448      'style-attr': {
28449        pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,
28450        inside: {
28451          'attr-name': {
28452            pattern: /^\s*style/i,
28453            inside: markup.tag.inside
28454          },
28455          'punctuation': /^\s*=\s*['"]|['"]\s*$/,
28456          'attr-value': {
28457            pattern: /.+/i,
28458            inside: Prism.languages.css
28459          }
28460        },
28461        alias: 'language-css'
28462      }
28463    }, markup.tag);
28464  }
28465})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
28466/* "prismjs/components/prism-css-extras" */
28467
28468
28469_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.css.selector = {
28470  pattern: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.css.selector,
28471  inside: {
28472    'pseudo-element': /:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,
28473    'pseudo-class': /:[-\w]+/,
28474    'class': /\.[-:.\w]+/,
28475    'id': /#[-:.\w]+/,
28476    'attribute': {
28477      pattern: /\[(?:[^[\]"']|("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1)*\]/,
28478      greedy: true,
28479      inside: {
28480        'punctuation': /^\[|\]$/,
28481        'case-sensitivity': {
28482          pattern: /(\s)[si]$/i,
28483          lookbehind: true,
28484          alias: 'keyword'
28485        },
28486        'namespace': {
28487          pattern: /^(\s*)[-*\w\xA0-\uFFFF]*\|(?!=)/,
28488          lookbehind: true,
28489          inside: {
28490            'punctuation': /\|$/
28491          }
28492        },
28493        'attribute': {
28494          pattern: /^(\s*)[-\w\xA0-\uFFFF]+/,
28495          lookbehind: true
28496        },
28497        'value': [/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, {
28498          pattern: /(=\s*)[-\w\xA0-\uFFFF]+(?=\s*$)/,
28499          lookbehind: true
28500        }],
28501        'operator': /[|~*^$]?=/
28502      }
28503    },
28504    'n-th': {
28505      pattern: /(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,
28506      lookbehind: true,
28507      inside: {
28508        'number': /[\dn]+/,
28509        'operator': /[+-]/
28510      }
28511    },
28512    'punctuation': /[()]/
28513  }
28514};
28515_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('css', 'property', {
28516  'variable': {
28517    pattern: /(^|[^-\w\xA0-\uFFFF])--[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*/i,
28518    lookbehind: true
28519  }
28520});
28521_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('css', 'function', {
28522  'operator': {
28523    pattern: /(\s)[+\-*\/](?=\s)/,
28524    lookbehind: true
28525  },
28526  'hexcode': /#[\da-f]{3,8}/i,
28527  'entity': /\\[\da-f]{1,8}/i,
28528  'unit': {
28529    pattern: /(\d)(?:%|[a-z]+)/,
28530    lookbehind: true
28531  },
28532  'number': /-?[\d.]+/
28533});
28534/* "prismjs/components/prism-javascript" */
28535
28536_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('clike', {
28537  'class-name': [_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.clike['class-name'], {
28538    pattern: /(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,
28539    lookbehind: true
28540  }],
28541  'keyword': [{
28542    pattern: /((?:^|})\s*)(?:catch|finally)\b/,
28543    lookbehind: true
28544  }, {
28545    pattern: /(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,
28546    lookbehind: true
28547  }],
28548  'number': /\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,
28549  // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
28550  'function': /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
28551  'operator': /-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/
28552});
28553_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript['class-name'][0].pattern = /(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/;
28554_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('javascript', 'keyword', {
28555  'regex': {
28556    pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,
28557    lookbehind: true,
28558    greedy: true
28559  },
28560  // This must be declared before keyword because we use "function" inside the look-forward
28561  'function-variable': {
28562    pattern: /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,
28563    alias: 'function'
28564  },
28565  'parameter': [{
28566    pattern: /(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,
28567    lookbehind: true,
28568    inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript
28569  }, {
28570    pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,
28571    inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript
28572  }, {
28573    pattern: /(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,
28574    lookbehind: true,
28575    inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript
28576  }, {
28577    pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,
28578    lookbehind: true,
28579    inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript
28580  }],
28581  'constant': /\b[A-Z](?:[A-Z_]|\dx?)*\b/
28582});
28583_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('javascript', 'string', {
28584  'template-string': {
28585    pattern: /`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,
28586    greedy: true,
28587    inside: {
28588      'interpolation': {
28589        pattern: /\${[^}]+}/,
28590        inside: {
28591          'interpolation-punctuation': {
28592            pattern: /^\${|}$/,
28593            alias: 'punctuation'
28594          },
28595          rest: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript
28596        }
28597      },
28598      'string': /[\s\S]+/
28599    }
28600  }
28601});
28602
28603if (_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup) {
28604  _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup.tag.addInlined('script', 'javascript');
28605}
28606
28607_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.js = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript;
28608/* "prismjs/components/prism-jsx" */
28609
28610(function (Prism) {
28611  var javascript = Prism.util.clone(Prism.languages.javascript);
28612  Prism.languages.jsx = Prism.languages.extend('markup', javascript);
28613  Prism.languages.jsx.tag.pattern = /<\/?(?:[\w.:-]+\s*(?:\s+(?:[\w.:-]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s{'">=]+|\{(?:\{(?:\{[^}]*\}|[^{}])*\}|[^{}])+\}))?|\{\.{3}[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\}))*\s*\/?)?>/i;
28614  Prism.languages.jsx.tag.inside['tag'].pattern = /^<\/?[^\s>\/]*/i;
28615  Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\{)(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">]+)/i;
28616  Prism.languages.jsx.tag.inside['tag'].inside['class-name'] = /^[A-Z]\w*(?:\.[A-Z]\w*)*$/;
28617  Prism.languages.insertBefore('inside', 'attr-name', {
28618    'spread': {
28619      pattern: /\{\.{3}[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\}/,
28620      inside: {
28621        'punctuation': /\.{3}|[{}.]/,
28622        'attr-value': /\w+/
28623      }
28624    }
28625  }, Prism.languages.jsx.tag);
28626  Prism.languages.insertBefore('inside', 'attr-value', {
28627    'script': {
28628      // Allow for two levels of nesting
28629      pattern: /=(\{(?:\{(?:\{[^}]*\}|[^}])*\}|[^}])+\})/i,
28630      inside: {
28631        'script-punctuation': {
28632          pattern: /^=(?={)/,
28633          alias: 'punctuation'
28634        },
28635        rest: Prism.languages.jsx
28636      },
28637      'alias': 'language-javascript'
28638    }
28639  }, Prism.languages.jsx.tag); // The following will handle plain text inside tags
28640
28641  var stringifyToken = function stringifyToken(token) {
28642    if (!token) {
28643      return '';
28644    }
28645
28646    if (typeof token === 'string') {
28647      return token;
28648    }
28649
28650    if (typeof token.content === 'string') {
28651      return token.content;
28652    }
28653
28654    return token.content.map(stringifyToken).join('');
28655  };
28656
28657  var walkTokens = function walkTokens(tokens) {
28658    var openedTags = [];
28659
28660    for (var i = 0; i < tokens.length; i++) {
28661      var token = tokens[i];
28662      var notTagNorBrace = false;
28663
28664      if (typeof token !== 'string') {
28665        if (token.type === 'tag' && token.content[0] && token.content[0].type === 'tag') {
28666          // We found a tag, now find its kind
28667          if (token.content[0].content[0].content === '</') {
28668            // Closing tag
28669            if (openedTags.length > 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) {
28670              // Pop matching opening tag
28671              openedTags.pop();
28672            }
28673          } else {
28674            if (token.content[token.content.length - 1].content === '/>') {} else {
28675              // Opening tag
28676              openedTags.push({
28677                tagName: stringifyToken(token.content[0].content[1]),
28678                openedBraces: 0
28679              });
28680            }
28681          }
28682        } else if (openedTags.length > 0 && token.type === 'punctuation' && token.content === '{') {
28683          // Here we might have entered a JSX context inside a tag
28684          openedTags[openedTags.length - 1].openedBraces++;
28685        } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === 'punctuation' && token.content === '}') {
28686          // Here we might have left a JSX context inside a tag
28687          openedTags[openedTags.length - 1].openedBraces--;
28688        } else {
28689          notTagNorBrace = true;
28690        }
28691      }
28692
28693      if (notTagNorBrace || typeof token === 'string') {
28694        if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) {
28695          // Here we are inside a tag, and not inside a JSX context.
28696          // That's plain text: drop any tokens matched.
28697          var plainText = stringifyToken(token); // And merge text with adjacent text
28698
28699          if (i < tokens.length - 1 && (typeof tokens[i + 1] === 'string' || tokens[i + 1].type === 'plain-text')) {
28700            plainText += stringifyToken(tokens[i + 1]);
28701            tokens.splice(i + 1, 1);
28702          }
28703
28704          if (i > 0 && (typeof tokens[i - 1] === 'string' || tokens[i - 1].type === 'plain-text')) {
28705            plainText = stringifyToken(tokens[i - 1]) + plainText;
28706            tokens.splice(i - 1, 1);
28707            i--;
28708          }
28709
28710          tokens[i] = new Prism.Token('plain-text', plainText, null, plainText);
28711        }
28712      }
28713
28714      if (token.content && typeof token.content !== 'string') {
28715        walkTokens(token.content);
28716      }
28717    }
28718  };
28719
28720  Prism.hooks.add('after-tokenize', function (env) {
28721    if (env.language !== 'jsx' && env.language !== 'tsx') {
28722      return;
28723    }
28724
28725    walkTokens(env.tokens);
28726  });
28727})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
28728/* "prismjs/components/prism-javadoclike" */
28729
28730
28731(function (Prism) {
28732  var javaDocLike = Prism.languages.javadoclike = {
28733    'parameter': {
28734      pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,
28735      lookbehind: true
28736    },
28737    'keyword': {
28738      // keywords are the first word in a line preceded be an `@` or surrounded by curly braces.
28739      // @word, {@word}
28740      pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,
28741      lookbehind: true
28742    },
28743    'punctuation': /[{}]/
28744  };
28745  /**
28746   * Adds doc comment support to the given language and calls a given callback on each doc comment pattern.
28747   *
28748   * @param {string} lang the language add doc comment support to.
28749   * @param {(pattern: {inside: {rest: undefined}}) => void} callback the function called with each doc comment pattern as argument.
28750   */
28751
28752  function docCommentSupport(lang, callback) {
28753    var tokenName = 'doc-comment';
28754    var grammar = Prism.languages[lang];
28755
28756    if (!grammar) {
28757      return;
28758    }
28759
28760    var token = grammar[tokenName];
28761
28762    if (!token) {
28763      // add doc comment: /** */
28764      var definition = {};
28765      definition[tokenName] = {
28766        pattern: /(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,
28767        alias: 'comment'
28768      };
28769      grammar = Prism.languages.insertBefore(lang, 'comment', definition);
28770      token = grammar[tokenName];
28771    }
28772
28773    if (token instanceof RegExp) {
28774      // convert regex to object
28775      token = grammar[tokenName] = {
28776        pattern: token
28777      };
28778    }
28779
28780    if (Array.isArray(token)) {
28781      for (var i = 0, l = token.length; i < l; i++) {
28782        if (token[i] instanceof RegExp) {
28783          token[i] = {
28784            pattern: token[i]
28785          };
28786        }
28787
28788        callback(token[i]);
28789      }
28790    } else {
28791      callback(token);
28792    }
28793  }
28794  /**
28795   * Adds doc-comment support to the given languages for the given documentation language.
28796   *
28797   * @param {string[]|string} languages
28798   * @param {Object} docLanguage
28799   */
28800
28801
28802  function addSupport(languages, docLanguage) {
28803    if (typeof languages === 'string') {
28804      languages = [languages];
28805    }
28806
28807    languages.forEach(function (lang) {
28808      docCommentSupport(lang, function (pattern) {
28809        if (!pattern.inside) {
28810          pattern.inside = {};
28811        }
28812
28813        pattern.inside.rest = docLanguage;
28814      });
28815    });
28816  }
28817
28818  Object.defineProperty(javaDocLike, 'addSupport', {
28819    value: addSupport
28820  });
28821  javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike);
28822})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
28823/* "prismjs/components/prism-java" */
28824
28825
28826(function (Prism) {
28827  var keywords = /\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var|null|exports|module|open|opens|provides|requires|to|transitive|uses|with)\b/; // based on the java naming conventions
28828
28829  var className = /\b[A-Z](?:\w*[a-z]\w*)?\b/;
28830  Prism.languages.java = Prism.languages.extend('clike', {
28831    'class-name': [className, // variables and parameters
28832    // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)
28833    /\b[A-Z]\w*(?=\s+\w+\s*[;,=())])/],
28834    'keyword': keywords,
28835    'function': [Prism.languages.clike.function, {
28836      pattern: /(\:\:)[a-z_]\w*/,
28837      lookbehind: true
28838    }],
28839    'number': /\b0b[01][01_]*L?\b|\b0x[\da-f_]*\.?[\da-f_p+-]+\b|(?:\b\d[\d_]*\.?[\d_]*|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,
28840    'operator': {
28841      pattern: /(^|[^.])(?:<<=?|>>>?=?|->|([-+&|])\2|[?:~]|[-+*/%&|^!=<>]=?)/m,
28842      lookbehind: true
28843    }
28844  });
28845  Prism.languages.insertBefore('java', 'class-name', {
28846    'annotation': {
28847      alias: 'punctuation',
28848      pattern: /(^|[^.])@\w+/,
28849      lookbehind: true
28850    },
28851    'namespace': {
28852      pattern: /(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)[a-z]\w*(\.[a-z]\w*)+/,
28853      lookbehind: true,
28854      inside: {
28855        'punctuation': /\./
28856      }
28857    },
28858    'generics': {
28859      pattern: /<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,
28860      inside: {
28861        'class-name': className,
28862        'keyword': keywords,
28863        'punctuation': /[<>(),.:]/,
28864        'operator': /[?&|]/
28865      }
28866    }
28867  });
28868})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
28869/* "prismjs/components/prism-markup-templating" */
28870
28871
28872(function (Prism) {
28873  /**
28874   * Returns the placeholder for the given language id and index.
28875   *
28876   * @param {string} language
28877   * @param {string|number} index
28878   * @returns {string}
28879   */
28880  function getPlaceholder(language, index) {
28881    return '___' + language.toUpperCase() + index + '___';
28882  }
28883
28884  Object.defineProperties(Prism.languages['markup-templating'] = {}, {
28885    buildPlaceholders: {
28886      /**
28887       * Tokenize all inline templating expressions matching `placeholderPattern`.
28888       *
28889       * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns
28890       * `true` will be replaced.
28891       *
28892       * @param {object} env The environment of the `before-tokenize` hook.
28893       * @param {string} language The language id.
28894       * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.
28895       * @param {(match: string) => boolean} [replaceFilter]
28896       */
28897      value: function value(env, language, placeholderPattern, replaceFilter) {
28898        if (env.language !== language) {
28899          return;
28900        }
28901
28902        var tokenStack = env.tokenStack = [];
28903        env.code = env.code.replace(placeholderPattern, function (match) {
28904          if (typeof replaceFilter === 'function' && !replaceFilter(match)) {
28905            return match;
28906          }
28907
28908          var i = tokenStack.length;
28909          var placeholder; // Check for existing strings
28910
28911          while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {
28912            ++i;
28913          } // Create a sparse array
28914
28915
28916          tokenStack[i] = match;
28917          return placeholder;
28918        }); // Switch the grammar to markup
28919
28920        env.grammar = Prism.languages.markup;
28921      }
28922    },
28923    tokenizePlaceholders: {
28924      /**
28925       * Replace placeholders with proper tokens after tokenizing.
28926       *
28927       * @param {object} env The environment of the `after-tokenize` hook.
28928       * @param {string} language The language id.
28929       */
28930      value: function value(env, language) {
28931        if (env.language !== language || !env.tokenStack) {
28932          return;
28933        } // Switch the grammar back
28934
28935
28936        env.grammar = Prism.languages[language];
28937        var j = 0;
28938        var keys = Object.keys(env.tokenStack);
28939
28940        function walkTokens(tokens) {
28941          for (var i = 0; i < tokens.length; i++) {
28942            // all placeholders are replaced already
28943            if (j >= keys.length) {
28944              break;
28945            }
28946
28947            var token = tokens[i];
28948
28949            if (typeof token === 'string' || token.content && typeof token.content === 'string') {
28950              var k = keys[j];
28951              var t = env.tokenStack[k];
28952              var s = typeof token === 'string' ? token : token.content;
28953              var placeholder = getPlaceholder(language, k);
28954              var index = s.indexOf(placeholder);
28955
28956              if (index > -1) {
28957                ++j;
28958                var before = s.substring(0, index);
28959                var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);
28960                var after = s.substring(index + placeholder.length);
28961                var replacement = [];
28962
28963                if (before) {
28964                  replacement.push.apply(replacement, walkTokens([before]));
28965                }
28966
28967                replacement.push(middle);
28968
28969                if (after) {
28970                  replacement.push.apply(replacement, walkTokens([after]));
28971                }
28972
28973                if (typeof token === 'string') {
28974                  tokens.splice.apply(tokens, [i, 1].concat(replacement));
28975                } else {
28976                  token.content = replacement;
28977                }
28978              }
28979            } else if (token.content
28980            /* && typeof token.content !== 'string' */
28981            ) {
28982                walkTokens(token.content);
28983              }
28984          }
28985
28986          return tokens;
28987        }
28988
28989        walkTokens(env.tokens);
28990      }
28991    }
28992  });
28993})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
28994/* "prismjs/components/prism-php" */
28995
28996/**
28997 * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/
28998 * Modified by Miles Johnson: http://milesj.me
28999 *
29000 * Supports the following:
29001 * 		- Extends clike syntax
29002 * 		- Support for PHP 5.3+ (namespaces, traits, generators, etc)
29003 * 		- Smarter constant and function matching
29004 *
29005 * Adds the following new token classes:
29006 * 		constant, delimiter, variable, function, package
29007 */
29008
29009
29010(function (Prism) {
29011  Prism.languages.php = Prism.languages.extend('clike', {
29012    'keyword': /\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,
29013    'boolean': {
29014      pattern: /\b(?:false|true)\b/i,
29015      alias: 'constant'
29016    },
29017    'constant': [/\b[A-Z_][A-Z0-9_]*\b/, /\b(?:null)\b/i],
29018    'comment': {
29019      pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,
29020      lookbehind: true
29021    }
29022  });
29023  Prism.languages.insertBefore('php', 'string', {
29024    'shell-comment': {
29025      pattern: /(^|[^\\])#.*/,
29026      lookbehind: true,
29027      alias: 'comment'
29028    }
29029  });
29030  Prism.languages.insertBefore('php', 'comment', {
29031    'delimiter': {
29032      pattern: /\?>$|^<\?(?:php(?=\s)|=)?/i,
29033      alias: 'important'
29034    }
29035  });
29036  Prism.languages.insertBefore('php', 'keyword', {
29037    'variable': /\$+(?:\w+\b|(?={))/i,
29038    'package': {
29039      pattern: /(\\|namespace\s+|use\s+)[\w\\]+/,
29040      lookbehind: true,
29041      inside: {
29042        punctuation: /\\/
29043      }
29044    }
29045  }); // Must be defined after the function pattern
29046
29047  Prism.languages.insertBefore('php', 'operator', {
29048    'property': {
29049      pattern: /(->)[\w]+/,
29050      lookbehind: true
29051    }
29052  });
29053  var string_interpolation = {
29054    pattern: /{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/,
29055    lookbehind: true,
29056    inside: {
29057      rest: Prism.languages.php
29058    }
29059  };
29060  Prism.languages.insertBefore('php', 'string', {
29061    'nowdoc-string': {
29062      pattern: /<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/,
29063      greedy: true,
29064      alias: 'string',
29065      inside: {
29066        'delimiter': {
29067          pattern: /^<<<'[^']+'|[a-z_]\w*;$/i,
29068          alias: 'symbol',
29069          inside: {
29070            'punctuation': /^<<<'?|[';]$/
29071          }
29072        }
29073      }
29074    },
29075    'heredoc-string': {
29076      pattern: /<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i,
29077      greedy: true,
29078      alias: 'string',
29079      inside: {
29080        'delimiter': {
29081          pattern: /^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,
29082          alias: 'symbol',
29083          inside: {
29084            'punctuation': /^<<<"?|[";]$/
29085          }
29086        },
29087        'interpolation': string_interpolation // See below
29088
29089      }
29090    },
29091    'single-quoted-string': {
29092      pattern: /'(?:\\[\s\S]|[^\\'])*'/,
29093      greedy: true,
29094      alias: 'string'
29095    },
29096    'double-quoted-string': {
29097      pattern: /"(?:\\[\s\S]|[^\\"])*"/,
29098      greedy: true,
29099      alias: 'string',
29100      inside: {
29101        'interpolation': string_interpolation // See below
29102
29103      }
29104    }
29105  }); // The different types of PHP strings "replace" the C-like standard string
29106
29107  delete Prism.languages.php['string'];
29108  Prism.hooks.add('before-tokenize', function (env) {
29109    if (!/<\?/.test(env.code)) {
29110      return;
29111    }
29112
29113    var phpPattern = /<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/ig;
29114    Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern);
29115  });
29116  Prism.hooks.add('after-tokenize', function (env) {
29117    Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php');
29118  });
29119})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
29120/* "prismjs/components/prism-jsdoc" */
29121
29122
29123(function (Prism) {
29124  var javascript = Prism.languages.javascript;
29125  var type = /{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source;
29126  var parameterPrefix = '(@(?:param|arg|argument|property)\\s+(?:' + type + '\\s+)?)';
29127  Prism.languages.jsdoc = Prism.languages.extend('javadoclike', {
29128    'parameter': {
29129      // @param {string} foo - foo bar
29130      pattern: RegExp(parameterPrefix + /[$\w\xA0-\uFFFF.]+(?=\s|$)/.source),
29131      lookbehind: true,
29132      inside: {
29133        'punctuation': /\./
29134      }
29135    }
29136  });
29137  Prism.languages.insertBefore('jsdoc', 'keyword', {
29138    'optional-parameter': {
29139      // @param {string} [baz.foo="bar"] foo bar
29140      pattern: RegExp(parameterPrefix + /\[[$\w\xA0-\uFFFF.]+(?:=[^[\]]+)?\](?=\s|$)/.source),
29141      lookbehind: true,
29142      inside: {
29143        'parameter': {
29144          pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/,
29145          lookbehind: true,
29146          inside: {
29147            'punctuation': /\./
29148          }
29149        },
29150        'code': {
29151          pattern: /(=)[\s\S]*(?=\]$)/,
29152          lookbehind: true,
29153          inside: javascript,
29154          alias: 'language-javascript'
29155        },
29156        'punctuation': /[=[\]]/
29157      }
29158    },
29159    'class-name': [{
29160      pattern: RegExp('(@[a-z]+\\s+)' + type),
29161      lookbehind: true,
29162      inside: {
29163        'punctuation': /[.,:?=<>|{}()[\]]/
29164      }
29165    }, {
29166      pattern: /(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/,
29167      lookbehind: true,
29168      inside: {
29169        'punctuation': /\./
29170      }
29171    }],
29172    'example': {
29173      pattern: /(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,
29174      lookbehind: true,
29175      inside: {
29176        'code': {
29177          pattern: /^(\s*(?:\*\s*)?).+$/m,
29178          lookbehind: true,
29179          inside: javascript,
29180          alias: 'language-javascript'
29181        }
29182      }
29183    }
29184  });
29185  Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc);
29186})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
29187/* "prismjs/components/prism-actionscript" */
29188
29189
29190_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.actionscript = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('javascript', {
29191  'keyword': /\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,
29192  'operator': /\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/
29193});
29194_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.actionscript['class-name'].alias = 'function';
29195
29196if (_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup) {
29197  _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('actionscript', 'string', {
29198    'xml': {
29199      pattern: /(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,
29200      lookbehind: true,
29201      inside: {
29202        rest: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup
29203      }
29204    }
29205  });
29206}
29207/* "prismjs/components/prism-coffeescript" */
29208
29209
29210(function (Prism) {
29211  // Ignore comments starting with { to privilege string interpolation highlighting
29212  var comment = /#(?!\{).+/,
29213      interpolation = {
29214    pattern: /#\{[^}]+\}/,
29215    alias: 'variable'
29216  };
29217  Prism.languages.coffeescript = Prism.languages.extend('javascript', {
29218    'comment': comment,
29219    'string': [// Strings are multiline
29220    {
29221      pattern: /'(?:\\[\s\S]|[^\\'])*'/,
29222      greedy: true
29223    }, {
29224      // Strings are multiline
29225      pattern: /"(?:\\[\s\S]|[^\\"])*"/,
29226      greedy: true,
29227      inside: {
29228        'interpolation': interpolation
29229      }
29230    }],
29231    'keyword': /\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,
29232    'class-member': {
29233      pattern: /@(?!\d)\w+/,
29234      alias: 'variable'
29235    }
29236  });
29237  Prism.languages.insertBefore('coffeescript', 'comment', {
29238    'multiline-comment': {
29239      pattern: /###[\s\S]+?###/,
29240      alias: 'comment'
29241    },
29242    // Block regexp can contain comments and interpolation
29243    'block-regex': {
29244      pattern: /\/{3}[\s\S]*?\/{3}/,
29245      alias: 'regex',
29246      inside: {
29247        'comment': comment,
29248        'interpolation': interpolation
29249      }
29250    }
29251  });
29252  Prism.languages.insertBefore('coffeescript', 'string', {
29253    'inline-javascript': {
29254      pattern: /`(?:\\[\s\S]|[^\\`])*`/,
29255      inside: {
29256        'delimiter': {
29257          pattern: /^`|`$/,
29258          alias: 'punctuation'
29259        },
29260        rest: Prism.languages.javascript
29261      }
29262    },
29263    // Block strings
29264    'multiline-string': [{
29265      pattern: /'''[\s\S]*?'''/,
29266      greedy: true,
29267      alias: 'string'
29268    }, {
29269      pattern: /"""[\s\S]*?"""/,
29270      greedy: true,
29271      alias: 'string',
29272      inside: {
29273        interpolation: interpolation
29274      }
29275    }]
29276  });
29277  Prism.languages.insertBefore('coffeescript', 'keyword', {
29278    // Object property
29279    'property': /(?!\d)\w+(?=\s*:(?!:))/
29280  });
29281  delete Prism.languages.coffeescript['template-string'];
29282  Prism.languages.coffee = Prism.languages.coffeescript;
29283})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
29284/* "prismjs/components/prism-js-extras" */
29285
29286
29287(function (Prism) {
29288  Prism.languages.insertBefore('javascript', 'function-variable', {
29289    'method-variable': {
29290      pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),
29291      lookbehind: true,
29292      alias: ['function-variable', 'method', 'function', 'property-access']
29293    }
29294  });
29295  Prism.languages.insertBefore('javascript', 'function', {
29296    'method': {
29297      pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function'].source),
29298      lookbehind: true,
29299      alias: ['function', 'property-access']
29300    }
29301  });
29302  Prism.languages.insertBefore('javascript', 'constant', {
29303    'known-class-name': [{
29304      // standard built-ins
29305      // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
29306      pattern: /\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,
29307      alias: 'class-name'
29308    }, {
29309      // errors
29310      pattern: /\b(?:[A-Z]\w*)Error\b/,
29311      alias: 'class-name'
29312    }]
29313  });
29314  Prism.languages.javascript['keyword'].unshift({
29315    pattern: /\b(?:as|default|export|from|import)\b/,
29316    alias: 'module'
29317  }, {
29318    pattern: /\bnull\b/,
29319    alias: ['null', 'nil']
29320  }, {
29321    pattern: /\bundefined\b/,
29322    alias: 'nil'
29323  });
29324  Prism.languages.insertBefore('javascript', 'operator', {
29325    'spread': {
29326      pattern: /\.{3}/,
29327      alias: 'operator'
29328    },
29329    'arrow': {
29330      pattern: /=>/,
29331      alias: 'operator'
29332    }
29333  });
29334  Prism.languages.insertBefore('javascript', 'punctuation', {
29335    'property-access': {
29336      pattern: /(\.\s*)[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/,
29337      lookbehind: true
29338    },
29339    'maybe-class-name': {
29340      pattern: /(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,
29341      lookbehind: true
29342    },
29343    'dom': {
29344      // this contains only a few commonly used DOM variables
29345      pattern: /\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,
29346      alias: 'variable'
29347    },
29348    'console': {
29349      pattern: /\bconsole(?=\s*\.)/,
29350      alias: 'class-name'
29351    }
29352  }); // add 'maybe-class-name' to tokens which might be a class name
29353
29354  var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];
29355
29356  for (var i = 0; i < maybeClassNameTokens.length; i++) {
29357    var token = maybeClassNameTokens[i];
29358    var value = Prism.languages.javascript[token]; // convert regex to object
29359
29360    if (Prism.util.type(value) === 'RegExp') {
29361      value = Prism.languages.javascript[token] = {
29362        pattern: value
29363      };
29364    } // keep in mind that we don't support arrays
29365
29366
29367    var inside = value.inside || {};
29368    value.inside = inside;
29369    inside['maybe-class-name'] = /^[A-Z][\s\S]*/;
29370  }
29371})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
29372/* "prismjs/components/prism-flow" */
29373
29374
29375(function (Prism) {
29376  Prism.languages.flow = Prism.languages.extend('javascript', {});
29377  Prism.languages.insertBefore('flow', 'keyword', {
29378    'type': [{
29379      pattern: /\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,
29380      alias: 'tag'
29381    }]
29382  });
29383  Prism.languages.flow['function-variable'].pattern = /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i;
29384  delete Prism.languages.flow['parameter'];
29385  Prism.languages.insertBefore('flow', 'operator', {
29386    'flow-punctuation': {
29387      pattern: /\{\||\|\}/,
29388      alias: 'punctuation'
29389    }
29390  });
29391
29392  if (!Array.isArray(Prism.languages.flow.keyword)) {
29393    Prism.languages.flow.keyword = [Prism.languages.flow.keyword];
29394  }
29395
29396  Prism.languages.flow.keyword.unshift({
29397    pattern: /(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,
29398    lookbehind: true
29399  }, {
29400    pattern: /(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,
29401    lookbehind: true
29402  });
29403})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
29404/* "prismjs/components/prism-n4js" */
29405
29406
29407_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.n4js = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('javascript', {
29408  // Keywords from N4JS language spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html
29409  'keyword': /\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/
29410});
29411_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('n4js', 'constant', {
29412  // Annotations in N4JS spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html#_annotations
29413  'annotation': {
29414    pattern: /@+\w+/,
29415    alias: 'operator'
29416  }
29417});
29418_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.n4jsd = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.n4js;
29419/* "prismjs/components/prism-typescript" */
29420
29421_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.typescript = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('javascript', {
29422  // From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words
29423  'keyword': /\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\b/,
29424  'builtin': /\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/
29425});
29426_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.ts = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.typescript;
29427/* "prismjs/components/prism-diff" */
29428
29429_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.diff = {
29430  'coord': [// Match all kinds of coord lines (prefixed by "+++", "---" or "***").
29431  /^(?:\*{3}|-{3}|\+{3}).*$/m, // Match "@@ ... @@" coord lines in unified diff.
29432  /^@@.*@@$/m, // Match coord lines in normal diff (starts with a number).
29433  /^\d+.*$/m],
29434  // Match inserted and deleted lines. Support both +/- and >/< styles.
29435  'deleted': /^[-<].*$/m,
29436  'inserted': /^[+>].*$/m,
29437  // Match "different" lines (prefixed with "!") in context diff.
29438  'diff': {
29439    'pattern': /^!(?!!).+$/m,
29440    'alias': 'important'
29441  }
29442};
29443/* "prismjs/components/prism-git" */
29444
29445_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.git = {
29446  /*
29447   * A simple one line comment like in a git status command
29448   * For instance:
29449   * $ git status
29450   * # On branch infinite-scroll
29451   * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,
29452   * # and have 1 and 2 different commits each, respectively.
29453   * nothing to commit (working directory clean)
29454   */
29455  'comment': /^#.*/m,
29456
29457  /*
29458   * Regexp to match the changed lines in a git diff output. Check the example below.
29459   */
29460  'deleted': /^[-–].*/m,
29461  'inserted': /^\+.*/m,
29462
29463  /*
29464   * a string (double and simple quote)
29465   */
29466  'string': /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,
29467
29468  /*
29469   * a git command. It starts with a random prompt finishing by a $, then "git" then some other parameters
29470   * For instance:
29471   * $ git add file.txt
29472   */
29473  'command': {
29474    pattern: /^.*\$ git .*$/m,
29475    inside: {
29476      /*
29477       * A git command can contain a parameter starting by a single or a double dash followed by a string
29478       * For instance:
29479       * $ git diff --cached
29480       * $ git log -p
29481       */
29482      'parameter': /\s--?\w+/m
29483    }
29484  },
29485
29486  /*
29487   * Coordinates displayed in a git diff command
29488   * For instance:
29489   * $ git diff
29490   * diff --git file.txt file.txt
29491   * index 6214953..1d54a52 100644
29492   * --- file.txt
29493   * +++ file.txt
29494   * @@ -1 +1,2 @@
29495   * -Here's my tetx file
29496   * +Here's my text file
29497   * +And this is the second line
29498   */
29499  'coord': /^@@.*@@$/m,
29500
29501  /*
29502   * Match a "commit [SHA1]" line in a git log output.
29503   * For instance:
29504   * $ git log
29505   * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09
29506   * Author: lgiraudel
29507   * Date:   Mon Feb 17 11:18:34 2014 +0100
29508   *
29509   *     Add of a new line
29510   */
29511  'commit_sha1': /^commit \w{40}$/m
29512};
29513/* "prismjs/components/prism-go" */
29514
29515_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.go = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('clike', {
29516  'keyword': /\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,
29517  'builtin': /\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,
29518  'boolean': /\b(?:_|iota|nil|true|false)\b/,
29519  'operator': /[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,
29520  'number': /(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,
29521  'string': {
29522    pattern: /(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,
29523    greedy: true
29524  }
29525});
29526delete _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.go['class-name'];
29527/* "prismjs/components/prism-graphql" */
29528
29529_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.graphql = {
29530  'comment': /#.*/,
29531  'string': {
29532    pattern: /"(?:\\.|[^\\"\r\n])*"/,
29533    greedy: true
29534  },
29535  'number': /(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,
29536  'boolean': /\b(?:true|false)\b/,
29537  'variable': /\$[a-z_]\w*/i,
29538  'directive': {
29539    pattern: /@[a-z_]\w*/i,
29540    alias: 'function'
29541  },
29542  'attr-name': {
29543    pattern: /[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,
29544    greedy: true
29545  },
29546  'class-name': {
29547    pattern: /(\b(?:enum|implements|interface|on|scalar|type|union)\s+)[a-zA-Z_]\w*/,
29548    lookbehind: true
29549  },
29550  'fragment': {
29551    pattern: /(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,
29552    lookbehind: true,
29553    alias: 'function'
29554  },
29555  'keyword': /\b(?:enum|fragment|implements|input|interface|mutation|on|query|scalar|schema|type|union)\b/,
29556  'operator': /[!=|]|\.{3}/,
29557  'punctuation': /[!(){}\[\]:=,]/,
29558  'constant': /\b(?!ID\b)[A-Z][A-Z_\d]*\b/
29559};
29560/* "prismjs/components/prism-handlebars" */
29561
29562(function (Prism) {
29563  Prism.languages.handlebars = {
29564    'comment': /\{\{![\s\S]*?\}\}/,
29565    'delimiter': {
29566      pattern: /^\{\{\{?|\}\}\}?$/i,
29567      alias: 'punctuation'
29568    },
29569    'string': /(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,
29570    'number': /\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,
29571    'boolean': /\b(?:true|false)\b/,
29572    'block': {
29573      pattern: /^(\s*~?\s*)[#\/]\S+?(?=\s*~?\s*$|\s)/i,
29574      lookbehind: true,
29575      alias: 'keyword'
29576    },
29577    'brackets': {
29578      pattern: /\[[^\]]+\]/,
29579      inside: {
29580        punctuation: /\[|\]/,
29581        variable: /[\s\S]+/
29582      }
29583    },
29584    'punctuation': /[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/,
29585    'variable': /[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/
29586  };
29587  Prism.hooks.add('before-tokenize', function (env) {
29588    var handlebarsPattern = /\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g;
29589    Prism.languages['markup-templating'].buildPlaceholders(env, 'handlebars', handlebarsPattern);
29590  });
29591  Prism.hooks.add('after-tokenize', function (env) {
29592    Prism.languages['markup-templating'].tokenizePlaceholders(env, 'handlebars');
29593  });
29594})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
29595/* "prismjs/components/prism-json" */
29596
29597
29598_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.json = {
29599  'comment': /\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,
29600  'property': {
29601    pattern: /"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,
29602    greedy: true
29603  },
29604  'string': {
29605    pattern: /"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,
29606    greedy: true
29607  },
29608  'number': /-?\d+\.?\d*(e[+-]?\d+)?/i,
29609  'punctuation': /[{}[\],]/,
29610  'operator': /:/,
29611  'boolean': /\b(?:true|false)\b/,
29612  'null': {
29613    pattern: /\bnull\b/,
29614    alias: 'keyword'
29615  }
29616};
29617/* "prismjs/components/prism-less" */
29618
29619/* FIXME :
29620 :extend() is not handled specifically : its highlighting is buggy.
29621 Mixin usage must be inside a ruleset to be highlighted.
29622 At-rules (e.g. import) containing interpolations are buggy.
29623 Detached rulesets are highlighted as at-rules.
29624 A comment before a mixin usage prevents the latter to be properly highlighted.
29625 */
29626
29627_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.less = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('css', {
29628  'comment': [/\/\*[\s\S]*?\*\//, {
29629    pattern: /(^|[^\\])\/\/.*/,
29630    lookbehind: true
29631  }],
29632  'atrule': {
29633    pattern: /@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,
29634    inside: {
29635      'punctuation': /[:()]/
29636    }
29637  },
29638  // selectors and mixins are considered the same
29639  'selector': {
29640    pattern: /(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,
29641    inside: {
29642      // mixin parameters
29643      'variable': /@+[\w-]+/
29644    }
29645  },
29646  'property': /(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,
29647  'operator': /[+\-*\/]/
29648});
29649_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('less', 'property', {
29650  'variable': [// Variable declaration (the colon must be consumed!)
29651  {
29652    pattern: /@[\w-]+\s*:/,
29653    inside: {
29654      "punctuation": /:/
29655    }
29656  }, // Variable usage
29657  /@@?[\w-]+/],
29658  'mixin-usage': {
29659    pattern: /([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,
29660    lookbehind: true,
29661    alias: 'function'
29662  }
29663});
29664/* "prismjs/components/prism-makefile" */
29665
29666_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.makefile = {
29667  'comment': {
29668    pattern: /(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,
29669    lookbehind: true
29670  },
29671  'string': {
29672    pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
29673    greedy: true
29674  },
29675  // Built-in target names
29676  'builtin': /\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,
29677  // Targets
29678  'symbol': {
29679    pattern: /^[^:=\r\n]+(?=\s*:(?!=))/m,
29680    inside: {
29681      'variable': /\$+(?:[^(){}:#=\s]+|(?=[({]))/
29682    }
29683  },
29684  'variable': /\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,
29685  'keyword': [// Directives
29686  /-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/, // Functions
29687  {
29688    pattern: /(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,
29689    lookbehind: true
29690  }],
29691  'operator': /(?:::|[?:+!])?=|[|@]/,
29692  'punctuation': /[:;(){}]/
29693};
29694/* "prismjs/components/prism-markdown" */
29695
29696_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markdown = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('markup', {});
29697_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('markdown', 'prolog', {
29698  'blockquote': {
29699    // > ...
29700    pattern: /^>(?:[\t ]*>)*/m,
29701    alias: 'punctuation'
29702  },
29703  'code': [{
29704    // Prefixed by 4 spaces or 1 tab
29705    pattern: /^(?: {4}|\t).+/m,
29706    alias: 'keyword'
29707  }, {
29708    // `code`
29709    // ``code``
29710    pattern: /``.+?``|`[^`\n]+`/,
29711    alias: 'keyword'
29712  }, {
29713    // ```optional language
29714    // code block
29715    // ```
29716    pattern: /^```[\s\S]*?^```$/m,
29717    greedy: true,
29718    inside: {
29719      'code-block': {
29720        pattern: /^(```.*(?:\r?\n|\r))[\s\S]+?(?=(?:\r?\n|\r)^```$)/m,
29721        lookbehind: true
29722      },
29723      'code-language': {
29724        pattern: /^(```).+/,
29725        lookbehind: true
29726      },
29727      'punctuation': /```/
29728    }
29729  }],
29730  'title': [{
29731    // title 1
29732    // =======
29733    // title 2
29734    // -------
29735    pattern: /\S.*(?:\r?\n|\r)(?:==+|--+)/,
29736    alias: 'important',
29737    inside: {
29738      punctuation: /==+$|--+$/
29739    }
29740  }, {
29741    // # title 1
29742    // ###### title 6
29743    pattern: /(^\s*)#+.+/m,
29744    lookbehind: true,
29745    alias: 'important',
29746    inside: {
29747      punctuation: /^#+|#+$/
29748    }
29749  }],
29750  'hr': {
29751    // ***
29752    // ---
29753    // * * *
29754    // -----------
29755    pattern: /(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,
29756    lookbehind: true,
29757    alias: 'punctuation'
29758  },
29759  'list': {
29760    // * item
29761    // + item
29762    // - item
29763    // 1. item
29764    pattern: /(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,
29765    lookbehind: true,
29766    alias: 'punctuation'
29767  },
29768  'url-reference': {
29769    // [id]: http://example.com "Optional title"
29770    // [id]: http://example.com 'Optional title'
29771    // [id]: http://example.com (Optional title)
29772    // [id]: <http://example.com> "Optional title"
29773    pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,
29774    inside: {
29775      'variable': {
29776        pattern: /^(!?\[)[^\]]+/,
29777        lookbehind: true
29778      },
29779      'string': /(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,
29780      'punctuation': /^[\[\]!:]|[<>]/
29781    },
29782    alias: 'url'
29783  },
29784  'bold': {
29785    // **strong**
29786    // __strong__
29787    // Allow only one line break
29788    pattern: /(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,
29789    lookbehind: true,
29790    greedy: true,
29791    inside: {
29792      'punctuation': /^\*\*|^__|\*\*$|__$/
29793    }
29794  },
29795  'italic': {
29796    // *em*
29797    // _em_
29798    // Allow only one line break
29799    pattern: /(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,
29800    lookbehind: true,
29801    greedy: true,
29802    inside: {
29803      'punctuation': /^[*_]|[*_]$/
29804    }
29805  },
29806  'strike': {
29807    // ~~strike through~~
29808    // ~strike~
29809    // Allow only one line break
29810    pattern: /(^|[^\\])(~~?)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,
29811    lookbehind: true,
29812    greedy: true,
29813    inside: {
29814      'punctuation': /^~~?|~~?$/
29815    }
29816  },
29817  'url': {
29818    // [example](http://example.com "Optional title")
29819    // [example] [id]
29820    pattern: /!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,
29821    inside: {
29822      'variable': {
29823        pattern: /(!?\[)[^\]]+(?=\]$)/,
29824        lookbehind: true
29825      },
29826      'string': {
29827        pattern: /"(?:\\.|[^"\\])*"(?=\)$)/
29828      }
29829    }
29830  }
29831});
29832['bold', 'italic', 'strike'].forEach(function (token) {
29833  ['url', 'bold', 'italic', 'strike'].forEach(function (inside) {
29834    if (token !== inside) {
29835      _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markdown[token].inside[inside] = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markdown[inside];
29836    }
29837  });
29838});
29839_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.hooks.add('after-tokenize', function (env) {
29840  if (env.language !== 'markdown' && env.language !== 'md') {
29841    return;
29842  }
29843
29844  function walkTokens(tokens) {
29845    if (!tokens || typeof tokens === 'string') {
29846      return;
29847    }
29848
29849    for (var i = 0, l = tokens.length; i < l; i++) {
29850      var token = tokens[i];
29851
29852      if (token.type !== 'code') {
29853        walkTokens(token.content);
29854        continue;
29855      }
29856
29857      var codeLang = token.content[1];
29858      var codeBlock = token.content[3];
29859
29860      if (codeLang && codeBlock && codeLang.type === 'code-language' && codeBlock.type === 'code-block' && typeof codeLang.content === 'string') {
29861        // this might be a language that Prism does not support
29862        var alias = 'language-' + codeLang.content.trim().split(/\s+/)[0].toLowerCase(); // add alias
29863
29864        if (!codeBlock.alias) {
29865          codeBlock.alias = [alias];
29866        } else if (typeof codeBlock.alias === 'string') {
29867          codeBlock.alias = [codeBlock.alias, alias];
29868        } else {
29869          codeBlock.alias.push(alias);
29870        }
29871      }
29872    }
29873  }
29874
29875  walkTokens(env.tokens);
29876});
29877_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.hooks.add('wrap', function (env) {
29878  if (env.type !== 'code-block') {
29879    return;
29880  }
29881
29882  var codeLang = '';
29883
29884  for (var i = 0, l = env.classes.length; i < l; i++) {
29885    var cls = env.classes[i];
29886    var match = /language-(.+)/.exec(cls);
29887
29888    if (match) {
29889      codeLang = match[1];
29890      break;
29891    }
29892  }
29893
29894  var grammar = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages[codeLang];
29895
29896  if (!grammar) {
29897    return;
29898  } // reverse Prism.util.encode
29899
29900
29901  var code = env.content.replace(/&lt;/g, '<').replace(/&amp;/g, '&');
29902  env.content = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.highlight(code, grammar, codeLang);
29903});
29904_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.md = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markdown;
29905/* "prismjs/components/prism-objectivec" */
29906
29907_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.objectivec = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('c', {
29908  'keyword': /\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,
29909  'string': /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,
29910  'operator': /-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/
29911});
29912delete _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.objectivec['class-name'];
29913/* "prismjs/components/prism-ocaml" */
29914
29915_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.ocaml = {
29916  'comment': /\(\*[\s\S]*?\*\)/,
29917  'string': [{
29918    pattern: /"(?:\\.|[^\\\r\n"])*"/,
29919    greedy: true
29920  }, {
29921    pattern: /(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,
29922    greedy: true
29923  }],
29924  'number': /\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*\.?[\d_]*(?:e[+-]?[\d_]+)?)/i,
29925  'type': {
29926    pattern: /\B['`]\w*/,
29927    alias: 'variable'
29928  },
29929  'directive': {
29930    pattern: /\B#\w+/,
29931    alias: 'function'
29932  },
29933  'keyword': /\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\b/,
29934  'boolean': /\b(?:false|true)\b/,
29935  // Custom operators are allowed
29936  'operator': /:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\b/,
29937  'punctuation': /[(){}\[\]|_.,:;]/
29938};
29939/* "prismjs/components/prism-python" */
29940
29941_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.python = {
29942  'comment': {
29943    pattern: /(^|[^\\])#.*/,
29944    lookbehind: true
29945  },
29946  'string-interpolation': {
29947    pattern: /(?:f|rf|fr)(?:("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,
29948    greedy: true,
29949    inside: {
29950      'interpolation': {
29951        // "{" <expression> <optional "!s", "!r", or "!a"> <optional ":" format specifier> "}"
29952        pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,
29953        lookbehind: true,
29954        inside: {
29955          'format-spec': {
29956            pattern: /(:)[^:(){}]+(?=}$)/,
29957            lookbehind: true
29958          },
29959          'conversion-option': {
29960            pattern: /![sra](?=[:}]$)/,
29961            alias: 'punctuation'
29962          },
29963          rest: null
29964        }
29965      },
29966      'string': /[\s\S]+/
29967    }
29968  },
29969  'triple-quoted-string': {
29970    pattern: /(?:[rub]|rb|br)?("""|''')[\s\S]+?\1/i,
29971    greedy: true,
29972    alias: 'string'
29973  },
29974  'string': {
29975    pattern: /(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,
29976    greedy: true
29977  },
29978  'function': {
29979    pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,
29980    lookbehind: true
29981  },
29982  'class-name': {
29983    pattern: /(\bclass\s+)\w+/i,
29984    lookbehind: true
29985  },
29986  'decorator': {
29987    pattern: /(^\s*)@\w+(?:\.\w+)*/i,
29988    lookbehind: true,
29989    alias: ['annotation', 'punctuation'],
29990    inside: {
29991      'punctuation': /\./
29992    }
29993  },
29994  'keyword': /\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,
29995  'builtin': /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,
29996  'boolean': /\b(?:True|False|None)\b/,
29997  'number': /(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,
29998  'operator': /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,
29999  'punctuation': /[{}[\];(),.:]/
30000};
30001_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.python['string-interpolation'].inside['interpolation'].inside.rest = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.python;
30002_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.py = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.python;
30003/* "prismjs/components/prism-reason" */
30004
30005_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.reason = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('clike', {
30006  'comment': {
30007    pattern: /(^|[^\\])\/\*[\s\S]*?\*\//,
30008    lookbehind: true
30009  },
30010  'string': {
30011    pattern: /"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,
30012    greedy: true
30013  },
30014  // 'class-name' must be matched *after* 'constructor' defined below
30015  'class-name': /\b[A-Z]\w*/,
30016  'keyword': /\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,
30017  'operator': /\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/
30018});
30019_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('reason', 'class-name', {
30020  'character': {
30021    pattern: /'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,
30022    alias: 'string'
30023  },
30024  'constructor': {
30025    // Negative look-ahead prevents from matching things like String.capitalize
30026    pattern: /\b[A-Z]\w*\b(?!\s*\.)/,
30027    alias: 'variable'
30028  },
30029  'label': {
30030    pattern: /\b[a-z]\w*(?=::)/,
30031    alias: 'symbol'
30032  }
30033}); // We can't match functions property, so let's not even try.
30034
30035delete _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.reason.function;
30036/* "prismjs/components/prism-sass" */
30037
30038(function (Prism) {
30039  Prism.languages.sass = Prism.languages.extend('css', {
30040    // Sass comments don't need to be closed, only indented
30041    'comment': {
30042      pattern: /^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,
30043      lookbehind: true
30044    }
30045  });
30046  Prism.languages.insertBefore('sass', 'atrule', {
30047    // We want to consume the whole line
30048    'atrule-line': {
30049      // Includes support for = and + shortcuts
30050      pattern: /^(?:[ \t]*)[@+=].+/m,
30051      inside: {
30052        'atrule': /(?:@[\w-]+|[+=])/m
30053      }
30054    }
30055  });
30056  delete Prism.languages.sass.atrule;
30057  var variable = /\$[-\w]+|#\{\$[-\w]+\}/;
30058  var operator = [/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/, {
30059    pattern: /(\s+)-(?=\s)/,
30060    lookbehind: true
30061  }];
30062  Prism.languages.insertBefore('sass', 'property', {
30063    // We want to consume the whole line
30064    'variable-line': {
30065      pattern: /^[ \t]*\$.+/m,
30066      inside: {
30067        'punctuation': /:/,
30068        'variable': variable,
30069        'operator': operator
30070      }
30071    },
30072    // We want to consume the whole line
30073    'property-line': {
30074      pattern: /^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,
30075      inside: {
30076        'property': [/[^:\s]+(?=\s*:)/, {
30077          pattern: /(:)[^:\s]+/,
30078          lookbehind: true
30079        }],
30080        'punctuation': /:/,
30081        'variable': variable,
30082        'operator': operator,
30083        'important': Prism.languages.sass.important
30084      }
30085    }
30086  });
30087  delete Prism.languages.sass.property;
30088  delete Prism.languages.sass.important; // Now that whole lines for other patterns are consumed,
30089  // what's left should be selectors
30090
30091  Prism.languages.insertBefore('sass', 'punctuation', {
30092    'selector': {
30093      pattern: /([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,
30094      lookbehind: true
30095    }
30096  });
30097})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
30098/* "prismjs/components/prism-scss" */
30099
30100
30101_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.scss = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('css', {
30102  'comment': {
30103    pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,
30104    lookbehind: true
30105  },
30106  'atrule': {
30107    pattern: /@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,
30108    inside: {
30109      'rule': /@[\w-]+/ // See rest below
30110
30111    }
30112  },
30113  // url, compassified
30114  'url': /(?:[-a-z]+-)*url(?=\()/i,
30115  // CSS selector regex is not appropriate for Sass
30116  // since there can be lot more things (var, @ directive, nesting..)
30117  // a selector must start at the end of a property or after a brace (end of other rules or nesting)
30118  // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable
30119  // the end of a selector is found when there is no rules in it ( {} or {\s}) or if there is a property (because an interpolated var
30120  // can "pass" as a selector- e.g: proper#{$erty})
30121  // this one was hard to do, so please be careful if you edit this one :)
30122  'selector': {
30123    // Initial look-ahead is used to prevent matching of blank selectors
30124    pattern: /(?=\S)[^@;{}()]?(?:[^@;{}()]|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m,
30125    inside: {
30126      'parent': {
30127        pattern: /&/,
30128        alias: 'important'
30129      },
30130      'placeholder': /%[-\w]+/,
30131      'variable': /\$[-\w]+|#\{\$[-\w]+\}/
30132    }
30133  },
30134  'property': {
30135    pattern: /(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/,
30136    inside: {
30137      'variable': /\$[-\w]+|#\{\$[-\w]+\}/
30138    }
30139  }
30140});
30141_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('scss', 'atrule', {
30142  'keyword': [/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i, {
30143    pattern: /( +)(?:from|through)(?= )/,
30144    lookbehind: true
30145  }]
30146});
30147_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('scss', 'important', {
30148  // var and interpolated vars
30149  'variable': /\$[-\w]+|#\{\$[-\w]+\}/
30150});
30151_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('scss', 'function', {
30152  'placeholder': {
30153    pattern: /%[-\w]+/,
30154    alias: 'selector'
30155  },
30156  'statement': {
30157    pattern: /\B!(?:default|optional)\b/i,
30158    alias: 'keyword'
30159  },
30160  'boolean': /\b(?:true|false)\b/,
30161  'null': {
30162    pattern: /\bnull\b/,
30163    alias: 'keyword'
30164  },
30165  'operator': {
30166    pattern: /(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,
30167    lookbehind: true
30168  }
30169});
30170_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.scss['atrule'].inside.rest = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.scss;
30171/* "prismjs/components/prism-sql" */
30172
30173_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.sql = {
30174  'comment': {
30175    pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,
30176    lookbehind: true
30177  },
30178  'variable': [{
30179    pattern: /@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,
30180    greedy: true
30181  }, /@[\w.$]+/],
30182  'string': {
30183    pattern: /(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,
30184    greedy: true,
30185    lookbehind: true
30186  },
30187  'function': /\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,
30188  // Should we highlight user defined functions too?
30189  'keyword': /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,
30190  'boolean': /\b(?:TRUE|FALSE|NULL)\b/i,
30191  'number': /\b0x[\da-f]+\b|\b\d+\.?\d*|\B\.\d+\b/i,
30192  'operator': /[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,
30193  'punctuation': /[;[\]()`,.]/
30194};
30195/* "prismjs/components/prism-stylus" */
30196
30197(function (Prism) {
30198  var inside = {
30199    'url': /url\((["']?).*?\1\)/i,
30200    'string': {
30201      pattern: /("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,
30202      greedy: true
30203    },
30204    'interpolation': null,
30205    // See below
30206    'func': null,
30207    // See below
30208    'important': /\B!(?:important|optional)\b/i,
30209    'keyword': {
30210      pattern: /(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,
30211      lookbehind: true
30212    },
30213    'hexcode': /#[\da-f]{3,6}/i,
30214    'number': /\b\d+(?:\.\d+)?%?/,
30215    'boolean': /\b(?:true|false)\b/,
30216    'operator': [// We want non-word chars around "-" because it is
30217    // accepted in property names.
30218    /~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],
30219    'punctuation': /[{}()\[\];:,]/
30220  };
30221  inside['interpolation'] = {
30222    pattern: /\{[^\r\n}:]+\}/,
30223    alias: 'variable',
30224    inside: {
30225      'delimiter': {
30226        pattern: /^{|}$/,
30227        alias: 'punctuation'
30228      },
30229      rest: inside
30230    }
30231  };
30232  inside['func'] = {
30233    pattern: /[\w-]+\([^)]*\).*/,
30234    inside: {
30235      'function': /^[^(]+/,
30236      rest: inside
30237    }
30238  };
30239  Prism.languages.stylus = {
30240    'comment': {
30241      pattern: /(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/,
30242      lookbehind: true
30243    },
30244    'atrule-declaration': {
30245      pattern: /(^\s*)@.+/m,
30246      lookbehind: true,
30247      inside: {
30248        'atrule': /^@[\w-]+/,
30249        rest: inside
30250      }
30251    },
30252    'variable-declaration': {
30253      pattern: /(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,
30254      lookbehind: true,
30255      inside: {
30256        'variable': /^\S+/,
30257        rest: inside
30258      }
30259    },
30260    'statement': {
30261      pattern: /(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,
30262      lookbehind: true,
30263      inside: {
30264        keyword: /^\S+/,
30265        rest: inside
30266      }
30267    },
30268    // A property/value pair cannot end with a comma or a brace
30269    // It cannot have indented content unless it ended with a semicolon
30270    'property-declaration': {
30271      pattern: /((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m,
30272      lookbehind: true,
30273      inside: {
30274        'property': {
30275          pattern: /^[^\s:]+/,
30276          inside: {
30277            'interpolation': inside.interpolation
30278          }
30279        },
30280        rest: inside
30281      }
30282    },
30283    // A selector can contain parentheses only as part of a pseudo-element
30284    // It can span multiple lines.
30285    // It must end with a comma or an accolade or have indented content.
30286    'selector': {
30287      pattern: /(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,
30288      lookbehind: true,
30289      inside: {
30290        'interpolation': inside.interpolation,
30291        'punctuation': /[{},]/
30292      }
30293    },
30294    'func': inside.func,
30295    'string': inside.string,
30296    'interpolation': inside.interpolation,
30297    'punctuation': /[{}()\[\];:.]/
30298  };
30299})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
30300/* "prismjs/components/prism-wasm" */
30301
30302
30303_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.wasm = {
30304  'comment': [/\(;[\s\S]*?;\)/, {
30305    pattern: /;;.*/,
30306    greedy: true
30307  }],
30308  'string': {
30309    pattern: /"(?:\\[\s\S]|[^"\\])*"/,
30310    greedy: true
30311  },
30312  'keyword': [{
30313    pattern: /\b(?:align|offset)=/,
30314    inside: {
30315      'operator': /=/
30316    }
30317  }, {
30318    pattern: /\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,
30319    inside: {
30320      'punctuation': /\./
30321    }
30322  }, /\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],
30323  'variable': /\$[\w!#$%&'*+\-./:<=>?@\\^_`|~]+/i,
30324  'number': /[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,
30325  'punctuation': /[()]/
30326};
30327/* "prismjs/components/prism-yaml" */
30328
30329_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.yaml = {
30330  'scalar': {
30331    pattern: /([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,
30332    lookbehind: true,
30333    alias: 'string'
30334  },
30335  'comment': /#.*/,
30336  'key': {
30337    pattern: /(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,
30338    lookbehind: true,
30339    alias: 'atrule'
30340  },
30341  'directive': {
30342    pattern: /(^[ \t]*)%.+/m,
30343    lookbehind: true,
30344    alias: 'important'
30345  },
30346  'datetime': {
30347    pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,
30348    lookbehind: true,
30349    alias: 'number'
30350  },
30351  'boolean': {
30352    pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,
30353    lookbehind: true,
30354    alias: 'important'
30355  },
30356  'null': {
30357    pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,
30358    lookbehind: true,
30359    alias: 'important'
30360  },
30361  'string': {
30362    pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}|\s*#))/m,
30363    lookbehind: true,
30364    greedy: true
30365  },
30366  'number': {
30367    pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,
30368    lookbehind: true
30369  },
30370  'tag': /![^\s]+/,
30371  'important': /[&*][\w]+/,
30372  'punctuation': /---|[:[\]{}\-,|>?]|\.\.\./
30373};
30374_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.yml = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.yaml;
30375/* harmony default export */ __webpack_exports__["default"] = (_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a);
30376
30377/***/ }),
30378
vendor: 11,223 bytes, lines 30379-30748
30379/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/prism-core.js":
30380/*!************************************************************************************************!*\
30381  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/prism-core.js ***!
30382  \************************************************************************************************/
30383/*! no static exports found */
30384/***/ (function(module, exports) {
30385
30386/**
30387 * Prism: Lightweight, robust, elegant syntax highlighting
30388 * MIT license http://www.opensource.org/licenses/mit-license.php/
30389 * @author Lea Verou http://lea.verou.me
30390 */
30391
30392/**
30393 * prism-react-renderer:
30394 * This file has been modified to remove:
30395 * - globals and window dependency
30396 * - worker support
30397 * - highlightAll and other element dependent methods
30398 * - _.hooks helpers
30399 * - UMD/node-specific hacks
30400 * It has also been run through prettier
30401 */
30402var Prism = function () {
30403  // Private helper vars
30404  var lang = /\blang(?:uage)?-([\w-]+)\b/i;
30405  var uniqueId = 0;
30406  var _ = {
30407    util: {
30408      encode: function encode(tokens) {
30409        if (tokens instanceof Token) {
30410          return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);
30411        } else if (_.util.type(tokens) === "Array") {
30412          return tokens.map(_.util.encode);
30413        } else {
30414          return tokens.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/\u00a0/g, " ");
30415        }
30416      },
30417      type: function type(o) {
30418        return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1];
30419      },
30420      objId: function objId(obj) {
30421        if (!obj["__id"]) {
30422          Object.defineProperty(obj, "__id", {
30423            value: ++uniqueId
30424          });
30425        }
30426
30427        return obj["__id"];
30428      },
30429      // Deep clone a language definition (e.g. to extend it)
30430      clone: function clone(o, visited) {
30431        var type = _.util.type(o);
30432
30433        visited = visited || {};
30434
30435        switch (type) {
30436          case "Object":
30437            if (visited[_.util.objId(o)]) {
30438              return visited[_.util.objId(o)];
30439            }
30440
30441            var clone = {};
30442            visited[_.util.objId(o)] = clone;
30443
30444            for (var key in o) {
30445              if (o.hasOwnProperty(key)) {
30446                clone[key] = _.util.clone(o[key], visited);
30447              }
30448            }
30449
30450            return clone;
30451
30452          case "Array":
30453            if (visited[_.util.objId(o)]) {
30454              return visited[_.util.objId(o)];
30455            }
30456
30457            var clone = [];
30458            visited[_.util.objId(o)] = clone;
30459            o.forEach(function (v, i) {
30460              clone[i] = _.util.clone(v, visited);
30461            });
30462            return clone;
30463        }
30464
30465        return o;
30466      }
30467    },
30468    languages: {
30469      extend: function extend(id, redef) {
30470        var lang = _.util.clone(_.languages[id]);
30471
30472        for (var key in redef) {
30473          lang[key] = redef[key];
30474        }
30475
30476        return lang;
30477      },
30478
30479      /**
30480       * Insert a token before another token in a language literal
30481       * As this needs to recreate the object (we cannot actually insert before keys in object literals),
30482       * we cannot just provide an object, we need anobject and a key.
30483       * @param inside The key (or language id) of the parent
30484       * @param before The key to insert before. If not provided, the function appends instead.
30485       * @param insert Object with the key/value pairs to insert
30486       * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.
30487       */
30488      insertBefore: function insertBefore(inside, before, insert, root) {
30489        root = root || _.languages;
30490        var grammar = root[inside];
30491
30492        if (arguments.length == 2) {
30493          insert = arguments[1];
30494
30495          for (var newToken in insert) {
30496            if (insert.hasOwnProperty(newToken)) {
30497              grammar[newToken] = insert[newToken];
30498            }
30499          }
30500
30501          return grammar;
30502        }
30503
30504        var ret = {};
30505
30506        for (var token in grammar) {
30507          if (grammar.hasOwnProperty(token)) {
30508            if (token == before) {
30509              for (var newToken in insert) {
30510                if (insert.hasOwnProperty(newToken)) {
30511                  ret[newToken] = insert[newToken];
30512                }
30513              }
30514            }
30515
30516            ret[token] = grammar[token];
30517          }
30518        } // Update references in other language definitions
30519
30520
30521        _.languages.DFS(_.languages, function (key, value) {
30522          if (value === root[inside] && key != inside) {
30523            this[key] = ret;
30524          }
30525        });
30526
30527        return root[inside] = ret;
30528      },
30529      // Traverse a language definition with Depth First Search
30530      DFS: function DFS(o, callback, type, visited) {
30531        visited = visited || {};
30532
30533        for (var i in o) {
30534          if (o.hasOwnProperty(i)) {
30535            callback.call(o, i, o[i], type || i);
30536
30537            if (_.util.type(o[i]) === "Object" && !visited[_.util.objId(o[i])]) {
30538              visited[_.util.objId(o[i])] = true;
30539
30540              _.languages.DFS(o[i], callback, null, visited);
30541            } else if (_.util.type(o[i]) === "Array" && !visited[_.util.objId(o[i])]) {
30542              visited[_.util.objId(o[i])] = true;
30543
30544              _.languages.DFS(o[i], callback, i, visited);
30545            }
30546          }
30547        }
30548      }
30549    },
30550    plugins: {},
30551    highlight: function highlight(text, grammar, language) {
30552      var env = {
30553        code: text,
30554        grammar: grammar,
30555        language: language
30556      };
30557      env.tokens = _.tokenize(env.code, env.grammar);
30558      return Token.stringify(_.util.encode(env.tokens), env.language);
30559    },
30560    matchGrammar: function matchGrammar(text, strarr, grammar, index, startPos, oneshot, target) {
30561      var Token = _.Token;
30562
30563      for (var token in grammar) {
30564        if (!grammar.hasOwnProperty(token) || !grammar[token]) {
30565          continue;
30566        }
30567
30568        if (token == target) {
30569          return;
30570        }
30571
30572        var patterns = grammar[token];
30573        patterns = _.util.type(patterns) === "Array" ? patterns : [patterns];
30574
30575        for (var j = 0; j < patterns.length; ++j) {
30576          var pattern = patterns[j],
30577              inside = pattern.inside,
30578              lookbehind = !!pattern.lookbehind,
30579              greedy = !!pattern.greedy,
30580              lookbehindLength = 0,
30581              alias = pattern.alias;
30582
30583          if (greedy && !pattern.pattern.global) {
30584            // Without the global flag, lastIndex won't work
30585            var flags = pattern.pattern.toString().match(/[imuy]*$/)[0];
30586            pattern.pattern = RegExp(pattern.pattern.source, flags + "g");
30587          }
30588
30589          pattern = pattern.pattern || pattern; // Don’t cache length as it changes during the loop
30590
30591          for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {
30592            var str = strarr[i];
30593
30594            if (strarr.length > text.length) {
30595              // Something went terribly wrong, ABORT, ABORT!
30596              return;
30597            }
30598
30599            if (str instanceof Token) {
30600              continue;
30601            }
30602
30603            if (greedy && i != strarr.length - 1) {
30604              pattern.lastIndex = pos;
30605              var match = pattern.exec(text);
30606
30607              if (!match) {
30608                break;
30609              }
30610
30611              var from = match.index + (lookbehind ? match[1].length : 0),
30612                  to = match.index + match[0].length,
30613                  k = i,
30614                  p = pos;
30615
30616              for (var len = strarr.length; k < len && (p < to || !strarr[k].type && !strarr[k - 1].greedy); ++k) {
30617                p += strarr[k].length; // Move the index i to the element in strarr that is closest to from
30618
30619                if (from >= p) {
30620                  ++i;
30621                  pos = p;
30622                }
30623              } // If strarr[i] is a Token, then the match starts inside another Token, which is invalid
30624
30625
30626              if (strarr[i] instanceof Token) {
30627                continue;
30628              } // Number of tokens to delete and replace with the new match
30629
30630
30631              delNum = k - i;
30632              str = text.slice(pos, p);
30633              match.index -= pos;
30634            } else {
30635              pattern.lastIndex = 0;
30636              var match = pattern.exec(str),
30637                  delNum = 1;
30638            }
30639
30640            if (!match) {
30641              if (oneshot) {
30642                break;
30643              }
30644
30645              continue;
30646            }
30647
30648            if (lookbehind) {
30649              lookbehindLength = match[1] ? match[1].length : 0;
30650            }
30651
30652            var from = match.index + lookbehindLength,
30653                match = match[0].slice(lookbehindLength),
30654                to = from + match.length,
30655                before = str.slice(0, from),
30656                after = str.slice(to);
30657            var args = [i, delNum];
30658
30659            if (before) {
30660              ++i;
30661              pos += before.length;
30662              args.push(before);
30663            }
30664
30665            var wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy);
30666            args.push(wrapped);
30667
30668            if (after) {
30669              args.push(after);
30670            }
30671
30672            Array.prototype.splice.apply(strarr, args);
30673            if (delNum != 1) _.matchGrammar(text, strarr, grammar, i, pos, true, token);
30674            if (oneshot) break;
30675          }
30676        }
30677      }
30678    },
30679    hooks: {
30680      add: function add() {}
30681    },
30682    tokenize: function tokenize(text, grammar, language) {
30683      var strarr = [text];
30684      var rest = grammar.rest;
30685
30686      if (rest) {
30687        for (var token in rest) {
30688          grammar[token] = rest[token];
30689        }
30690
30691        delete grammar.rest;
30692      }
30693
30694      _.matchGrammar(text, strarr, grammar, 0, 0, false);
30695
30696      return strarr;
30697    }
30698  };
30699
30700  var Token = _.Token = function (type, content, alias, matchedStr, greedy) {
30701    this.type = type;
30702    this.content = content;
30703    this.alias = alias; // Copy of the full string this token was created from
30704
30705    this.length = (matchedStr || "").length | 0;
30706    this.greedy = !!greedy;
30707  };
30708
30709  Token.stringify = function (o, language, parent) {
30710    if (typeof o == "string") {
30711      return o;
30712    }
30713
30714    if (_.util.type(o) === "Array") {
30715      return o.map(function (element) {
30716        return Token.stringify(element, language, o);
30717      }).join("");
30718    }
30719
30720    var env = {
30721      type: o.type,
30722      content: Token.stringify(o.content, language, parent),
30723      tag: "span",
30724      classes: ["token", o.type],
30725      attributes: {},
30726      language: language,
30727      parent: parent
30728    };
30729
30730    if (o.alias) {
30731      var aliases = _.util.type(o.alias) === "Array" ? o.alias : [o.alias];
30732      Array.prototype.push.apply(env.classes, aliases);
30733    }
30734
30735    var attributes = Object.keys(env.attributes).map(function (name) {
30736      return name + '="' + (env.attributes[name] || "").replace(/"/g, "&quot;") + '"';
30737    }).join(" ");
30738    return "<" + env.tag + ' class="' + env.classes.join(" ") + '"' + (attributes ? " " + attributes : "") + ">" + env.content + "</" + env.tag + ">";
30739  };
30740
30741  return _;
30742}();
30743
30744module.exports = Prism;
30745Prism.default = Prism;
30746
30747/***/ }),
30748
vendor: 2,158 bytes, lines 30749-30835
30749/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/duotoneDark.js":
30750/*!****************************************************************************************!*\
30751  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/themes/duotoneDark.js ***!
30752  \****************************************************************************************/
30753/*! no static exports found */
30754/***/ (function(module, exports) {
30755
30756// @flow
30757// Duotone Dark
30758// Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes)
30759// Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css)
30760// Generated with Base16 Builder (https://github.com/base16-builder/base16-builder)
30761
30762/*:: import type { PrismTheme } from '../src/types' */
30763var theme
30764/*: PrismTheme */
30765= {
30766  plain: {
30767    backgroundColor: "#2a2734",
30768    color: "#9a86fd"
30769  },
30770  styles: [{
30771    types: ["comment", "prolog", "doctype", "cdata", "punctuation"],
30772    style: {
30773      color: "#6c6783"
30774    }
30775  }, {
30776    types: ["namespace"],
30777    style: {
30778      opacity: 0.7
30779    }
30780  }, {
30781    types: ["tag", "operator", "number"],
30782    style: {
30783      color: "#e09142"
30784    }
30785  }, {
30786    types: ["property", "function"],
30787    style: {
30788      color: "#9a86fd"
30789    }
30790  }, {
30791    types: ["tag-id", "selector", "atrule-id"],
30792    style: {
30793      color: "#eeebff"
30794    }
30795  }, {
30796    types: ["attr-name"],
30797    style: {
30798      color: "#c4b9fe"
30799    }
30800  }, {
30801    types: ["boolean", "string", "entity", "url", "attr-value", "keyword", "control", "directive", "unit", "statement", "regex", "at-rule", "placeholder", "variable"],
30802    style: {
30803      color: "#ffcc99"
30804    }
30805  }, {
30806    types: ["deleted"],
30807    style: {
30808      textDecorationLine: "line-through"
30809    }
30810  }, {
30811    types: ["inserted"],
30812    style: {
30813      textDecorationLine: "underline"
30814    }
30815  }, {
30816    types: ["italic"],
30817    style: {
30818      fontStyle: "italic"
30819    }
30820  }, {
30821    types: ["important", "bold"],
30822    style: {
30823      fontWeight: "bold"
30824    }
30825  }, {
30826    types: ["important"],
30827    style: {
30828      color: "#c4b9fe"
30829    }
30830  }]
30831};
30832module.exports = theme;
30833
30834/***/ }),
30835
vendor: 2,218 bytes, lines 30836-30932
30836/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/nightOwlLight.js":
30837/*!******************************************************************************************!*\
30838  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/themes/nightOwlLight.js ***!
30839  \******************************************************************************************/
30840/*! no static exports found */
30841/***/ (function(module, exports) {
30842
30843// @flow
30844// Original: https://github.com/sdras/night-owl-vscode-theme
30845// Converted automatically using ./tools/themeFromVsCode
30846
30847/*:: import type { PrismTheme } from '../src/types' */
30848var theme
30849/*: PrismTheme */
30850= {
30851  plain: {
30852    color: "#403f53",
30853    backgroundColor: "#FBFBFB"
30854  },
30855  styles: [{
30856    types: ["changed"],
30857    style: {
30858      color: "rgb(162, 191, 252)",
30859      fontStyle: "italic"
30860    }
30861  }, {
30862    types: ["deleted"],
30863    style: {
30864      color: "rgba(239, 83, 80, 0.56)",
30865      fontStyle: "italic"
30866    }
30867  }, {
30868    types: ["inserted", "attr-name"],
30869    style: {
30870      color: "rgb(72, 118, 214)",
30871      fontStyle: "italic"
30872    }
30873  }, {
30874    types: ["comment"],
30875    style: {
30876      color: "rgb(152, 159, 177)",
30877      fontStyle: "italic"
30878    }
30879  }, {
30880    types: ["string", "builtin", "char", "constant", "url"],
30881    style: {
30882      color: "rgb(72, 118, 214)"
30883    }
30884  }, {
30885    types: ["variable"],
30886    style: {
30887      color: "rgb(201, 103, 101)"
30888    }
30889  }, {
30890    types: ["number"],
30891    style: {
30892      color: "rgb(170, 9, 130)"
30893    }
30894  }, {
30895    // This was manually added after the auto-generation
30896    // so that punctuations are not italicised
30897    types: ["punctuation"],
30898    style: {
30899      color: "rgb(153, 76, 195)"
30900    }
30901  }, {
30902    types: ["function", "selector", "doctype"],
30903    style: {
30904      color: "rgb(153, 76, 195)",
30905      fontStyle: "italic"
30906    }
30907  }, {
30908    types: ["class-name"],
30909    style: {
30910      color: "rgb(17, 17, 17)"
30911    }
30912  }, {
30913    types: ["tag"],
30914    style: {
30915      color: "rgb(153, 76, 195)"
30916    }
30917  }, {
30918    types: ["operator", "property", "keyword", "namespace"],
30919    style: {
30920      color: "rgb(12, 150, 155)"
30921    }
30922  }, {
30923    types: ["boolean"],
30924    style: {
30925      color: "rgb(188, 84, 84)"
30926    }
30927  }]
30928};
30929module.exports = theme;
30930
30931/***/ }),
30932
vendor: 2,159 bytes, lines 30933-31036
30933/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/vsDark.js":
30934/*!***********************************************************************************!*\
30935  !*** ./node_modules/spectacle/node_modules/prism-react-renderer/themes/vsDark.js ***!
30936  \***********************************************************************************/
30937/*! no static exports found */
30938/***/ (function(module, exports) {
30939
30940// @flow
30941// Converted automatically using ./tools/themeFromVsCode
30942
30943/*:: import type { PrismTheme } from '../src/types' */
30944var theme
30945/*: PrismTheme */
30946= {
30947  plain: {
30948    color: "#9CDCFE",
30949    backgroundColor: "#1E1E1E"
30950  },
30951  styles: [{
30952    types: ["prolog"],
30953    style: {
30954      color: "rgb(0, 0, 128)"
30955    }
30956  }, {
30957    types: ["comment"],
30958    style: {
30959      color: "rgb(106, 153, 85)"
30960    }
30961  }, {
30962    types: ["builtin", "changed", "keyword"],
30963    style: {
30964      color: "rgb(86, 156, 214)"
30965    }
30966  }, {
30967    types: ["number", "inserted"],
30968    style: {
30969      color: "rgb(181, 206, 168)"
30970    }
30971  }, {
30972    types: ["constant"],
30973    style: {
30974      color: "rgb(100, 102, 149)"
30975    }
30976  }, {
30977    types: ["attr-name", "variable"],
30978    style: {
30979      color: "rgb(156, 220, 254)"
30980    }
30981  }, {
30982    types: ["deleted", "string", "attr-value"],
30983    style: {
30984      color: "rgb(206, 145, 120)"
30985    }
30986  }, {
30987    types: ["selector"],
30988    style: {
30989      color: "rgb(215, 186, 125)"
30990    }
30991  }, {
30992    // Fix tag color
30993    types: ["tag"],
30994    style: {
30995      color: "rgb(78, 201, 176)"
30996    }
30997  }, {
30998    // Fix tag color for HTML
30999    types: ["tag"],
31000    languages: ["markup"],
31001    style: {
31002      color: "rgb(86, 156, 214)"
31003    }
31004  }, {
31005    types: ["punctuation", "operator"],
31006    style: {
31007      color: "rgb(212, 212, 212)"
31008    }
31009  }, {
31010    // Fix punctuation color for HTML
31011    types: ["punctuation"],
31012    languages: ["markup"],
31013    style: {
31014      color: "#808080"
31015    }
31016  }, {
31017    types: ["function"],
31018    style: {
31019      color: "rgb(220, 220, 170)"
31020    }
31021  }, {
31022    types: ["class-name"],
31023    style: {
31024      color: "rgb(78, 201, 176)"
31025    }
31026  }, {
31027    types: ["char"],
31028    style: {
31029      color: "rgb(209, 105, 105)"
31030    }
31031  }]
31032};
31033module.exports = theme;
31034
31035/***/ }),
31036
vendor: 770 bytes, lines 31037-31066
31037/***/ "./node_modules/split-on-first/index.js":
31038/*!**********************************************!*\
31039  !*** ./node_modules/split-on-first/index.js ***!
31040  \**********************************************/
31041/*! no static exports found */
31042/***/ (function(module, exports, __webpack_require__) {
31043
31044"use strict";
31045
31046
31047module.exports = (string, separator) => {
31048  if (!(typeof string === 'string' && typeof separator === 'string')) {
31049    throw new TypeError('Expected the arguments to be of type `string`');
31050  }
31051
31052  if (separator === '') {
31053    return [string];
31054  }
31055
31056  const separatorIndex = string.indexOf(separator);
31057
31058  if (separatorIndex === -1) {
31059    return [string];
31060  }
31061
31062  return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)];
31063};
31064
31065/***/ }),
31066
vendor: 455 bytes, lines 31067-31080
31067/***/ "./node_modules/strict-uri-encode/index.js":
31068/*!*************************************************!*\
31069  !*** ./node_modules/strict-uri-encode/index.js ***!
31070  \*************************************************/
31071/*! no static exports found */
31072/***/ (function(module, exports, __webpack_require__) {
31073
31074"use strict";
31075
31076
31077module.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);
31078
31079/***/ }),
31080
vendor: 83,356 bytes, lines 31081-33480
31081/***/ "./node_modules/styled-components/dist/styled-components.browser.esm.js":
31082/*!******************************************************************************!*\
31083  !*** ./node_modules/styled-components/dist/styled-components.browser.esm.js ***!
31084  \******************************************************************************/
31085/*! exports provided: default, createGlobalStyle, css, isStyledComponent, keyframes, ServerStyleSheet, StyleSheetConsumer, StyleSheetContext, StyleSheetManager, ThemeConsumer, ThemeContext, ThemeProvider, withTheme, __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS */
31086/***/ (function(module, __webpack_exports__, __webpack_require__) {
31087
31088"use strict";
31089__webpack_require__.r(__webpack_exports__);
31090/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createGlobalStyle", function() { return createGlobalStyle; });
31091/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; });
31092/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isStyledComponent", function() { return isStyledComponent; });
31093/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyframes", function() { return keyframes; });
31094/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ServerStyleSheet", function() { return ServerStyleSheet; });
31095/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StyleSheetConsumer", function() { return StyleSheetConsumer; });
31096/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StyleSheetContext", function() { return StyleSheetContext; });
31097/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StyleSheetManager", function() { return StyleSheetManager; });
31098/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeConsumer", function() { return ThemeConsumer; });
31099/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeContext", function() { return ThemeContext; });
31100/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeProvider", function() { return ThemeProvider; });
31101/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withTheme", function() { return withTheme; });
31102/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS", function() { return __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS; });
31103/* harmony import */ var stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! stylis/stylis.min */ "./node_modules/stylis/stylis.min.js");
31104/* harmony import */ var stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0__);
31105/* harmony import */ var stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! stylis-rule-sheet */ "./node_modules/stylis-rule-sheet/index.js");
31106/* harmony import */ var stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_1__);
31107/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
31108/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
31109/* harmony import */ var _emotion_unitless__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @emotion/unitless */ "./node_modules/@emotion/unitless/dist/unitless.browser.esm.js");
31110/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js");
31111/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_is__WEBPACK_IMPORTED_MODULE_4__);
31112/* harmony import */ var memoize_one__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! memoize-one */ "./node_modules/memoize-one/dist/memoize-one.esm.js");
31113/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
31114/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);
31115/* harmony import */ var _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @emotion/is-prop-valid */ "./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js");
31116/* harmony import */ var merge_anything__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! merge-anything */ "./node_modules/merge-anything/dist/index.esm.js");
31117
31118
31119
31120
31121
31122
31123
31124
31125 // 
31126
31127var interleave = function (strings, interpolations) {
31128  var result = [strings[0]];
31129
31130  for (var i = 0, len = interpolations.length; i < len; i += 1) {
31131    result.push(interpolations[i], strings[i + 1]);
31132  }
31133
31134  return result;
31135};
31136
31137var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
31138  return typeof obj;
31139} : function (obj) {
31140  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
31141};
31142
31143var classCallCheck = function (instance, Constructor) {
31144  if (!(instance instanceof Constructor)) {
31145    throw new TypeError("Cannot call a class as a function");
31146  }
31147};
31148
31149var createClass = function () {
31150  function defineProperties(target, props) {
31151    for (var i = 0; i < props.length; i++) {
31152      var descriptor = props[i];
31153      descriptor.enumerable = descriptor.enumerable || false;
31154      descriptor.configurable = true;
31155      if ("value" in descriptor) descriptor.writable = true;
31156      Object.defineProperty(target, descriptor.key, descriptor);
31157    }
31158  }
31159
31160  return function (Constructor, protoProps, staticProps) {
31161    if (protoProps) defineProperties(Constructor.prototype, protoProps);
31162    if (staticProps) defineProperties(Constructor, staticProps);
31163    return Constructor;
31164  };
31165}();
31166
31167var _extends = Object.assign || function (target) {
31168  for (var i = 1; i < arguments.length; i++) {
31169    var source = arguments[i];
31170
31171    for (var key in source) {
31172      if (Object.prototype.hasOwnProperty.call(source, key)) {
31173        target[key] = source[key];
31174      }
31175    }
31176  }
31177
31178  return target;
31179};
31180
31181var inherits = function (subClass, superClass) {
31182  if (typeof superClass !== "function" && superClass !== null) {
31183    throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
31184  }
31185
31186  subClass.prototype = Object.create(superClass && superClass.prototype, {
31187    constructor: {
31188      value: subClass,
31189      enumerable: false,
31190      writable: true,
31191      configurable: true
31192    }
31193  });
31194  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
31195};
31196
31197var objectWithoutProperties = function (obj, keys) {
31198  var target = {};
31199
31200  for (var i in obj) {
31201    if (keys.indexOf(i) >= 0) continue;
31202    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
31203    target[i] = obj[i];
31204  }
31205
31206  return target;
31207};
31208
31209var possibleConstructorReturn = function (self, call) {
31210  if (!self) {
31211    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
31212  }
31213
31214  return call && (typeof call === "object" || typeof call === "function") ? call : self;
31215}; // 
31216
31217
31218var isPlainObject = function (x) {
31219  return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x.constructor === Object;
31220}; // 
31221
31222
31223var EMPTY_ARRAY = Object.freeze([]);
31224var EMPTY_OBJECT = Object.freeze({}); // 
31225
31226function isFunction(test) {
31227  return typeof test === 'function';
31228} // 
31229
31230
31231function getComponentName(target) {
31232  return ( true ? typeof target === 'string' && target : undefined) || target.displayName || target.name || 'Component';
31233} // 
31234
31235
31236function isStatelessFunction(test) {
31237  return typeof test === 'function' && !(test.prototype && test.prototype.isReactComponent);
31238} // 
31239
31240
31241function isStyledComponent(target) {
31242  return target && typeof target.styledComponentId === 'string';
31243} // 
31244
31245
31246var SC_ATTR = typeof process !== 'undefined' && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR) || 'data-styled';
31247var SC_VERSION_ATTR = 'data-styled-version';
31248var SC_STREAM_ATTR = 'data-styled-streamed';
31249var IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;
31250var DISABLE_SPEEDY = typeof SC_DISABLE_SPEEDY === 'boolean' && SC_DISABLE_SPEEDY || typeof process !== 'undefined' && (process.env.REACT_APP_SC_DISABLE_SPEEDY || process.env.SC_DISABLE_SPEEDY) || "development" !== 'production'; // Shared empty execution context when generating static styles
31251
31252var STATIC_EXECUTION_CONTEXT = {}; // 
31253
31254/**
31255 * Parse errors.md and turn it into a simple hash of code: message
31256 */
31257
31258var ERRORS =  true ? {
31259  "1": "Cannot create styled-component for component: %s.\n\n",
31260  "2": "Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\n\n- Are you trying to reuse it across renders?\n- Are you accidentally calling collectStyles twice?\n\n",
31261  "3": "Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\n\n",
31262  "4": "The `StyleSheetManager` expects a valid target or sheet prop!\n\n- Does this error occur on the client and is your target falsy?\n- Does this error occur on the server and is the sheet falsy?\n\n",
31263  "5": "The clone method cannot be used on the client!\n\n- Are you running in a client-like environment on the server?\n- Are you trying to run SSR on the client?\n\n",
31264  "6": "Trying to insert a new style tag, but the given Node is unmounted!\n\n- Are you using a custom target that isn't mounted?\n- Does your document not have a valid head element?\n- Have you accidentally removed a style tag manually?\n\n",
31265  "7": "ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\n\n```js\ntheme={() => ({})}\n```\n\n",
31266  "8": "ThemeProvider: Please make your \"theme\" prop an object.\n\n",
31267  "9": "Missing document `<head>`\n\n",
31268  "10": "Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\n\n",
31269  "11": "_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\n\n",
31270  "12": "It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\`\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\n\n",
31271  "13": "%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\n"
31272} : undefined;
31273/**
31274 * super basic version of sprintf
31275 */
31276
31277function format() {
31278  var a = arguments.length <= 0 ? undefined : arguments[0];
31279  var b = [];
31280
31281  for (var c = 1, len = arguments.length; c < len; c += 1) {
31282    b.push(arguments.length <= c ? undefined : arguments[c]);
31283  }
31284
31285  b.forEach(function (d) {
31286    a = a.replace(/%[a-z]/, d);
31287  });
31288  return a;
31289}
31290/**
31291 * Create an error file out of errors.md for development and a simple web link to the full errors
31292 * in production mode.
31293 */
31294
31295
31296var StyledComponentsError = function (_Error) {
31297  inherits(StyledComponentsError, _Error);
31298
31299  function StyledComponentsError(code) {
31300    classCallCheck(this, StyledComponentsError);
31301
31302    for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
31303      interpolations[_key - 1] = arguments[_key];
31304    }
31305
31306    if (false) { var _this; } else {
31307      var _this = possibleConstructorReturn(this, _Error.call(this, format.apply(undefined, [ERRORS[code]].concat(interpolations)).trim()));
31308    }
31309
31310    return possibleConstructorReturn(_this);
31311  }
31312
31313  return StyledComponentsError;
31314}(Error); // 
31315
31316
31317var SC_COMPONENT_ID = /^[^\S\n]*?\/\* sc-component-id:\s*(\S+)\s+\*\//gm;
31318
31319var extractComps = function (maybeCSS) {
31320  var css = '' + (maybeCSS || ''); // Definitely a string, and a clone
31321
31322  var existingComponents = [];
31323  css.replace(SC_COMPONENT_ID, function (match, componentId, matchIndex) {
31324    existingComponents.push({
31325      componentId: componentId,
31326      matchIndex: matchIndex
31327    });
31328    return match;
31329  });
31330  return existingComponents.map(function (_ref, i) {
31331    var componentId = _ref.componentId,
31332        matchIndex = _ref.matchIndex;
31333    var nextComp = existingComponents[i + 1];
31334    var cssFromDOM = nextComp ? css.slice(matchIndex, nextComp.matchIndex) : css.slice(matchIndex);
31335    return {
31336      componentId: componentId,
31337      cssFromDOM: cssFromDOM
31338    };
31339  });
31340}; // 
31341
31342
31343var COMMENT_REGEX = /^\s*\/\/.*$/gm; // NOTE: This stylis instance is only used to split rules from SSR'd style tags
31344
31345var stylisSplitter = new stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0___default.a({
31346  global: false,
31347  cascade: true,
31348  keyframe: false,
31349  prefix: false,
31350  compress: false,
31351  semicolon: true
31352});
31353var stylis = new stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0___default.a({
31354  global: false,
31355  cascade: true,
31356  keyframe: false,
31357  prefix: true,
31358  compress: false,
31359  semicolon: false // NOTE: This means "autocomplete missing semicolons"
31360
31361}); // Wrap `insertRulePlugin to build a list of rules,
31362// and then make our own plugin to return the rules. This
31363// makes it easier to hook into the existing SSR architecture
31364
31365var parsingRules = []; // eslint-disable-next-line consistent-return
31366
31367var returnRulesPlugin = function returnRulesPlugin(context) {
31368  if (context === -2) {
31369    var parsedRules = parsingRules;
31370    parsingRules = [];
31371    return parsedRules;
31372  }
31373};
31374
31375var parseRulesPlugin = stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_1___default()(function (rule) {
31376  parsingRules.push(rule);
31377});
31378
31379var _componentId = void 0;
31380
31381var _selector = void 0;
31382
31383var _selectorRegexp = void 0;
31384
31385var selfReferenceReplacer = function selfReferenceReplacer(match, offset, string) {
31386  if ( // the first self-ref is always untouched
31387  offset > 0 && // there should be at least two self-refs to do a replacement (.b > .b)
31388  string.slice(0, offset).indexOf(_selector) !== -1 && // no consecutive self refs (.b.b); that is a precedence boost and treated differently
31389  string.slice(offset - _selector.length, offset) !== _selector) {
31390    return '.' + _componentId;
31391  }
31392
31393  return match;
31394};
31395/**
31396 * When writing a style like
31397 *
31398 * & + & {
31399 *   color: red;
31400 * }
31401 *
31402 * The second ampersand should be a reference to the static component class. stylis
31403 * has no knowledge of static class so we have to intelligently replace the base selector.
31404 */
31405
31406
31407var selfReferenceReplacementPlugin = function selfReferenceReplacementPlugin(context, _, selectors) {
31408  if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {
31409    // eslint-disable-next-line no-param-reassign
31410    selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);
31411  }
31412};
31413
31414stylis.use([selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);
31415stylisSplitter.use([parseRulesPlugin, returnRulesPlugin]);
31416
31417var splitByRules = function splitByRules(css) {
31418  return stylisSplitter('', css);
31419};
31420
31421function stringifyRules(rules, selector, prefix) {
31422  var componentId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '&';
31423  var flatCSS = rules.join('').replace(COMMENT_REGEX, ''); // replace JS comments
31424
31425  var cssStr = selector && prefix ? prefix + ' ' + selector + ' { ' + flatCSS + ' }' : flatCSS; // stylis has no concept of state to be passed to plugins
31426  // but since JS is single=threaded, we can rely on that to ensure
31427  // these properties stay in sync with the current stylis run
31428
31429  _componentId = componentId;
31430  _selector = selector;
31431  _selectorRegexp = new RegExp('\\' + _selector + '\\b', 'g');
31432  return stylis(prefix || !selector ? '' : selector, cssStr);
31433} // 
31434
31435/* eslint-disable camelcase, no-undef */
31436
31437
31438var getNonce = function () {
31439  return  true ? __webpack_require__.nc : undefined;
31440}; // 
31441
31442/* These are helpers for the StyleTags to keep track of the injected
31443 * rule names for each (component) ID that they're keeping track of.
31444 * They're crucial for detecting whether a name has already been
31445 * injected.
31446 * (This excludes rehydrated names) */
31447
31448/* adds a new ID:name pairing to a names dictionary */
31449
31450
31451var addNameForId = function addNameForId(names, id, name) {
31452  if (name) {
31453    // eslint-disable-next-line no-param-reassign
31454    var namesForId = names[id] || (names[id] = Object.create(null));
31455    namesForId[name] = true;
31456  }
31457};
31458/* resets an ID entirely by overwriting it in the dictionary */
31459
31460
31461var resetIdNames = function resetIdNames(names, id) {
31462  // eslint-disable-next-line no-param-reassign
31463  names[id] = Object.create(null);
31464};
31465/* factory for a names dictionary checking the existance of an ID:name pairing */
31466
31467
31468var hasNameForId = function hasNameForId(names) {
31469  return function (id, name) {
31470    return names[id] !== undefined && names[id][name];
31471  };
31472};
31473/* stringifies names for the html/element output */
31474
31475
31476var stringifyNames = function stringifyNames(names) {
31477  var str = ''; // eslint-disable-next-line guard-for-in
31478
31479  for (var id in names) {
31480    str += Object.keys(names[id]).join(' ') + ' ';
31481  }
31482
31483  return str.trim();
31484};
31485/* clones the nested names dictionary */
31486
31487
31488var cloneNames = function cloneNames(names) {
31489  var clone = Object.create(null); // eslint-disable-next-line guard-for-in
31490
31491  for (var id in names) {
31492    clone[id] = _extends({}, names[id]);
31493  }
31494
31495  return clone;
31496}; // 
31497
31498/* These are helpers that deal with the insertRule (aka speedy) API
31499 * They are used in the StyleTags and specifically the speedy tag
31500 */
31501
31502/* retrieve a sheet for a given style tag */
31503
31504
31505var sheetForTag = function sheetForTag(tag) {
31506  // $FlowFixMe
31507  if (tag.sheet) return tag.sheet;
31508  /* Firefox quirk requires us to step through all stylesheets to find one owned by the given tag */
31509
31510  var size = tag.ownerDocument.styleSheets.length;
31511
31512  for (var i = 0; i < size; i += 1) {
31513    var sheet = tag.ownerDocument.styleSheets[i]; // $FlowFixMe
31514
31515    if (sheet.ownerNode === tag) return sheet;
31516  }
31517  /* we should always be able to find a tag */
31518
31519
31520  throw new StyledComponentsError(10);
31521};
31522/* insert a rule safely and return whether it was actually injected */
31523
31524
31525var safeInsertRule = function safeInsertRule(sheet, cssRule, index) {
31526  /* abort early if cssRule string is falsy */
31527  if (!cssRule) return false;
31528  var maxIndex = sheet.cssRules.length;
31529
31530  try {
31531    /* use insertRule and cap passed index with maxIndex (no of cssRules) */
31532    sheet.insertRule(cssRule, index <= maxIndex ? index : maxIndex);
31533  } catch (err) {
31534    /* any error indicates an invalid rule */
31535    return false;
31536  }
31537
31538  return true;
31539};
31540/* deletes `size` rules starting from `removalIndex` */
31541
31542
31543var deleteRules = function deleteRules(sheet, removalIndex, size) {
31544  var lowerBound = removalIndex - size;
31545
31546  for (var i = removalIndex; i > lowerBound; i -= 1) {
31547    sheet.deleteRule(i);
31548  }
31549}; // 
31550
31551/* this marker separates component styles and is important for rehydration */
31552
31553
31554var makeTextMarker = function makeTextMarker(id) {
31555  return '\n/* sc-component-id: ' + id + ' */\n';
31556};
31557/* add up all numbers in array up until and including the index */
31558
31559
31560var addUpUntilIndex = function addUpUntilIndex(sizes, index) {
31561  var totalUpToIndex = 0;
31562
31563  for (var i = 0; i <= index; i += 1) {
31564    totalUpToIndex += sizes[i];
31565  }
31566
31567  return totalUpToIndex;
31568};
31569/* create a new style tag after lastEl */
31570
31571
31572var makeStyleTag = function makeStyleTag(target, tagEl, insertBefore) {
31573  var targetDocument = document;
31574  if (target) targetDocument = target.ownerDocument;else if (tagEl) targetDocument = tagEl.ownerDocument;
31575  var el = targetDocument.createElement('style');
31576  el.setAttribute(SC_ATTR, '');
31577  el.setAttribute(SC_VERSION_ATTR, "4.4.1");
31578  var nonce = getNonce();
31579
31580  if (nonce) {
31581    el.setAttribute('nonce', nonce);
31582  }
31583  /* Work around insertRule quirk in EdgeHTML */
31584
31585
31586  el.appendChild(targetDocument.createTextNode(''));
31587
31588  if (target && !tagEl) {
31589    /* Append to target when no previous element was passed */
31590    target.appendChild(el);
31591  } else {
31592    if (!tagEl || !target || !tagEl.parentNode) {
31593      throw new StyledComponentsError(6);
31594    }
31595    /* Insert new style tag after the previous one */
31596
31597
31598    tagEl.parentNode.insertBefore(el, insertBefore ? tagEl : tagEl.nextSibling);
31599  }
31600
31601  return el;
31602};
31603/* takes a css factory function and outputs an html styled tag factory */
31604
31605
31606var wrapAsHtmlTag = function wrapAsHtmlTag(css, names) {
31607  return function (additionalAttrs) {
31608    var nonce = getNonce();
31609    var attrs = [nonce && 'nonce="' + nonce + '"', SC_ATTR + '="' + stringifyNames(names) + '"', SC_VERSION_ATTR + '="' + "4.4.1" + '"', additionalAttrs];
31610    var htmlAttr = attrs.filter(Boolean).join(' ');
31611    return '<style ' + htmlAttr + '>' + css() + '</style>';
31612  };
31613};
31614/* takes a css factory function and outputs an element factory */
31615
31616
31617var wrapAsElement = function wrapAsElement(css, names) {
31618  return function () {
31619    var _props;
31620
31621    var props = (_props = {}, _props[SC_ATTR] = stringifyNames(names), _props[SC_VERSION_ATTR] = "4.4.1", _props);
31622    var nonce = getNonce();
31623
31624    if (nonce) {
31625      // $FlowFixMe
31626      props.nonce = nonce;
31627    } // eslint-disable-next-line react/no-danger
31628
31629
31630    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement('style', _extends({}, props, {
31631      dangerouslySetInnerHTML: {
31632        __html: css()
31633      }
31634    }));
31635  };
31636};
31637
31638var getIdsFromMarkersFactory = function getIdsFromMarkersFactory(markers) {
31639  return function () {
31640    return Object.keys(markers);
31641  };
31642};
31643/* speedy tags utilise insertRule */
31644
31645
31646var makeSpeedyTag = function makeSpeedyTag(el, getImportRuleTag) {
31647  var names = Object.create(null);
31648  var markers = Object.create(null);
31649  var sizes = [];
31650  var extractImport = getImportRuleTag !== undefined;
31651  /* indicates whether getImportRuleTag was called */
31652
31653  var usedImportRuleTag = false;
31654
31655  var insertMarker = function insertMarker(id) {
31656    var prev = markers[id];
31657
31658    if (prev !== undefined) {
31659      return prev;
31660    }
31661
31662    markers[id] = sizes.length;
31663    sizes.push(0);
31664    resetIdNames(names, id);
31665    return markers[id];
31666  };
31667
31668  var insertRules = function insertRules(id, cssRules, name) {
31669    var marker = insertMarker(id);
31670    var sheet = sheetForTag(el);
31671    var insertIndex = addUpUntilIndex(sizes, marker);
31672    var injectedRules = 0;
31673    var importRules = [];
31674    var cssRulesSize = cssRules.length;
31675
31676    for (var i = 0; i < cssRulesSize; i += 1) {
31677      var cssRule = cssRules[i];
31678      var mayHaveImport = extractImport;
31679      /* @import rules are reordered to appear first */
31680
31681      if (mayHaveImport && cssRule.indexOf('@import') !== -1) {
31682        importRules.push(cssRule);
31683      } else if (safeInsertRule(sheet, cssRule, insertIndex + injectedRules)) {
31684        mayHaveImport = false;
31685        injectedRules += 1;
31686      }
31687    }
31688
31689    if (extractImport && importRules.length > 0) {
31690      usedImportRuleTag = true; // $FlowFixMe
31691
31692      getImportRuleTag().insertRules(id + '-import', importRules);
31693    }
31694
31695    sizes[marker] += injectedRules;
31696    /* add up no of injected rules */
31697
31698    addNameForId(names, id, name);
31699  };
31700
31701  var removeRules = function removeRules(id) {
31702    var marker = markers[id];
31703    if (marker === undefined) return; // $FlowFixMe
31704
31705    if (el.isConnected === false) return;
31706    var size = sizes[marker];
31707    var sheet = sheetForTag(el);
31708    var removalIndex = addUpUntilIndex(sizes, marker) - 1;
31709    deleteRules(sheet, removalIndex, size);
31710    sizes[marker] = 0;
31711    resetIdNames(names, id);
31712
31713    if (extractImport && usedImportRuleTag) {
31714      // $FlowFixMe
31715      getImportRuleTag().removeRules(id + '-import');
31716    }
31717  };
31718
31719  var css = function css() {
31720    var _sheetForTag = sheetForTag(el),
31721        cssRules = _sheetForTag.cssRules;
31722
31723    var str = ''; // eslint-disable-next-line guard-for-in
31724
31725    for (var id in markers) {
31726      str += makeTextMarker(id);
31727      var marker = markers[id];
31728      var end = addUpUntilIndex(sizes, marker);
31729      var size = sizes[marker];
31730
31731      for (var i = end - size; i < end; i += 1) {
31732        var rule = cssRules[i];
31733
31734        if (rule !== undefined) {
31735          str += rule.cssText;
31736        }
31737      }
31738    }
31739
31740    return str;
31741  };
31742
31743  return {
31744    clone: function clone() {
31745      throw new StyledComponentsError(5);
31746    },
31747    css: css,
31748    getIds: getIdsFromMarkersFactory(markers),
31749    hasNameForId: hasNameForId(names),
31750    insertMarker: insertMarker,
31751    insertRules: insertRules,
31752    removeRules: removeRules,
31753    sealed: false,
31754    styleTag: el,
31755    toElement: wrapAsElement(css, names),
31756    toHTML: wrapAsHtmlTag(css, names)
31757  };
31758};
31759
31760var makeTextNode = function makeTextNode(targetDocument, id) {
31761  return targetDocument.createTextNode(makeTextMarker(id));
31762};
31763
31764var makeBrowserTag = function makeBrowserTag(el, getImportRuleTag) {
31765  var names = Object.create(null);
31766  var markers = Object.create(null);
31767  var extractImport = getImportRuleTag !== undefined;
31768  /* indicates whether getImportRuleTag was called */
31769
31770  var usedImportRuleTag = false;
31771
31772  var insertMarker = function insertMarker(id) {
31773    var prev = markers[id];
31774
31775    if (prev !== undefined) {
31776      return prev;
31777    }
31778
31779    markers[id] = makeTextNode(el.ownerDocument, id);
31780    el.appendChild(markers[id]);
31781    names[id] = Object.create(null);
31782    return markers[id];
31783  };
31784
31785  var insertRules = function insertRules(id, cssRules, name) {
31786    var marker = insertMarker(id);
31787    var importRules = [];
31788    var cssRulesSize = cssRules.length;
31789
31790    for (var i = 0; i < cssRulesSize; i += 1) {
31791      var rule = cssRules[i];
31792      var mayHaveImport = extractImport;
31793
31794      if (mayHaveImport && rule.indexOf('@import') !== -1) {
31795        importRules.push(rule);
31796      } else {
31797        mayHaveImport = false;
31798        var separator = i === cssRulesSize - 1 ? '' : ' ';
31799        marker.appendData('' + rule + separator);
31800      }
31801    }
31802
31803    addNameForId(names, id, name);
31804
31805    if (extractImport && importRules.length > 0) {
31806      usedImportRuleTag = true; // $FlowFixMe
31807
31808      getImportRuleTag().insertRules(id + '-import', importRules);
31809    }
31810  };
31811
31812  var removeRules = function removeRules(id) {
31813    var marker = markers[id];
31814    if (marker === undefined) return;
31815    /* create new empty text node and replace the current one */
31816
31817    var newMarker = makeTextNode(el.ownerDocument, id);
31818    el.replaceChild(newMarker, marker);
31819    markers[id] = newMarker;
31820    resetIdNames(names, id);
31821
31822    if (extractImport && usedImportRuleTag) {
31823      // $FlowFixMe
31824      getImportRuleTag().removeRules(id + '-import');
31825    }
31826  };
31827
31828  var css = function css() {
31829    var str = ''; // eslint-disable-next-line guard-for-in
31830
31831    for (var id in markers) {
31832      str += markers[id].data;
31833    }
31834
31835    return str;
31836  };
31837
31838  return {
31839    clone: function clone() {
31840      throw new StyledComponentsError(5);
31841    },
31842    css: css,
31843    getIds: getIdsFromMarkersFactory(markers),
31844    hasNameForId: hasNameForId(names),
31845    insertMarker: insertMarker,
31846    insertRules: insertRules,
31847    removeRules: removeRules,
31848    sealed: false,
31849    styleTag: el,
31850    toElement: wrapAsElement(css, names),
31851    toHTML: wrapAsHtmlTag(css, names)
31852  };
31853};
31854
31855var makeServerTag = function makeServerTag(namesArg, markersArg) {
31856  var names = namesArg === undefined ? Object.create(null) : namesArg;
31857  var markers = markersArg === undefined ? Object.create(null) : markersArg;
31858
31859  var insertMarker = function insertMarker(id) {
31860    var prev = markers[id];
31861
31862    if (prev !== undefined) {
31863      return prev;
31864    }
31865
31866    return markers[id] = [''];
31867  };
31868
31869  var insertRules = function insertRules(id, cssRules, name) {
31870    var marker = insertMarker(id);
31871    marker[0] += cssRules.join(' ');
31872    addNameForId(names, id, name);
31873  };
31874
31875  var removeRules = function removeRules(id) {
31876    var marker = markers[id];
31877    if (marker === undefined) return;
31878    marker[0] = '';
31879    resetIdNames(names, id);
31880  };
31881
31882  var css = function css() {
31883    var str = ''; // eslint-disable-next-line guard-for-in
31884
31885    for (var id in markers) {
31886      var cssForId = markers[id][0];
31887
31888      if (cssForId) {
31889        str += makeTextMarker(id) + cssForId;
31890      }
31891    }
31892
31893    return str;
31894  };
31895
31896  var clone = function clone() {
31897    var namesClone = cloneNames(names);
31898    var markersClone = Object.create(null); // eslint-disable-next-line guard-for-in
31899
31900    for (var id in markers) {
31901      markersClone[id] = [markers[id][0]];
31902    }
31903
31904    return makeServerTag(namesClone, markersClone);
31905  };
31906
31907  var tag = {
31908    clone: clone,
31909    css: css,
31910    getIds: getIdsFromMarkersFactory(markers),
31911    hasNameForId: hasNameForId(names),
31912    insertMarker: insertMarker,
31913    insertRules: insertRules,
31914    removeRules: removeRules,
31915    sealed: false,
31916    styleTag: null,
31917    toElement: wrapAsElement(css, names),
31918    toHTML: wrapAsHtmlTag(css, names)
31919  };
31920  return tag;
31921};
31922
31923var makeTag = function makeTag(target, tagEl, forceServer, insertBefore, getImportRuleTag) {
31924  if (IS_BROWSER && !forceServer) {
31925    var el = makeStyleTag(target, tagEl, insertBefore);
31926
31927    if (DISABLE_SPEEDY) {
31928      return makeBrowserTag(el, getImportRuleTag);
31929    } else {
31930      return makeSpeedyTag(el, getImportRuleTag);
31931    }
31932  }
31933
31934  return makeServerTag();
31935};
31936
31937var rehydrate = function rehydrate(tag, els, extracted) {
31938  /* add all extracted components to the new tag */
31939  for (var i = 0, len = extracted.length; i < len; i += 1) {
31940    var _extracted$i = extracted[i],
31941        componentId = _extracted$i.componentId,
31942        cssFromDOM = _extracted$i.cssFromDOM;
31943    var cssRules = splitByRules(cssFromDOM);
31944    tag.insertRules(componentId, cssRules);
31945  }
31946  /* remove old HTMLStyleElements, since they have been rehydrated */
31947
31948
31949  for (var _i = 0, _len = els.length; _i < _len; _i += 1) {
31950    var el = els[_i];
31951
31952    if (el.parentNode) {
31953      el.parentNode.removeChild(el);
31954    }
31955  }
31956}; // 
31957
31958
31959var SPLIT_REGEX = /\s+/;
31960/* determine the maximum number of components before tags are sharded */
31961
31962var MAX_SIZE = void 0;
31963
31964if (IS_BROWSER) {
31965  /* in speedy mode we can keep a lot more rules in a sheet before a slowdown can be expected */
31966  MAX_SIZE = DISABLE_SPEEDY ? 40 : 1000;
31967} else {
31968  /* for servers we do not need to shard at all */
31969  MAX_SIZE = -1;
31970}
31971
31972var sheetRunningId = 0;
31973var master = void 0;
31974
31975var StyleSheet = function () {
31976  /* a map from ids to tags */
31977
31978  /* deferred rules for a given id */
31979
31980  /* this is used for not reinjecting rules via hasNameForId() */
31981
31982  /* when rules for an id are removed using remove() we have to ignore rehydratedNames for it */
31983
31984  /* a list of tags belonging to this StyleSheet */
31985
31986  /* a tag for import rules */
31987
31988  /* current capacity until a new tag must be created */
31989
31990  /* children (aka clones) of this StyleSheet inheriting all and future injections */
31991  function StyleSheet() {
31992    var _this = this;
31993
31994    var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IS_BROWSER ? document.head : null;
31995    var forceServer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
31996    classCallCheck(this, StyleSheet);
31997
31998    this.getImportRuleTag = function () {
31999      var importRuleTag = _this.importRuleTag;
32000
32001      if (importRuleTag !== undefined) {
32002        return importRuleTag;
32003      }
32004
32005      var firstTag = _this.tags[0];
32006      var insertBefore = true;
32007      return _this.importRuleTag = makeTag(_this.target, firstTag ? firstTag.styleTag : null, _this.forceServer, insertBefore);
32008    };
32009
32010    sheetRunningId += 1;
32011    this.id = sheetRunningId;
32012    this.forceServer = forceServer;
32013    this.target = forceServer ? null : target;
32014    this.tagMap = {};
32015    this.deferred = {};
32016    this.rehydratedNames = {};
32017    this.ignoreRehydratedNames = {};
32018    this.tags = [];
32019    this.capacity = 1;
32020    this.clones = [];
32021  }
32022  /* rehydrate all SSR'd style tags */
32023
32024
32025  StyleSheet.prototype.rehydrate = function rehydrate$$1() {
32026    if (!IS_BROWSER || this.forceServer) return this;
32027    var els = [];
32028    var extracted = [];
32029    var isStreamed = false;
32030    /* retrieve all of our SSR style elements from the DOM */
32031
32032    var nodes = document.querySelectorAll('style[' + SC_ATTR + '][' + SC_VERSION_ATTR + '="' + "4.4.1" + '"]');
32033    var nodesSize = nodes.length;
32034    /* abort rehydration if no previous style tags were found */
32035
32036    if (!nodesSize) return this;
32037
32038    for (var i = 0; i < nodesSize; i += 1) {
32039      var el = nodes[i];
32040      /* check if style tag is a streamed tag */
32041
32042      if (!isStreamed) isStreamed = !!el.getAttribute(SC_STREAM_ATTR);
32043      /* retrieve all component names */
32044
32045      var elNames = (el.getAttribute(SC_ATTR) || '').trim().split(SPLIT_REGEX);
32046      var elNamesSize = elNames.length;
32047
32048      for (var j = 0, name; j < elNamesSize; j += 1) {
32049        name = elNames[j];
32050        /* add rehydrated name to sheet to avoid re-adding styles */
32051
32052        this.rehydratedNames[name] = true;
32053      }
32054      /* extract all components and their CSS */
32055
32056
32057      extracted.push.apply(extracted, extractComps(el.textContent));
32058      /* store original HTMLStyleElement */
32059
32060      els.push(el);
32061    }
32062    /* abort rehydration if nothing was extracted */
32063
32064
32065    var extractedSize = extracted.length;
32066    if (!extractedSize) return this;
32067    /* create a tag to be used for rehydration */
32068
32069    var tag = this.makeTag(null);
32070    rehydrate(tag, els, extracted);
32071    /* reset capacity and adjust MAX_SIZE by the initial size of the rehydration */
32072
32073    this.capacity = Math.max(1, MAX_SIZE - extractedSize);
32074    this.tags.push(tag);
32075    /* retrieve all component ids */
32076
32077    for (var _j = 0; _j < extractedSize; _j += 1) {
32078      this.tagMap[extracted[_j].componentId] = tag;
32079    }
32080
32081    return this;
32082  };
32083  /* retrieve a "master" instance of StyleSheet which is typically used when no other is available
32084   * The master StyleSheet is targeted by createGlobalStyle, keyframes, and components outside of any
32085    * StyleSheetManager's context */
32086
32087  /* reset the internal "master" instance */
32088
32089
32090  StyleSheet.reset = function reset() {
32091    var forceServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
32092    master = new StyleSheet(undefined, forceServer).rehydrate();
32093  };
32094  /* adds "children" to the StyleSheet that inherit all of the parents' rules
32095   * while their own rules do not affect the parent */
32096
32097
32098  StyleSheet.prototype.clone = function clone() {
32099    var sheet = new StyleSheet(this.target, this.forceServer);
32100    /* add to clone array */
32101
32102    this.clones.push(sheet);
32103    /* clone all tags */
32104
32105    sheet.tags = this.tags.map(function (tag) {
32106      var ids = tag.getIds();
32107      var newTag = tag.clone();
32108      /* reconstruct tagMap */
32109
32110      for (var i = 0; i < ids.length; i += 1) {
32111        sheet.tagMap[ids[i]] = newTag;
32112      }
32113
32114      return newTag;
32115    });
32116    /* clone other maps */
32117
32118    sheet.rehydratedNames = _extends({}, this.rehydratedNames);
32119    sheet.deferred = _extends({}, this.deferred);
32120    return sheet;
32121  };
32122  /* force StyleSheet to create a new tag on the next injection */
32123
32124
32125  StyleSheet.prototype.sealAllTags = function sealAllTags() {
32126    this.capacity = 1;
32127    this.tags.forEach(function (tag) {
32128      // eslint-disable-next-line no-param-reassign
32129      tag.sealed = true;
32130    });
32131  };
32132
32133  StyleSheet.prototype.makeTag = function makeTag$$1(tag) {
32134    var lastEl = tag ? tag.styleTag : null;
32135    var insertBefore = false;
32136    return makeTag(this.target, lastEl, this.forceServer, insertBefore, this.getImportRuleTag);
32137  };
32138  /* get a tag for a given componentId, assign the componentId to one, or shard */
32139
32140
32141  StyleSheet.prototype.getTagForId = function getTagForId(id) {
32142    /* simply return a tag, when the componentId was already assigned one */
32143    var prev = this.tagMap[id];
32144
32145    if (prev !== undefined && !prev.sealed) {
32146      return prev;
32147    }
32148
32149    var tag = this.tags[this.tags.length - 1];
32150    /* shard (create a new tag) if the tag is exhausted (See MAX_SIZE) */
32151
32152    this.capacity -= 1;
32153
32154    if (this.capacity === 0) {
32155      this.capacity = MAX_SIZE;
32156      tag = this.makeTag(tag);
32157      this.tags.push(tag);
32158    }
32159
32160    return this.tagMap[id] = tag;
32161  };
32162  /* mainly for createGlobalStyle to check for its id */
32163
32164
32165  StyleSheet.prototype.hasId = function hasId(id) {
32166    return this.tagMap[id] !== undefined;
32167  };
32168  /* caching layer checking id+name to already have a corresponding tag and injected rules */
32169
32170
32171  StyleSheet.prototype.hasNameForId = function hasNameForId(id, name) {
32172    /* exception for rehydrated names which are checked separately */
32173    if (this.ignoreRehydratedNames[id] === undefined && this.rehydratedNames[name]) {
32174      return true;
32175    }
32176
32177    var tag = this.tagMap[id];
32178    return tag !== undefined && tag.hasNameForId(id, name);
32179  };
32180  /* registers a componentId and registers it on its tag */
32181
32182
32183  StyleSheet.prototype.deferredInject = function deferredInject(id, cssRules) {
32184    /* don't inject when the id is already registered */
32185    if (this.tagMap[id] !== undefined) return;
32186    var clones = this.clones;
32187
32188    for (var i = 0; i < clones.length; i += 1) {
32189      clones[i].deferredInject(id, cssRules);
32190    }
32191
32192    this.getTagForId(id).insertMarker(id);
32193    this.deferred[id] = cssRules;
32194  };
32195  /* injects rules for a given id with a name that will need to be cached */
32196
32197
32198  StyleSheet.prototype.inject = function inject(id, cssRules, name) {
32199    var clones = this.clones;
32200
32201    for (var i = 0; i < clones.length; i += 1) {
32202      clones[i].inject(id, cssRules, name);
32203    }
32204
32205    var tag = this.getTagForId(id);
32206    /* add deferred rules for component */
32207
32208    if (this.deferred[id] !== undefined) {
32209      // Combine passed cssRules with previously deferred CSS rules
32210      // NOTE: We cannot mutate the deferred array itself as all clones
32211      // do the same (see clones[i].inject)
32212      var rules = this.deferred[id].concat(cssRules);
32213      tag.insertRules(id, rules, name);
32214      this.deferred[id] = undefined;
32215    } else {
32216      tag.insertRules(id, cssRules, name);
32217    }
32218  };
32219  /* removes all rules for a given id, which doesn't remove its marker but resets it */
32220
32221
32222  StyleSheet.prototype.remove = function remove(id) {
32223    var tag = this.tagMap[id];
32224    if (tag === undefined) return;
32225    var clones = this.clones;
32226
32227    for (var i = 0; i < clones.length; i += 1) {
32228      clones[i].remove(id);
32229    }
32230    /* remove all rules from the tag */
32231
32232
32233    tag.removeRules(id);
32234    /* ignore possible rehydrated names */
32235
32236    this.ignoreRehydratedNames[id] = true;
32237    /* delete possible deferred rules */
32238
32239    this.deferred[id] = undefined;
32240  };
32241
32242  StyleSheet.prototype.toHTML = function toHTML() {
32243    return this.tags.map(function (tag) {
32244      return tag.toHTML();
32245    }).join('');
32246  };
32247
32248  StyleSheet.prototype.toReactElements = function toReactElements() {
32249    var id = this.id;
32250    return this.tags.map(function (tag, i) {
32251      var key = 'sc-' + id + '-' + i;
32252      return /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["cloneElement"])(tag.toElement(), {
32253        key: key
32254      });
32255    });
32256  };
32257
32258  createClass(StyleSheet, null, [{
32259    key: 'master',
32260    get: function get$$1() {
32261      return master || (master = new StyleSheet().rehydrate());
32262    }
32263    /* NOTE: This is just for backwards-compatibility with jest-styled-components */
32264
32265  }, {
32266    key: 'instance',
32267    get: function get$$1() {
32268      return StyleSheet.master;
32269    }
32270  }]);
32271  return StyleSheet;
32272}(); // 
32273
32274
32275var Keyframes = function () {
32276  function Keyframes(name, rules) {
32277    var _this = this;
32278
32279    classCallCheck(this, Keyframes);
32280
32281    this.inject = function (styleSheet) {
32282      if (!styleSheet.hasNameForId(_this.id, _this.name)) {
32283        styleSheet.inject(_this.id, _this.rules, _this.name);
32284      }
32285    };
32286
32287    this.toString = function () {
32288      throw new StyledComponentsError(12, String(_this.name));
32289    };
32290
32291    this.name = name;
32292    this.rules = rules;
32293    this.id = 'sc-keyframes-' + name;
32294  }
32295
32296  Keyframes.prototype.getName = function getName() {
32297    return this.name;
32298  };
32299
32300  return Keyframes;
32301}(); // 
32302
32303/**
32304 * inlined version of
32305 * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js
32306 */
32307
32308
32309var uppercasePattern = /([A-Z])/g;
32310var msPattern = /^ms-/;
32311/**
32312 * Hyphenates a camelcased CSS property name, for example:
32313 *
32314 *   > hyphenateStyleName('backgroundColor')
32315 *   < "background-color"
32316 *   > hyphenateStyleName('MozTransition')
32317 *   < "-moz-transition"
32318 *   > hyphenateStyleName('msTransition')
32319 *   < "-ms-transition"
32320 *
32321 * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
32322 * is converted to `-ms-`.
32323 *
32324 * @param {string} string
32325 * @return {string}
32326 */
32327
32328function hyphenateStyleName(string) {
32329  return string.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');
32330} // 
32331// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js
32332
32333
32334function addUnitIfNeeded(name, value) {
32335  // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133
32336  // $FlowFixMe
32337  if (value == null || typeof value === 'boolean' || value === '') {
32338    return '';
32339  }
32340
32341  if (typeof value === 'number' && value !== 0 && !(name in _emotion_unitless__WEBPACK_IMPORTED_MODULE_3__["default"])) {
32342    return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers
32343  }
32344
32345  return String(value).trim();
32346} // 
32347
32348/**
32349 * It's falsish not falsy because 0 is allowed.
32350 */
32351
32352
32353var isFalsish = function isFalsish(chunk) {
32354  return chunk === undefined || chunk === null || chunk === false || chunk === '';
32355};
32356
32357var objToCssArray = function objToCssArray(obj, prevKey) {
32358  var rules = [];
32359  var keys = Object.keys(obj);
32360  keys.forEach(function (key) {
32361    if (!isFalsish(obj[key])) {
32362      if (isPlainObject(obj[key])) {
32363        rules.push.apply(rules, objToCssArray(obj[key], key));
32364        return rules;
32365      } else if (isFunction(obj[key])) {
32366        rules.push(hyphenateStyleName(key) + ':', obj[key], ';');
32367        return rules;
32368      }
32369
32370      rules.push(hyphenateStyleName(key) + ': ' + addUnitIfNeeded(key, obj[key]) + ';');
32371    }
32372
32373    return rules;
32374  });
32375  return prevKey ? [prevKey + ' {'].concat(rules, ['}']) : rules;
32376};
32377
32378function flatten(chunk, executionContext, styleSheet) {
32379  if (Array.isArray(chunk)) {
32380    var ruleSet = [];
32381
32382    for (var i = 0, len = chunk.length, result; i < len; i += 1) {
32383      result = flatten(chunk[i], executionContext, styleSheet);
32384      if (result === null) continue;else if (Array.isArray(result)) ruleSet.push.apply(ruleSet, result);else ruleSet.push(result);
32385    }
32386
32387    return ruleSet;
32388  }
32389
32390  if (isFalsish(chunk)) {
32391    return null;
32392  }
32393  /* Handle other components */
32394
32395
32396  if (isStyledComponent(chunk)) {
32397    return '.' + chunk.styledComponentId;
32398  }
32399  /* Either execute or defer the function */
32400
32401
32402  if (isFunction(chunk)) {
32403    if (isStatelessFunction(chunk) && executionContext) {
32404      var _result = chunk(executionContext);
32405
32406      if ( true && Object(react_is__WEBPACK_IMPORTED_MODULE_4__["isElement"])(_result)) {
32407        // eslint-disable-next-line no-console
32408        console.warn(getComponentName(chunk) + ' is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.');
32409      }
32410
32411      return flatten(_result, executionContext, styleSheet);
32412    } else return chunk;
32413  }
32414
32415  if (chunk instanceof Keyframes) {
32416    if (styleSheet) {
32417      chunk.inject(styleSheet);
32418      return chunk.getName();
32419    } else return chunk;
32420  }
32421  /* Handle objects */
32422
32423
32424  return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString();
32425} // 
32426
32427
32428function css(styles) {
32429  for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
32430    interpolations[_key - 1] = arguments[_key];
32431  }
32432
32433  if (isFunction(styles) || isPlainObject(styles)) {
32434    // $FlowFixMe
32435    return flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations)));
32436  } // $FlowFixMe
32437
32438
32439  return flatten(interleave(styles, interpolations));
32440} // 
32441
32442
32443function constructWithOptions(componentConstructor, tag) {
32444  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;
32445
32446  if (!Object(react_is__WEBPACK_IMPORTED_MODULE_4__["isValidElementType"])(tag)) {
32447    throw new StyledComponentsError(1, String(tag));
32448  }
32449  /* This is callable directly as a template function */
32450  // $FlowFixMe: Not typed to avoid destructuring arguments
32451
32452
32453  var templateFunction = function templateFunction() {
32454    return componentConstructor(tag, options, css.apply(undefined, arguments));
32455  };
32456  /* If config methods are called, wrap up a new template function and merge options */
32457
32458
32459  templateFunction.withConfig = function (config) {
32460    return constructWithOptions(componentConstructor, tag, _extends({}, options, config));
32461  };
32462  /* Modify/inject new props at runtime */
32463
32464
32465  templateFunction.attrs = function (attrs) {
32466    return constructWithOptions(componentConstructor, tag, _extends({}, options, {
32467      attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean)
32468    }));
32469  };
32470
32471  return templateFunction;
32472} // 
32473// Source: https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js
32474
32475
32476function murmurhash(c) {
32477  for (var e = c.length | 0, a = e | 0, d = 0, b; e >= 4;) {
32478    b = c.charCodeAt(d) & 255 | (c.charCodeAt(++d) & 255) << 8 | (c.charCodeAt(++d) & 255) << 16 | (c.charCodeAt(++d) & 255) << 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), b ^= b >>> 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16) ^ b, e -= 4, ++d;
32479  }
32480
32481  switch (e) {
32482    case 3:
32483      a ^= (c.charCodeAt(d + 2) & 255) << 16;
32484
32485    case 2:
32486      a ^= (c.charCodeAt(d + 1) & 255) << 8;
32487
32488    case 1:
32489      a ^= c.charCodeAt(d) & 255, a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);
32490  }
32491
32492  a ^= a >>> 13;
32493  a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);
32494  return (a ^ a >>> 15) >>> 0;
32495} // 
32496
32497/* eslint-disable no-bitwise */
32498
32499/* This is the "capacity" of our alphabet i.e. 2x26 for all letters plus their capitalised
32500 * counterparts */
32501
32502
32503var charsLength = 52;
32504/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */
32505
32506var getAlphabeticChar = function getAlphabeticChar(code) {
32507  return String.fromCharCode(code + (code > 25 ? 39 : 97));
32508};
32509/* input a number, usually a hash and convert it to base-52 */
32510
32511
32512function generateAlphabeticName(code) {
32513  var name = '';
32514  var x = void 0;
32515  /* get a char and divide by alphabet-length */
32516
32517  for (x = code; x > charsLength; x = Math.floor(x / charsLength)) {
32518    name = getAlphabeticChar(x % charsLength) + name;
32519  }
32520
32521  return getAlphabeticChar(x % charsLength) + name;
32522} // 
32523
32524
32525function hasFunctionObjectKey(obj) {
32526  // eslint-disable-next-line guard-for-in, no-restricted-syntax
32527  for (var key in obj) {
32528    if (isFunction(obj[key])) {
32529      return true;
32530    }
32531  }
32532
32533  return false;
32534}
32535
32536function isStaticRules(rules, attrs) {
32537  for (var i = 0; i < rules.length; i += 1) {
32538    var rule = rules[i]; // recursive case
32539
32540    if (Array.isArray(rule) && !isStaticRules(rule, attrs)) {
32541      return false;
32542    } else if (isFunction(rule) && !isStyledComponent(rule)) {
32543      // functions are allowed to be static if they're just being
32544      // used to get the classname of a nested styled component
32545      return false;
32546    }
32547  }
32548
32549  if (attrs.some(function (x) {
32550    return isFunction(x) || hasFunctionObjectKey(x);
32551  })) return false;
32552  return true;
32553} // 
32554
32555/* combines hashStr (murmurhash) and nameGenerator for convenience */
32556
32557
32558var hasher = function hasher(str) {
32559  return generateAlphabeticName(murmurhash(str));
32560};
32561/*
32562 ComponentStyle is all the CSS-specific stuff, not
32563 the React-specific stuff.
32564 */
32565
32566
32567var ComponentStyle = function () {
32568  function ComponentStyle(rules, attrs, componentId) {
32569    classCallCheck(this, ComponentStyle);
32570    this.rules = rules;
32571    this.isStatic =  false && false;
32572    this.componentId = componentId;
32573
32574    if (!StyleSheet.master.hasId(componentId)) {
32575      StyleSheet.master.deferredInject(componentId, []);
32576    }
32577  }
32578  /*
32579   * Flattens a rule set into valid CSS
32580   * Hashes it, wraps the whole chunk in a .hash1234 {}
32581   * Returns the hash to be injected on render()
32582   * */
32583
32584
32585  ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) {
32586    var isStatic = this.isStatic,
32587        componentId = this.componentId,
32588        lastClassName = this.lastClassName;
32589
32590    if (IS_BROWSER && isStatic && typeof lastClassName === 'string' && styleSheet.hasNameForId(componentId, lastClassName)) {
32591      return lastClassName;
32592    }
32593
32594    var flatCSS = flatten(this.rules, executionContext, styleSheet);
32595    var name = hasher(this.componentId + flatCSS.join(''));
32596
32597    if (!styleSheet.hasNameForId(componentId, name)) {
32598      styleSheet.inject(this.componentId, stringifyRules(flatCSS, '.' + name, undefined, componentId), name);
32599    }
32600
32601    this.lastClassName = name;
32602    return name;
32603  };
32604
32605  ComponentStyle.generateName = function generateName(str) {
32606    return hasher(str);
32607  };
32608
32609  return ComponentStyle;
32610}(); // 
32611
32612
32613var LIMIT = 200;
32614
32615var createWarnTooManyClasses = function (displayName) {
32616  var generatedClasses = {};
32617  var warningSeen = false;
32618  return function (className) {
32619    if (!warningSeen) {
32620      generatedClasses[className] = true;
32621
32622      if (Object.keys(generatedClasses).length >= LIMIT) {
32623        // Unable to find latestRule in test environment.
32624
32625        /* eslint-disable no-console, prefer-template */
32626        console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. \n' + 'Consider using the attrs method, together with a style object for frequently changed styles.\n' + 'Example:\n' + '  const Component = styled.div.attrs(props => ({\n' + '    style: {\n' + '      background: props.background,\n' + '    },\n' + '  }))`width: 100%;`\n\n' + '  <Component />');
32627        warningSeen = true;
32628        generatedClasses = {};
32629      }
32630    }
32631  };
32632}; // 
32633
32634
32635var determineTheme = function (props, fallbackTheme) {
32636  var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT; // Props should take precedence over ThemeProvider, which should take precedence over
32637  // defaultProps, but React automatically puts defaultProps on props.
32638
32639  /* eslint-disable react/prop-types, flowtype-errors/show-errors */
32640
32641  var isDefaultTheme = defaultProps ? props.theme === defaultProps.theme : false;
32642  var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme || defaultProps.theme;
32643  /* eslint-enable */
32644
32645  return theme;
32646}; // 
32647
32648
32649var escapeRegex = /[[\].#*$><+~=|^:(),"'`-]+/g;
32650var dashesAtEnds = /(^-|-$)/g;
32651/**
32652 * TODO: Explore using CSS.escape when it becomes more available
32653 * in evergreen browsers.
32654 */
32655
32656function escape(str) {
32657  return str // Replace all possible CSS selectors
32658  .replace(escapeRegex, '-') // Remove extraneous hyphens at the start and end
32659  .replace(dashesAtEnds, '');
32660} // 
32661
32662
32663function isTag(target) {
32664  return typeof target === 'string' && ( true ? target.charAt(0) === target.charAt(0).toLowerCase() : undefined);
32665} // 
32666
32667
32668function generateDisplayName(target) {
32669  // $FlowFixMe
32670  return isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')';
32671}
32672
32673var _TYPE_STATICS;
32674
32675var REACT_STATICS = {
32676  childContextTypes: true,
32677  contextTypes: true,
32678  defaultProps: true,
32679  displayName: true,
32680  getDerivedStateFromProps: true,
32681  propTypes: true,
32682  type: true
32683};
32684var KNOWN_STATICS = {
32685  name: true,
32686  length: true,
32687  prototype: true,
32688  caller: true,
32689  callee: true,
32690  arguments: true,
32691  arity: true
32692};
32693var TYPE_STATICS = (_TYPE_STATICS = {}, _TYPE_STATICS[react_is__WEBPACK_IMPORTED_MODULE_4__["ForwardRef"]] = {
32694  $$typeof: true,
32695  render: true
32696}, _TYPE_STATICS);
32697var defineProperty$1 = Object.defineProperty,
32698    getOwnPropertyNames = Object.getOwnPropertyNames,
32699    _Object$getOwnPropert = Object.getOwnPropertySymbols,
32700    getOwnPropertySymbols = _Object$getOwnPropert === undefined ? function () {
32701  return [];
32702} : _Object$getOwnPropert,
32703    getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor,
32704    getPrototypeOf = Object.getPrototypeOf,
32705    objectPrototype = Object.prototype;
32706var arrayPrototype = Array.prototype;
32707
32708function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {
32709  if (typeof sourceComponent !== 'string') {
32710    // don't hoist over string (html) components
32711    var inheritedComponent = getPrototypeOf(sourceComponent);
32712
32713    if (inheritedComponent && inheritedComponent !== objectPrototype) {
32714      hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);
32715    }
32716
32717    var keys = arrayPrototype.concat(getOwnPropertyNames(sourceComponent), // $FlowFixMe
32718    getOwnPropertySymbols(sourceComponent));
32719    var targetStatics = TYPE_STATICS[targetComponent.$$typeof] || REACT_STATICS;
32720    var sourceStatics = TYPE_STATICS[sourceComponent.$$typeof] || REACT_STATICS;
32721    var i = keys.length;
32722    var descriptor = void 0;
32723    var key = void 0; // eslint-disable-next-line no-plusplus
32724
32725    while (i--) {
32726      key = keys[i];
32727
32728      if ( // $FlowFixMe
32729      !KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && // $FlowFixMe
32730      !(targetStatics && targetStatics[key])) {
32731        descriptor = getOwnPropertyDescriptor(sourceComponent, key);
32732
32733        if (descriptor) {
32734          try {
32735            // Avoid failures from read-only properties
32736            defineProperty$1(targetComponent, key, descriptor);
32737          } catch (e) {
32738            /* fail silently */
32739          }
32740        }
32741      }
32742    }
32743
32744    return targetComponent;
32745  }
32746
32747  return targetComponent;
32748} // 
32749
32750
32751function isDerivedReactComponent(fn) {
32752  return !!(fn && fn.prototype && fn.prototype.isReactComponent);
32753} // 
32754// Helper to call a given function, only once
32755
32756
32757var once = function (cb) {
32758  var called = false;
32759  return function () {
32760    if (!called) {
32761      called = true;
32762      cb.apply(undefined, arguments);
32763    }
32764  };
32765}; // 
32766
32767
32768var ThemeContext = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["createContext"])();
32769var ThemeConsumer = ThemeContext.Consumer;
32770/**
32771 * Provide a theme to an entire react component tree via context
32772 */
32773
32774var ThemeProvider = function (_Component) {
32775  inherits(ThemeProvider, _Component);
32776
32777  function ThemeProvider(props) {
32778    classCallCheck(this, ThemeProvider);
32779
32780    var _this = possibleConstructorReturn(this, _Component.call(this, props));
32781
32782    _this.getContext = Object(memoize_one__WEBPACK_IMPORTED_MODULE_5__["default"])(_this.getContext.bind(_this));
32783    _this.renderInner = _this.renderInner.bind(_this);
32784    return _this;
32785  }
32786
32787  ThemeProvider.prototype.render = function render() {
32788    if (!this.props.children) return null;
32789    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeContext.Consumer, null, this.renderInner);
32790  };
32791
32792  ThemeProvider.prototype.renderInner = function renderInner(outerTheme) {
32793    var context = this.getContext(this.props.theme, outerTheme);
32794    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeContext.Provider, {
32795      value: context
32796    }, this.props.children);
32797  };
32798  /**
32799   * Get the theme from the props, supporting both (outerTheme) => {}
32800   * as well as object notation
32801   */
32802
32803
32804  ThemeProvider.prototype.getTheme = function getTheme(theme, outerTheme) {
32805    if (isFunction(theme)) {
32806      var mergedTheme = theme(outerTheme);
32807
32808      if ( true && (mergedTheme === null || Array.isArray(mergedTheme) || (typeof mergedTheme === 'undefined' ? 'undefined' : _typeof(mergedTheme)) !== 'object')) {
32809        throw new StyledComponentsError(7);
32810      }
32811
32812      return mergedTheme;
32813    }
32814
32815    if (theme === null || Array.isArray(theme) || (typeof theme === 'undefined' ? 'undefined' : _typeof(theme)) !== 'object') {
32816      throw new StyledComponentsError(8);
32817    }
32818
32819    return _extends({}, outerTheme, theme);
32820  };
32821
32822  ThemeProvider.prototype.getContext = function getContext(theme, outerTheme) {
32823    return this.getTheme(theme, outerTheme);
32824  };
32825
32826  return ThemeProvider;
32827}(react__WEBPACK_IMPORTED_MODULE_2__["Component"]); // 
32828
32829
32830var CLOSING_TAG_R = /^\s*<\/[a-z]/i;
32831
32832var ServerStyleSheet = function () {
32833  function ServerStyleSheet() {
32834    classCallCheck(this, ServerStyleSheet);
32835    /* The master sheet might be reset, so keep a reference here */
32836
32837    this.masterSheet = StyleSheet.master;
32838    this.instance = this.masterSheet.clone();
32839    this.sealed = false;
32840  }
32841  /**
32842   * Mark the ServerStyleSheet as being fully emitted and manually GC it from the
32843   * StyleSheet singleton.
32844   */
32845
32846
32847  ServerStyleSheet.prototype.seal = function seal() {
32848    if (!this.sealed) {
32849      /* Remove sealed StyleSheets from the master sheet */
32850      var index = this.masterSheet.clones.indexOf(this.instance);
32851      this.masterSheet.clones.splice(index, 1);
32852      this.sealed = true;
32853    }
32854  };
32855
32856  ServerStyleSheet.prototype.collectStyles = function collectStyles(children) {
32857    if (this.sealed) {
32858      throw new StyledComponentsError(2);
32859    }
32860
32861    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(StyleSheetManager, {
32862      sheet: this.instance
32863    }, children);
32864  };
32865
32866  ServerStyleSheet.prototype.getStyleTags = function getStyleTags() {
32867    this.seal();
32868    return this.instance.toHTML();
32869  };
32870
32871  ServerStyleSheet.prototype.getStyleElement = function getStyleElement() {
32872    this.seal();
32873    return this.instance.toReactElements();
32874  };
32875
32876  ServerStyleSheet.prototype.interleaveWithNodeStream = function interleaveWithNodeStream(readableStream) {
32877    var _this = this;
32878
32879    {
32880      throw new StyledComponentsError(3);
32881    }
32882    /* the tag index keeps track of which tags have already been emitted */
32883
32884    var instance = this.instance;
32885    var instanceTagIndex = 0;
32886    var streamAttr = SC_STREAM_ATTR + '="true"';
32887    var transformer = new stream.Transform({
32888      transform: function appendStyleChunks(chunk,
32889      /* encoding */
32890      _, callback) {
32891        var tags = instance.tags;
32892        var html = '';
32893        /* retrieve html for each new style tag */
32894
32895        for (; instanceTagIndex < tags.length; instanceTagIndex += 1) {
32896          var tag = tags[instanceTagIndex];
32897          html += tag.toHTML(streamAttr);
32898        }
32899        /* force our StyleSheets to emit entirely new tags */
32900
32901
32902        instance.sealAllTags();
32903        var renderedHtml = chunk.toString();
32904        /* prepend style html to chunk, unless the start of the chunk is a closing tag in which case append right after that */
32905
32906        if (CLOSING_TAG_R.test(renderedHtml)) {
32907          var endOfClosingTag = renderedHtml.indexOf('>');
32908          this.push(renderedHtml.slice(0, endOfClosingTag + 1) + html + renderedHtml.slice(endOfClosingTag + 1));
32909        } else this.push(html + renderedHtml);
32910
32911        callback();
32912      }
32913    });
32914    readableStream.on('end', function () {
32915      return _this.seal();
32916    });
32917    readableStream.on('error', function (err) {
32918      _this.seal(); // forward the error to the transform stream
32919
32920
32921      transformer.emit('error', err);
32922    });
32923    return readableStream.pipe(transformer);
32924  };
32925
32926  return ServerStyleSheet;
32927}(); // 
32928
32929
32930var StyleSheetContext = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["createContext"])();
32931var StyleSheetConsumer = StyleSheetContext.Consumer;
32932
32933var StyleSheetManager = function (_Component) {
32934  inherits(StyleSheetManager, _Component);
32935
32936  function StyleSheetManager(props) {
32937    classCallCheck(this, StyleSheetManager);
32938
32939    var _this = possibleConstructorReturn(this, _Component.call(this, props));
32940
32941    _this.getContext = Object(memoize_one__WEBPACK_IMPORTED_MODULE_5__["default"])(_this.getContext);
32942    return _this;
32943  }
32944
32945  StyleSheetManager.prototype.getContext = function getContext(sheet, target) {
32946    if (sheet) {
32947      return sheet;
32948    } else if (target) {
32949      return new StyleSheet(target);
32950    } else {
32951      throw new StyledComponentsError(4);
32952    }
32953  };
32954
32955  StyleSheetManager.prototype.render = function render() {
32956    var _props = this.props,
32957        children = _props.children,
32958        sheet = _props.sheet,
32959        target = _props.target;
32960    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(StyleSheetContext.Provider, {
32961      value: this.getContext(sheet, target)
32962    },  true ? react__WEBPACK_IMPORTED_MODULE_2___default.a.Children.only(children) : undefined);
32963  };
32964
32965  return StyleSheetManager;
32966}(react__WEBPACK_IMPORTED_MODULE_2__["Component"]);
32967
32968 true ? StyleSheetManager.propTypes = {
32969  sheet: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.instanceOf(StyleSheet), prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.instanceOf(ServerStyleSheet)]),
32970  target: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.shape({
32971    appendChild: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired
32972  })
32973} : undefined; // 
32974
32975var identifiers = {};
32976/* We depend on components having unique IDs */
32977
32978function generateId(_ComponentStyle, _displayName, parentComponentId) {
32979  var displayName = typeof _displayName !== 'string' ? 'sc' : escape(_displayName);
32980  /**
32981   * This ensures uniqueness if two components happen to share
32982   * the same displayName.
32983   */
32984
32985  var nr = (identifiers[displayName] || 0) + 1;
32986  identifiers[displayName] = nr;
32987
32988  var componentId = displayName + '-' + _ComponentStyle.generateName(displayName + nr);
32989
32990  return parentComponentId ? parentComponentId + '-' + componentId : componentId;
32991} // $FlowFixMe
32992
32993
32994var StyledComponent = function (_Component) {
32995  inherits(StyledComponent, _Component);
32996
32997  function StyledComponent() {
32998    classCallCheck(this, StyledComponent);
32999
33000    var _this = possibleConstructorReturn(this, _Component.call(this));
33001
33002    _this.attrs = {};
33003    _this.renderOuter = _this.renderOuter.bind(_this);
33004    _this.renderInner = _this.renderInner.bind(_this);
33005
33006    if (true) {
33007      _this.warnInnerRef = once(function (displayName) {
33008        return (// eslint-disable-next-line no-console
33009          console.warn('The "innerRef" API has been removed in styled-components v4 in favor of React 16 ref forwarding, use "ref" instead like a typical component. "innerRef" was detected on component "' + displayName + '".')
33010        );
33011      });
33012      _this.warnAttrsFnObjectKeyDeprecated = once(function (key, displayName) {
33013        return (// eslint-disable-next-line no-console
33014          console.warn('Functions as object-form attrs({}) keys are now deprecated and will be removed in a future version of styled-components. Switch to the new attrs(props => ({})) syntax instead for easier and more powerful composition. The attrs key in question is "' + key + '" on component "' + displayName + '".', '\n ' + new Error().stack)
33015        );
33016      });
33017      _this.warnNonStyledComponentAttrsObjectKey = once(function (key, displayName) {
33018        return (// eslint-disable-next-line no-console
33019          console.warn('It looks like you\'ve used a non styled-component as the value for the "' + key + '" prop in an object-form attrs constructor of "' + displayName + '".\n' + 'You should use the new function-form attrs constructor which avoids this issue: attrs(props => ({ yourStuff }))\n' + "To continue using the deprecated object syntax, you'll need to wrap your component prop in a function to make it available inside the styled component (you'll still get the deprecation warning though.)\n" + ('For example, { ' + key + ': () => InnerComponent } instead of { ' + key + ': InnerComponent }'))
33020        );
33021      });
33022    }
33023
33024    return _this;
33025  }
33026
33027  StyledComponent.prototype.render = function render() {
33028    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(StyleSheetConsumer, null, this.renderOuter);
33029  };
33030
33031  StyledComponent.prototype.renderOuter = function renderOuter() {
33032    var styleSheet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : StyleSheet.master;
33033    this.styleSheet = styleSheet; // No need to subscribe a static component to theme changes, it won't change anything
33034
33035    if (this.props.forwardedComponent.componentStyle.isStatic) return this.renderInner();
33036    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeConsumer, null, this.renderInner);
33037  };
33038
33039  StyledComponent.prototype.renderInner = function renderInner(theme) {
33040    var _props$forwardedCompo = this.props.forwardedComponent,
33041        componentStyle = _props$forwardedCompo.componentStyle,
33042        defaultProps = _props$forwardedCompo.defaultProps,
33043        displayName = _props$forwardedCompo.displayName,
33044        foldedComponentIds = _props$forwardedCompo.foldedComponentIds,
33045        styledComponentId = _props$forwardedCompo.styledComponentId,
33046        target = _props$forwardedCompo.target;
33047    var generatedClassName = void 0;
33048
33049    if (componentStyle.isStatic) {
33050      generatedClassName = this.generateAndInjectStyles(EMPTY_OBJECT, this.props);
33051    } else {
33052      generatedClassName = this.generateAndInjectStyles(determineTheme(this.props, theme, defaultProps) || EMPTY_OBJECT, this.props);
33053    }
33054
33055    var elementToBeCreated = this.props.as || this.attrs.as || target;
33056    var isTargetTag = isTag(elementToBeCreated);
33057    var propsForElement = {};
33058
33059    var computedProps = _extends({}, this.props, this.attrs);
33060
33061    var key = void 0; // eslint-disable-next-line guard-for-in
33062
33063    for (key in computedProps) {
33064      if ( true && key === 'innerRef' && isTargetTag) {
33065        this.warnInnerRef(displayName);
33066      }
33067
33068      if (key === 'forwardedComponent' || key === 'as') {
33069        continue;
33070      } else if (key === 'forwardedRef') propsForElement.ref = computedProps[key];else if (key === 'forwardedAs') propsForElement.as = computedProps[key];else if (!isTargetTag || Object(_emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_7__["default"])(key)) {
33071        // Don't pass through non HTML tags through to HTML elements
33072        propsForElement[key] = computedProps[key];
33073      }
33074    }
33075
33076    if (this.props.style && this.attrs.style) {
33077      propsForElement.style = _extends({}, this.attrs.style, this.props.style);
33078    }
33079
33080    propsForElement.className = Array.prototype.concat(foldedComponentIds, styledComponentId, generatedClassName !== styledComponentId ? generatedClassName : null, this.props.className, this.attrs.className).filter(Boolean).join(' ');
33081    return /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["createElement"])(elementToBeCreated, propsForElement);
33082  };
33083
33084  StyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props, attrs) {
33085    var _this2 = this;
33086
33087    var context = _extends({}, props, {
33088      theme: theme
33089    });
33090
33091    if (!attrs.length) return context;
33092    this.attrs = {};
33093    attrs.forEach(function (attrDef) {
33094      var resolvedAttrDef = attrDef;
33095      var attrDefWasFn = false;
33096      var attr = void 0;
33097      var key = void 0;
33098
33099      if (isFunction(resolvedAttrDef)) {
33100        // $FlowFixMe
33101        resolvedAttrDef = resolvedAttrDef(context);
33102        attrDefWasFn = true;
33103      }
33104      /* eslint-disable guard-for-in */
33105      // $FlowFixMe
33106
33107
33108      for (key in resolvedAttrDef) {
33109        attr = resolvedAttrDef[key];
33110
33111        if (!attrDefWasFn) {
33112          if (isFunction(attr) && !isDerivedReactComponent(attr) && !isStyledComponent(attr)) {
33113            if (true) {
33114              _this2.warnAttrsFnObjectKeyDeprecated(key, props.forwardedComponent.displayName);
33115            }
33116
33117            attr = attr(context);
33118
33119            if ( true && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.isValidElement(attr)) {
33120              _this2.warnNonStyledComponentAttrsObjectKey(key, props.forwardedComponent.displayName);
33121            }
33122          }
33123        }
33124
33125        _this2.attrs[key] = attr;
33126        context[key] = attr;
33127      }
33128      /* eslint-enable */
33129
33130    });
33131    return context;
33132  };
33133
33134  StyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {
33135    var _props$forwardedCompo2 = props.forwardedComponent,
33136        attrs = _props$forwardedCompo2.attrs,
33137        componentStyle = _props$forwardedCompo2.componentStyle,
33138        warnTooManyClasses = _props$forwardedCompo2.warnTooManyClasses; // statically styled-components don't need to build an execution context object,
33139    // and shouldn't be increasing the number of class names
33140
33141    if (componentStyle.isStatic && !attrs.length) {
33142      return componentStyle.generateAndInjectStyles(EMPTY_OBJECT, this.styleSheet);
33143    }
33144
33145    var className = componentStyle.generateAndInjectStyles(this.buildExecutionContext(theme, props, attrs), this.styleSheet);
33146    if ( true && warnTooManyClasses) warnTooManyClasses(className);
33147    return className;
33148  };
33149
33150  return StyledComponent;
33151}(react__WEBPACK_IMPORTED_MODULE_2__["Component"]);
33152
33153function createStyledComponent(target, options, rules) {
33154  var isTargetStyledComp = isStyledComponent(target);
33155  var isClass = !isTag(target);
33156  var _options$displayName = options.displayName,
33157      displayName = _options$displayName === undefined ? generateDisplayName(target) : _options$displayName,
33158      _options$componentId = options.componentId,
33159      componentId = _options$componentId === undefined ? generateId(ComponentStyle, options.displayName, options.parentComponentId) : _options$componentId,
33160      _options$ParentCompon = options.ParentComponent,
33161      ParentComponent = _options$ParentCompon === undefined ? StyledComponent : _options$ParentCompon,
33162      _options$attrs = options.attrs,
33163      attrs = _options$attrs === undefined ? EMPTY_ARRAY : _options$attrs;
33164  var styledComponentId = options.displayName && options.componentId ? escape(options.displayName) + '-' + options.componentId : options.componentId || componentId; // fold the underlying StyledComponent attrs up (implicit extend)
33165
33166  var finalAttrs = // $FlowFixMe
33167  isTargetStyledComp && target.attrs ? Array.prototype.concat(target.attrs, attrs).filter(Boolean) : attrs;
33168  var componentStyle = new ComponentStyle(isTargetStyledComp ? // fold the underlying StyledComponent rules up (implicit extend)
33169  // $FlowFixMe
33170  target.componentStyle.rules.concat(rules) : rules, finalAttrs, styledComponentId);
33171  /**
33172   * forwardRef creates a new interim component, which we'll take advantage of
33173   * instead of extending ParentComponent to create _another_ interim class
33174   */
33175
33176  var WrappedStyledComponent = void 0;
33177
33178  var forwardRef = function forwardRef(props, ref) {
33179    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ParentComponent, _extends({}, props, {
33180      forwardedComponent: WrappedStyledComponent,
33181      forwardedRef: ref
33182    }));
33183  };
33184
33185  forwardRef.displayName = displayName;
33186  WrappedStyledComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.forwardRef(forwardRef);
33187  WrappedStyledComponent.displayName = displayName; // $FlowFixMe
33188
33189  WrappedStyledComponent.attrs = finalAttrs; // $FlowFixMe
33190
33191  WrappedStyledComponent.componentStyle = componentStyle; // $FlowFixMe
33192
33193  WrappedStyledComponent.foldedComponentIds = isTargetStyledComp ? // $FlowFixMe
33194  Array.prototype.concat(target.foldedComponentIds, target.styledComponentId) : EMPTY_ARRAY; // $FlowFixMe
33195
33196  WrappedStyledComponent.styledComponentId = styledComponentId; // fold the underlying StyledComponent target up since we folded the styles
33197  // $FlowFixMe
33198
33199  WrappedStyledComponent.target = isTargetStyledComp ? target.target : target; // $FlowFixMe
33200
33201  WrappedStyledComponent.withComponent = function withComponent(tag) {
33202    var previousComponentId = options.componentId,
33203        optionsToCopy = objectWithoutProperties(options, ['componentId']);
33204    var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : escape(getComponentName(tag)));
33205
33206    var newOptions = _extends({}, optionsToCopy, {
33207      attrs: finalAttrs,
33208      componentId: newComponentId,
33209      ParentComponent: ParentComponent
33210    });
33211
33212    return createStyledComponent(tag, newOptions, rules);
33213  }; // $FlowFixMe
33214
33215
33216  Object.defineProperty(WrappedStyledComponent, 'defaultProps', {
33217    get: function get$$1() {
33218      return this._foldedDefaultProps;
33219    },
33220    set: function set$$1(obj) {
33221      // $FlowFixMe
33222      this._foldedDefaultProps = isTargetStyledComp ? Object(merge_anything__WEBPACK_IMPORTED_MODULE_8__["default"])(target.defaultProps, obj) : obj;
33223    }
33224  });
33225
33226  if (true) {
33227    // $FlowFixMe
33228    WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(displayName);
33229  } // $FlowFixMe
33230
33231
33232  WrappedStyledComponent.toString = function () {
33233    return '.' + WrappedStyledComponent.styledComponentId;
33234  };
33235
33236  if (isClass) {
33237    hoistNonReactStatics(WrappedStyledComponent, target, {
33238      // all SC-specific things should not be hoisted
33239      attrs: true,
33240      componentStyle: true,
33241      displayName: true,
33242      foldedComponentIds: true,
33243      styledComponentId: true,
33244      target: true,
33245      withComponent: true
33246    });
33247  }
33248
33249  return WrappedStyledComponent;
33250} // 
33251// Thanks to ReactDOMFactories for this handy list!
33252
33253
33254var domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG
33255'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'marker', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan']; // 
33256
33257var styled = function styled(tag) {
33258  return constructWithOptions(createStyledComponent, tag);
33259}; // Shorthands for all valid HTML Elements
33260
33261
33262domElements.forEach(function (domElement) {
33263  styled[domElement] = styled(domElement);
33264}); // 
33265
33266var GlobalStyle = function () {
33267  function GlobalStyle(rules, componentId) {
33268    classCallCheck(this, GlobalStyle);
33269    this.rules = rules;
33270    this.componentId = componentId;
33271    this.isStatic = isStaticRules(rules, EMPTY_ARRAY);
33272
33273    if (!StyleSheet.master.hasId(componentId)) {
33274      StyleSheet.master.deferredInject(componentId, []);
33275    }
33276  }
33277
33278  GlobalStyle.prototype.createStyles = function createStyles(executionContext, styleSheet) {
33279    var flatCSS = flatten(this.rules, executionContext, styleSheet);
33280    var css = stringifyRules(flatCSS, '');
33281    styleSheet.inject(this.componentId, css);
33282  };
33283
33284  GlobalStyle.prototype.removeStyles = function removeStyles(styleSheet) {
33285    var componentId = this.componentId;
33286
33287    if (styleSheet.hasId(componentId)) {
33288      styleSheet.remove(componentId);
33289    }
33290  }; // TODO: overwrite in-place instead of remove+create?
33291
33292
33293  GlobalStyle.prototype.renderStyles = function renderStyles(executionContext, styleSheet) {
33294    this.removeStyles(styleSheet);
33295    this.createStyles(executionContext, styleSheet);
33296  };
33297
33298  return GlobalStyle;
33299}(); // 
33300// place our cache into shared context so it'll persist between HMRs
33301
33302
33303if (IS_BROWSER) {
33304  window.scCGSHMRCache = {};
33305}
33306
33307function createGlobalStyle(strings) {
33308  for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
33309    interpolations[_key - 1] = arguments[_key];
33310  }
33311
33312  var rules = css.apply(undefined, [strings].concat(interpolations));
33313  var id = 'sc-global-' + murmurhash(JSON.stringify(rules));
33314  var style = new GlobalStyle(rules, id);
33315
33316  var GlobalStyleComponent = function (_React$Component) {
33317    inherits(GlobalStyleComponent, _React$Component);
33318
33319    function GlobalStyleComponent(props) {
33320      classCallCheck(this, GlobalStyleComponent);
33321
33322      var _this = possibleConstructorReturn(this, _React$Component.call(this, props));
33323
33324      var _this$constructor = _this.constructor,
33325          globalStyle = _this$constructor.globalStyle,
33326          styledComponentId = _this$constructor.styledComponentId;
33327
33328      if (IS_BROWSER) {
33329        window.scCGSHMRCache[styledComponentId] = (window.scCGSHMRCache[styledComponentId] || 0) + 1;
33330      }
33331      /**
33332       * This fixes HMR compatibility. Don't ask me why, but this combination of
33333       * caching the closure variables via statics and then persisting the statics in
33334       * state works across HMR where no other combination did. ¯\_(ツ)_/¯
33335       */
33336
33337
33338      _this.state = {
33339        globalStyle: globalStyle,
33340        styledComponentId: styledComponentId
33341      };
33342      return _this;
33343    }
33344
33345    GlobalStyleComponent.prototype.componentWillUnmount = function componentWillUnmount() {
33346      if (window.scCGSHMRCache[this.state.styledComponentId]) {
33347        window.scCGSHMRCache[this.state.styledComponentId] -= 1;
33348      }
33349      /**
33350       * Depending on the order "render" is called this can cause the styles to be lost
33351       * until the next render pass of the remaining instance, which may
33352       * not be immediate.
33353       */
33354
33355
33356      if (window.scCGSHMRCache[this.state.styledComponentId] === 0) {
33357        this.state.globalStyle.removeStyles(this.styleSheet);
33358      }
33359    };
33360
33361    GlobalStyleComponent.prototype.render = function render() {
33362      var _this2 = this;
33363
33364      if ( true && react__WEBPACK_IMPORTED_MODULE_2___default.a.Children.count(this.props.children)) {
33365        // eslint-disable-next-line no-console
33366        console.warn('The global style component ' + this.state.styledComponentId + ' was given child JSX. createGlobalStyle does not render children.');
33367      }
33368
33369      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(StyleSheetConsumer, null, function (styleSheet) {
33370        _this2.styleSheet = styleSheet || StyleSheet.master;
33371        var globalStyle = _this2.state.globalStyle;
33372
33373        if (globalStyle.isStatic) {
33374          globalStyle.renderStyles(STATIC_EXECUTION_CONTEXT, _this2.styleSheet);
33375          return null;
33376        } else {
33377          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeConsumer, null, function (theme) {
33378            // $FlowFixMe
33379            var defaultProps = _this2.constructor.defaultProps;
33380
33381            var context = _extends({}, _this2.props);
33382
33383            if (typeof theme !== 'undefined') {
33384              context.theme = determineTheme(_this2.props, theme, defaultProps);
33385            }
33386
33387            globalStyle.renderStyles(context, _this2.styleSheet);
33388            return null;
33389          });
33390        }
33391      });
33392    };
33393
33394    return GlobalStyleComponent;
33395  }(react__WEBPACK_IMPORTED_MODULE_2___default.a.Component);
33396
33397  GlobalStyleComponent.globalStyle = style;
33398  GlobalStyleComponent.styledComponentId = id;
33399  return GlobalStyleComponent;
33400} // 
33401
33402
33403var replaceWhitespace = function replaceWhitespace(str) {
33404  return str.replace(/\s|\\n/g, '');
33405};
33406
33407function keyframes(strings) {
33408  /* Warning if you've used keyframes on React Native */
33409  if ( true && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
33410    // eslint-disable-next-line no-console
33411    console.warn('`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.');
33412  }
33413
33414  for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
33415    interpolations[_key - 1] = arguments[_key];
33416  }
33417
33418  var rules = css.apply(undefined, [strings].concat(interpolations));
33419  var name = generateAlphabeticName(murmurhash(replaceWhitespace(JSON.stringify(rules))));
33420  return new Keyframes(name, stringifyRules(rules, name, '@keyframes'));
33421} // 
33422
33423
33424var withTheme = function (Component$$1) {
33425  var WithTheme = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.forwardRef(function (props, ref) {
33426    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeConsumer, null, function (theme) {
33427      // $FlowFixMe
33428      var defaultProps = Component$$1.defaultProps;
33429      var themeProp = determineTheme(props, theme, defaultProps);
33430
33431      if ( true && themeProp === undefined) {
33432        // eslint-disable-next-line no-console
33433        console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class "' + getComponentName(Component$$1) + '"');
33434      }
33435
33436      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(Component$$1, _extends({}, props, {
33437        theme: themeProp,
33438        ref: ref
33439      }));
33440    });
33441  });
33442  hoistNonReactStatics(WithTheme, Component$$1);
33443  WithTheme.displayName = 'WithTheme(' + getComponentName(Component$$1) + ')';
33444  return WithTheme;
33445}; // 
33446
33447/* eslint-disable */
33448
33449
33450var __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS = {
33451  StyleSheet: StyleSheet
33452}; // 
33453
33454/* Warning if you've imported this file on React Native */
33455
33456if ( true && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
33457  // eslint-disable-next-line no-console
33458  console.warn("It looks like you've imported 'styled-components' on React Native.\n" + "Perhaps you're looking to import 'styled-components/native'?\n" + 'Read more about this at https://www.styled-components.com/docs/basics#react-native');
33459}
33460/* Warning if there are several instances of styled-components */
33461
33462
33463if ( true && typeof window !== 'undefined' && typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Node.js') === -1 && navigator.userAgent.indexOf('jsdom') === -1) {
33464  window['__styled-components-init__'] = window['__styled-components-init__'] || 0;
33465
33466  if (window['__styled-components-init__'] === 1) {
33467    // eslint-disable-next-line no-console
33468    console.warn("It looks like there are several instances of 'styled-components' initialized in this application. " + 'This may cause dynamic styles not rendering properly, errors happening during rehydration process ' + 'and makes your application bigger without a good reason.\n\n' + 'See https://s-c.sh/2BAXzed for more info.');
33469  }
33470
33471  window['__styled-components-init__'] += 1;
33472} //
33473
33474
33475/* harmony default export */ __webpack_exports__["default"] = (styled);
33476
33477/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ "./node_modules/process/browser.js")))
33478
33479/***/ }),
33480
vendor: 22,008 bytes, lines 33481-33723
33481/***/ "./node_modules/styled-system/dist/index.esm.js":
33482/*!******************************************************!*\
33483  !*** ./node_modules/styled-system/dist/index.esm.js ***!
33484  \******************************************************/
33485/*! exports provided: get, createParser, createStyleFunction, compose, system, margin, padding, space, color, layout, typography, flexbox, border, background, position, grid, shadow, boxShadow, textShadow, variant, buttonStyle, textStyle, colorStyle, borders, width, height, minWidth, minHeight, maxWidth, maxHeight, size, verticalAlign, display, overflow, overflowX, overflowY, opacity, fontSize, fontFamily, fontWeight, lineHeight, textAlign, fontStyle, letterSpacing, alignItems, alignContent, justifyItems, justifyContent, flexWrap, flexDirection, flex, flexGrow, flexShrink, flexBasis, justifySelf, alignSelf, order, gridGap, gridColumnGap, gridRowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea, borderWidth, borderStyle, borderColor, borderTop, borderRight, borderBottom, borderLeft, borderRadius, backgroundImage, backgroundSize, backgroundPosition, backgroundRepeat, zIndex, top, right, bottom, left, style */
33486/***/ (function(module, __webpack_exports__, __webpack_require__) {
33487
33488"use strict";
33489__webpack_require__.r(__webpack_exports__);
33490/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "width", function() { return width; });
33491/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "height", function() { return height; });
33492/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "minWidth", function() { return minWidth; });
33493/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "minHeight", function() { return minHeight; });
33494/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "maxWidth", function() { return maxWidth; });
33495/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "maxHeight", function() { return maxHeight; });
33496/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "size", function() { return size; });
33497/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "verticalAlign", function() { return verticalAlign; });
33498/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "display", function() { return display; });
33499/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "overflow", function() { return overflow; });
33500/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "overflowX", function() { return overflowX; });
33501/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "overflowY", function() { return overflowY; });
33502/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "opacity", function() { return opacity; });
33503/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fontSize", function() { return fontSize; });
33504/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fontFamily", function() { return fontFamily; });
33505/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fontWeight", function() { return fontWeight; });
33506/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lineHeight", function() { return lineHeight; });
33507/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "textAlign", function() { return textAlign; });
33508/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fontStyle", function() { return fontStyle; });
33509/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "letterSpacing", function() { return letterSpacing; });
33510/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "alignItems", function() { return alignItems; });
33511/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "alignContent", function() { return alignContent; });
33512/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "justifyItems", function() { return justifyItems; });
33513/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "justifyContent", function() { return justifyContent; });
33514/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexWrap", function() { return flexWrap; });
33515/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexDirection", function() { return flexDirection; });
33516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flex", function() { return flex; });
33517/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexGrow", function() { return flexGrow; });
33518/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexShrink", function() { return flexShrink; });
33519/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexBasis", function() { return flexBasis; });
33520/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "justifySelf", function() { return justifySelf; });
33521/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "alignSelf", function() { return alignSelf; });
33522/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "order", function() { return order; });
33523/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridGap", function() { return gridGap; });
33524/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridColumnGap", function() { return gridColumnGap; });
33525/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridRowGap", function() { return gridRowGap; });
33526/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridColumn", function() { return gridColumn; });
33527/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridRow", function() { return gridRow; });
33528/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridAutoFlow", function() { return gridAutoFlow; });
33529/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridAutoColumns", function() { return gridAutoColumns; });
33530/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridAutoRows", function() { return gridAutoRows; });
33531/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridTemplateColumns", function() { return gridTemplateColumns; });
33532/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridTemplateRows", function() { return gridTemplateRows; });
33533/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridTemplateAreas", function() { return gridTemplateAreas; });
33534/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridArea", function() { return gridArea; });
33535/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderWidth", function() { return borderWidth; });
33536/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderStyle", function() { return borderStyle; });
33537/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderColor", function() { return borderColor; });
33538/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderTop", function() { return borderTop; });
33539/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderRight", function() { return borderRight; });
33540/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderBottom", function() { return borderBottom; });
33541/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderLeft", function() { return borderLeft; });
33542/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderRadius", function() { return borderRadius; });
33543/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backgroundImage", function() { return backgroundImage; });
33544/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backgroundSize", function() { return backgroundSize; });
33545/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backgroundPosition", function() { return backgroundPosition; });
33546/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backgroundRepeat", function() { return backgroundRepeat; });
33547/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zIndex", function() { return zIndex; });
33548/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "top", function() { return top; });
33549/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "right", function() { return right; });
33550/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bottom", function() { return bottom; });
33551/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "left", function() { return left; });
33552/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "style", function() { return style; });
33553/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js");
33554/* harmony import */ var _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @styled-system/layout */ "./node_modules/@styled-system/layout/dist/index.esm.js");
33555/* harmony import */ var _styled_system_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @styled-system/color */ "./node_modules/@styled-system/color/dist/index.esm.js");
33556/* harmony import */ var _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @styled-system/typography */ "./node_modules/@styled-system/typography/dist/index.esm.js");
33557/* harmony import */ var _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @styled-system/flexbox */ "./node_modules/@styled-system/flexbox/dist/index.esm.js");
33558/* harmony import */ var _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @styled-system/grid */ "./node_modules/@styled-system/grid/dist/index.esm.js");
33559/* harmony import */ var _styled_system_border__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @styled-system/border */ "./node_modules/@styled-system/border/dist/index.esm.js");
33560/* harmony import */ var _styled_system_background__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @styled-system/background */ "./node_modules/@styled-system/background/dist/index.esm.js");
33561/* harmony import */ var _styled_system_position__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @styled-system/position */ "./node_modules/@styled-system/position/dist/index.esm.js");
33562/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "get", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"]; });
33563
33564/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createParser", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createParser"]; });
33565
33566/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStyleFunction", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createStyleFunction"]; });
33567
33568/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["compose"]; });
33569
33570/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "system", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"]; });
33571
33572/* harmony import */ var _styled_system_space__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @styled-system/space */ "./node_modules/@styled-system/space/dist/index.esm.js");
33573/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "margin", function() { return _styled_system_space__WEBPACK_IMPORTED_MODULE_9__["margin"]; });
33574
33575/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "padding", function() { return _styled_system_space__WEBPACK_IMPORTED_MODULE_9__["padding"]; });
33576
33577/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "space", function() { return _styled_system_space__WEBPACK_IMPORTED_MODULE_9__["space"]; });
33578
33579/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "color", function() { return _styled_system_color__WEBPACK_IMPORTED_MODULE_2__["color"]; });
33580
33581/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "layout", function() { return _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["layout"]; });
33582
33583/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "typography", function() { return _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["typography"]; });
33584
33585/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flexbox", function() { return _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["flexbox"]; });
33586
33587/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "border", function() { return _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["border"]; });
33588
33589/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "background", function() { return _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["background"]; });
33590
33591/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "position", function() { return _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["position"]; });
33592
33593/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "grid", function() { return _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["grid"]; });
33594
33595/* harmony import */ var _styled_system_shadow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @styled-system/shadow */ "./node_modules/@styled-system/shadow/dist/index.esm.js");
33596/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shadow", function() { return _styled_system_shadow__WEBPACK_IMPORTED_MODULE_10__["shadow"]; });
33597
33598/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "boxShadow", function() { return _styled_system_shadow__WEBPACK_IMPORTED_MODULE_10__["default"]; });
33599
33600/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "textShadow", function() { return _styled_system_shadow__WEBPACK_IMPORTED_MODULE_10__["default"]; });
33601
33602/* harmony import */ var _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @styled-system/variant */ "./node_modules/@styled-system/variant/dist/index.esm.js");
33603/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "variant", function() { return _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__["variant"]; });
33604
33605/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttonStyle", function() { return _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__["buttonStyle"]; });
33606
33607/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "textStyle", function() { return _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__["textStyle"]; });
33608
33609/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "colorStyle", function() { return _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__["colorStyle"]; });
33610
33611/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "borders", function() { return _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"]; });
33612
33613 // v4 api shims
33614
33615
33616
33617
33618
33619
33620
33621
33622
33623
33624
33625
33626
33627
33628
33629
33630
33631
33632
33633
33634
33635
33636var width = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].width,
33637    height = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].height,
33638    minWidth = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].minWidth,
33639    minHeight = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].minHeight,
33640    maxWidth = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].maxWidth,
33641    maxHeight = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].maxHeight,
33642    size = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].size,
33643    verticalAlign = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].verticalAlign,
33644    display = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].display,
33645    overflow = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].overflow,
33646    overflowX = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].overflowX,
33647    overflowY = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].overflowY;
33648var opacity = _styled_system_color__WEBPACK_IMPORTED_MODULE_2__["default"].opacity;
33649var fontSize = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].fontSize,
33650    fontFamily = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].fontFamily,
33651    fontWeight = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].fontWeight,
33652    lineHeight = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].lineHeight,
33653    textAlign = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].textAlign,
33654    fontStyle = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].fontStyle,
33655    letterSpacing = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].letterSpacing;
33656var alignItems = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].alignItems,
33657    alignContent = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].alignContent,
33658    justifyItems = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].justifyItems,
33659    justifyContent = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].justifyContent,
33660    flexWrap = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexWrap,
33661    flexDirection = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexDirection,
33662    flex = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flex,
33663    flexGrow = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexGrow,
33664    flexShrink = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexShrink,
33665    flexBasis = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexBasis,
33666    justifySelf = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].justifySelf,
33667    alignSelf = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].alignSelf,
33668    order = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].order;
33669var gridGap = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridGap,
33670    gridColumnGap = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridColumnGap,
33671    gridRowGap = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridRowGap,
33672    gridColumn = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridColumn,
33673    gridRow = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridRow,
33674    gridAutoFlow = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridAutoFlow,
33675    gridAutoColumns = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridAutoColumns,
33676    gridAutoRows = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridAutoRows,
33677    gridTemplateColumns = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridTemplateColumns,
33678    gridTemplateRows = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridTemplateRows,
33679    gridTemplateAreas = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridTemplateAreas,
33680    gridArea = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridArea;
33681var borderWidth = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderWidth,
33682    borderStyle = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderStyle,
33683    borderColor = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderColor,
33684    borderTop = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderTop,
33685    borderRight = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderRight,
33686    borderBottom = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderBottom,
33687    borderLeft = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderLeft,
33688    borderRadius = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderRadius;
33689var backgroundImage = _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["default"].backgroundImage,
33690    backgroundSize = _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["default"].backgroundSize,
33691    backgroundPosition = _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["default"].backgroundPosition,
33692    backgroundRepeat = _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["default"].backgroundRepeat;
33693var zIndex = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].zIndex,
33694    top = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].top,
33695    right = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].right,
33696    bottom = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].bottom,
33697    left = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].left;
33698
33699 // v4 style API shim
33700
33701var style = function style(_ref) {
33702  var prop = _ref.prop,
33703      cssProperty = _ref.cssProperty,
33704      alias = _ref.alias,
33705      key = _ref.key,
33706      transformValue = _ref.transformValue,
33707      scale = _ref.scale,
33708      properties = _ref.properties;
33709  var config = {};
33710  config[prop] = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createStyleFunction"])({
33711    properties: properties,
33712    property: cssProperty || prop,
33713    scale: key,
33714    defaultScale: scale,
33715    transform: transformValue
33716  });
33717  if (alias) config[alias] = config[prop];
33718  var parse = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createParser"])(config);
33719  return parse;
33720};
33721
33722/***/ }),
33723
vendor: 1,428 bytes, lines 33724-33779
33724/***/ "./node_modules/stylis-rule-sheet/index.js":
33725/*!*************************************************!*\
33726  !*** ./node_modules/stylis-rule-sheet/index.js ***!
33727  \*************************************************/
33728/*! no static exports found */
33729/***/ (function(module, exports, __webpack_require__) {
33730
33731(function (factory) {
33732   true ? module['exports'] = factory() : undefined;
33733})(function () {
33734  'use strict';
33735
33736  return function (insertRule) {
33737    var delimiter = '/*|*/';
33738    var needle = delimiter + '}';
33739
33740    function toSheet(block) {
33741      if (block) try {
33742        insertRule(block + '}');
33743      } catch (e) {}
33744    }
33745
33746    return function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {
33747      switch (context) {
33748        // property
33749        case 1:
33750          // @import
33751          if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(content + ';'), '';
33752          break;
33753        // selector
33754
33755        case 2:
33756          if (ns === 0) return content + delimiter;
33757          break;
33758        // at-rule
33759
33760        case 3:
33761          switch (ns) {
33762            // @font-face, @page
33763            case 102:
33764            case 112:
33765              return insertRule(selectors[0] + content), '';
33766
33767            default:
33768              return content + (at === 0 ? delimiter : '');
33769          }
33770
33771        case -2:
33772          content.split(needle).forEach(toSheet);
33773      }
33774    };
33775  };
33776});
33777
33778/***/ }),
33779
vendor: 24,065 bytes, lines 33780-34703
33780/***/ "./node_modules/stylis/stylis.min.js":
33781/*!*******************************************!*\
33782  !*** ./node_modules/stylis/stylis.min.js ***!
33783  \*******************************************/
33784/*! no static exports found */
33785/***/ (function(module, exports, __webpack_require__) {
33786
33787!function (e) {
33788   true ? module.exports = e(null) : undefined;
33789}(function e(a) {
33790  "use strict";
33791
33792  var r = /^\0+/g,
33793      c = /[\0\r\f]/g,
33794      s = /: */g,
33795      t = /zoo|gra/,
33796      i = /([,: ])(transform)/g,
33797      f = /,+\s*(?![^(]*[)])/g,
33798      n = / +\s*(?![^(]*[)])/g,
33799      l = / *[\0] */g,
33800      o = /,\r+?/g,
33801      h = /([\t\r\n ])*\f?&/g,
33802      u = /:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,
33803      d = /\W+/g,
33804      b = /@(k\w+)\s*(\S*)\s*/,
33805      p = /::(place)/g,
33806      k = /:(read-only)/g,
33807      g = /\s+(?=[{\];=:>])/g,
33808      A = /([[}=:>])\s+/g,
33809      C = /(\{[^{]+?);(?=\})/g,
33810      w = /\s{2,}/g,
33811      v = /([^\(])(:+) */g,
33812      m = /[svh]\w+-[tblr]{2}/,
33813      x = /\(\s*(.*)\s*\)/g,
33814      $ = /([\s\S]*?);/g,
33815      y = /-self|flex-/g,
33816      O = /[^]*?(:[rp][el]a[\w-]+)[^]*/,
33817      j = /stretch|:\s*\w+\-(?:conte|avail)/,
33818      z = /([^-])(image-set\()/,
33819      N = "-webkit-",
33820      S = "-moz-",
33821      F = "-ms-",
33822      W = 59,
33823      q = 125,
33824      B = 123,
33825      D = 40,
33826      E = 41,
33827      G = 91,
33828      H = 93,
33829      I = 10,
33830      J = 13,
33831      K = 9,
33832      L = 64,
33833      M = 32,
33834      P = 38,
33835      Q = 45,
33836      R = 95,
33837      T = 42,
33838      U = 44,
33839      V = 58,
33840      X = 39,
33841      Y = 34,
33842      Z = 47,
33843      _ = 62,
33844      ee = 43,
33845      ae = 126,
33846      re = 0,
33847      ce = 12,
33848      se = 11,
33849      te = 107,
33850      ie = 109,
33851      fe = 115,
33852      ne = 112,
33853      le = 111,
33854      oe = 105,
33855      he = 99,
33856      ue = 100,
33857      de = 112,
33858      be = 1,
33859      pe = 1,
33860      ke = 0,
33861      ge = 1,
33862      Ae = 1,
33863      Ce = 1,
33864      we = 0,
33865      ve = 0,
33866      me = 0,
33867      xe = [],
33868      $e = [],
33869      ye = 0,
33870      Oe = null,
33871      je = -2,
33872      ze = -1,
33873      Ne = 0,
33874      Se = 1,
33875      Fe = 2,
33876      We = 3,
33877      qe = 0,
33878      Be = 1,
33879      De = "",
33880      Ee = "",
33881      Ge = "";
33882
33883  function He(e, a, s, t, i) {
33884    for (var f, n, o = 0, h = 0, u = 0, d = 0, g = 0, A = 0, C = 0, w = 0, m = 0, $ = 0, y = 0, O = 0, j = 0, z = 0, R = 0, we = 0, $e = 0, Oe = 0, je = 0, ze = s.length, Je = ze - 1, Re = "", Te = "", Ue = "", Ve = "", Xe = "", Ye = ""; R < ze;) {
33885      if (C = s.charCodeAt(R), R === Je) if (h + d + u + o !== 0) {
33886        if (0 !== h) C = h === Z ? I : Z;
33887        d = u = o = 0, ze++, Je++;
33888      }
33889
33890      if (h + d + u + o === 0) {
33891        if (R === Je) {
33892          if (we > 0) Te = Te.replace(c, "");
33893
33894          if (Te.trim().length > 0) {
33895            switch (C) {
33896              case M:
33897              case K:
33898              case W:
33899              case J:
33900              case I:
33901                break;
33902
33903              default:
33904                Te += s.charAt(R);
33905            }
33906
33907            C = W;
33908          }
33909        }
33910
33911        if (1 === $e) switch (C) {
33912          case B:
33913          case q:
33914          case W:
33915          case Y:
33916          case X:
33917          case D:
33918          case E:
33919          case U:
33920            $e = 0;
33921
33922          case K:
33923          case J:
33924          case I:
33925          case M:
33926            break;
33927
33928          default:
33929            for ($e = 0, je = R, g = C, R--, C = W; je < ze;) switch (s.charCodeAt(je++)) {
33930              case I:
33931              case J:
33932              case W:
33933                ++R, C = g, je = ze;
33934                break;
33935
33936              case V:
33937                if (we > 0) ++R, C = g;
33938
33939              case B:
33940                je = ze;
33941            }
33942
33943        }
33944
33945        switch (C) {
33946          case B:
33947            for (g = (Te = Te.trim()).charCodeAt(0), y = 1, je = ++R; R < ze;) {
33948              switch (C = s.charCodeAt(R)) {
33949                case B:
33950                  y++;
33951                  break;
33952
33953                case q:
33954                  y--;
33955                  break;
33956
33957                case Z:
33958                  switch (A = s.charCodeAt(R + 1)) {
33959                    case T:
33960                    case Z:
33961                      R = Qe(A, R, Je, s);
33962                  }
33963
33964                  break;
33965
33966                case G:
33967                  C++;
33968
33969                case D:
33970                  C++;
33971
33972                case Y:
33973                case X:
33974                  for (; R++ < Je && s.charCodeAt(R) !== C;);
33975
33976              }
33977
33978              if (0 === y) break;
33979              R++;
33980            }
33981
33982            if (Ue = s.substring(je, R), g === re) g = (Te = Te.replace(r, "").trim()).charCodeAt(0);
33983
33984            switch (g) {
33985              case L:
33986                if (we > 0) Te = Te.replace(c, "");
33987
33988                switch (A = Te.charCodeAt(1)) {
33989                  case ue:
33990                  case ie:
33991                  case fe:
33992                  case Q:
33993                    f = a;
33994                    break;
33995
33996                  default:
33997                    f = xe;
33998                }
33999
34000                if (je = (Ue = He(a, f, Ue, A, i + 1)).length, me > 0 && 0 === je) je = Te.length;
34001                if (ye > 0) if (f = Ie(xe, Te, Oe), n = Pe(We, Ue, f, a, pe, be, je, A, i, t), Te = f.join(""), void 0 !== n) if (0 === (je = (Ue = n.trim()).length)) A = 0, Ue = "";
34002                if (je > 0) switch (A) {
34003                  case fe:
34004                    Te = Te.replace(x, Me);
34005
34006                  case ue:
34007                  case ie:
34008                  case Q:
34009                    Ue = Te + "{" + Ue + "}";
34010                    break;
34011
34012                  case te:
34013                    if (Ue = (Te = Te.replace(b, "$1 $2" + (Be > 0 ? De : ""))) + "{" + Ue + "}", 1 === Ae || 2 === Ae && Le("@" + Ue, 3)) Ue = "@" + N + Ue + "@" + Ue;else Ue = "@" + Ue;
34014                    break;
34015
34016                  default:
34017                    if (Ue = Te + Ue, t === de) Ve += Ue, Ue = "";
34018                } else Ue = "";
34019                break;
34020
34021              default:
34022                Ue = He(a, Ie(a, Te, Oe), Ue, t, i + 1);
34023            }
34024
34025            Xe += Ue, O = 0, $e = 0, z = 0, we = 0, Oe = 0, j = 0, Te = "", Ue = "", C = s.charCodeAt(++R);
34026            break;
34027
34028          case q:
34029          case W:
34030            if ((je = (Te = (we > 0 ? Te.replace(c, "") : Te).trim()).length) > 1) {
34031              if (0 === z) if ((g = Te.charCodeAt(0)) === Q || g > 96 && g < 123) je = (Te = Te.replace(" ", ":")).length;
34032              if (ye > 0) if (void 0 !== (n = Pe(Se, Te, a, e, pe, be, Ve.length, t, i, t))) if (0 === (je = (Te = n.trim()).length)) Te = "\0\0";
34033
34034              switch (g = Te.charCodeAt(0), A = Te.charCodeAt(1), g) {
34035                case re:
34036                  break;
34037
34038                case L:
34039                  if (A === oe || A === he) {
34040                    Ye += Te + s.charAt(R);
34041                    break;
34042                  }
34043
34044                default:
34045                  if (Te.charCodeAt(je - 1) === V) break;
34046                  Ve += Ke(Te, g, A, Te.charCodeAt(2));
34047              }
34048            }
34049
34050            O = 0, $e = 0, z = 0, we = 0, Oe = 0, Te = "", C = s.charCodeAt(++R);
34051        }
34052      }
34053
34054      switch (C) {
34055        case J:
34056        case I:
34057          if (h + d + u + o + ve === 0) switch ($) {
34058            case E:
34059            case X:
34060            case Y:
34061            case L:
34062            case ae:
34063            case _:
34064            case T:
34065            case ee:
34066            case Z:
34067            case Q:
34068            case V:
34069            case U:
34070            case W:
34071            case B:
34072            case q:
34073              break;
34074
34075            default:
34076              if (z > 0) $e = 1;
34077          }
34078          if (h === Z) h = 0;else if (ge + O === 0 && t !== te && Te.length > 0) we = 1, Te += "\0";
34079          if (ye * qe > 0) Pe(Ne, Te, a, e, pe, be, Ve.length, t, i, t);
34080          be = 1, pe++;
34081          break;
34082
34083        case W:
34084        case q:
34085          if (h + d + u + o === 0) {
34086            be++;
34087            break;
34088          }
34089
34090        default:
34091          switch (be++, Re = s.charAt(R), C) {
34092            case K:
34093            case M:
34094              if (d + o + h === 0) switch (w) {
34095                case U:
34096                case V:
34097                case K:
34098                case M:
34099                  Re = "";
34100                  break;
34101
34102                default:
34103                  if (C !== M) Re = " ";
34104              }
34105              break;
34106
34107            case re:
34108              Re = "\\0";
34109              break;
34110
34111            case ce:
34112              Re = "\\f";
34113              break;
34114
34115            case se:
34116              Re = "\\v";
34117              break;
34118
34119            case P:
34120              if (d + h + o === 0 && ge > 0) Oe = 1, we = 1, Re = "\f" + Re;
34121              break;
34122
34123            case 108:
34124              if (d + h + o + ke === 0 && z > 0) switch (R - z) {
34125                case 2:
34126                  if (w === ne && s.charCodeAt(R - 3) === V) ke = w;
34127
34128                case 8:
34129                  if (m === le) ke = m;
34130              }
34131              break;
34132
34133            case V:
34134              if (d + h + o === 0) z = R;
34135              break;
34136
34137            case U:
34138              if (h + u + d + o === 0) we = 1, Re += "\r";
34139              break;
34140
34141            case Y:
34142            case X:
34143              if (0 === h) d = d === C ? 0 : 0 === d ? C : d;
34144              break;
34145
34146            case G:
34147              if (d + h + u === 0) o++;
34148              break;
34149
34150            case H:
34151              if (d + h + u === 0) o--;
34152              break;
34153
34154            case E:
34155              if (d + h + o === 0) u--;
34156              break;
34157
34158            case D:
34159              if (d + h + o === 0) {
34160                if (0 === O) switch (2 * w + 3 * m) {
34161                  case 533:
34162                    break;
34163
34164                  default:
34165                    y = 0, O = 1;
34166                }
34167                u++;
34168              }
34169
34170              break;
34171
34172            case L:
34173              if (h + u + d + o + z + j === 0) j = 1;
34174              break;
34175
34176            case T:
34177            case Z:
34178              if (d + o + u > 0) break;
34179
34180              switch (h) {
34181                case 0:
34182                  switch (2 * C + 3 * s.charCodeAt(R + 1)) {
34183                    case 235:
34184                      h = Z;
34185                      break;
34186
34187                    case 220:
34188                      je = R, h = T;
34189                  }
34190
34191                  break;
34192
34193                case T:
34194                  if (C === Z && w === T && je + 2 !== R) {
34195                    if (33 === s.charCodeAt(je + 2)) Ve += s.substring(je, R + 1);
34196                    Re = "", h = 0;
34197                  }
34198
34199              }
34200
34201          }
34202
34203          if (0 === h) {
34204            if (ge + d + o + j === 0 && t !== te && C !== W) switch (C) {
34205              case U:
34206              case ae:
34207              case _:
34208              case ee:
34209              case E:
34210              case D:
34211                if (0 === O) {
34212                  switch (w) {
34213                    case K:
34214                    case M:
34215                    case I:
34216                    case J:
34217                      Re += "\0";
34218                      break;
34219
34220                    default:
34221                      Re = "\0" + Re + (C === U ? "" : "\0");
34222                  }
34223
34224                  we = 1;
34225                } else switch (C) {
34226                  case D:
34227                    if (z + 7 === R && 108 === w) z = 0;
34228                    O = ++y;
34229                    break;
34230
34231                  case E:
34232                    if (0 == (O = --y)) we = 1, Re += "\0";
34233                }
34234
34235                break;
34236
34237              case K:
34238              case M:
34239                switch (w) {
34240                  case re:
34241                  case B:
34242                  case q:
34243                  case W:
34244                  case U:
34245                  case ce:
34246                  case K:
34247                  case M:
34248                  case I:
34249                  case J:
34250                    break;
34251
34252                  default:
34253                    if (0 === O) we = 1, Re += "\0";
34254                }
34255
34256            }
34257            if (Te += Re, C !== M && C !== K) $ = C;
34258          }
34259
34260      }
34261
34262      m = w, w = C, R++;
34263    }
34264
34265    if (je = Ve.length, me > 0) if (0 === je && 0 === Xe.length && 0 === a[0].length == false) if (t !== ie || 1 === a.length && (ge > 0 ? Ee : Ge) === a[0]) je = a.join(",").length + 2;
34266
34267    if (je > 0) {
34268      if (f = 0 === ge && t !== te ? function (e) {
34269        for (var a, r, s = 0, t = e.length, i = Array(t); s < t; ++s) {
34270          for (var f = e[s].split(l), n = "", o = 0, h = 0, u = 0, d = 0, b = f.length; o < b; ++o) {
34271            if (0 === (h = (r = f[o]).length) && b > 1) continue;
34272            if (u = n.charCodeAt(n.length - 1), d = r.charCodeAt(0), a = "", 0 !== o) switch (u) {
34273              case T:
34274              case ae:
34275              case _:
34276              case ee:
34277              case M:
34278              case D:
34279                break;
34280
34281              default:
34282                a = " ";
34283            }
34284
34285            switch (d) {
34286              case P:
34287                r = a + Ee;
34288
34289              case ae:
34290              case _:
34291              case ee:
34292              case M:
34293              case E:
34294              case D:
34295                break;
34296
34297              case G:
34298                r = a + r + Ee;
34299                break;
34300
34301              case V:
34302                switch (2 * r.charCodeAt(1) + 3 * r.charCodeAt(2)) {
34303                  case 530:
34304                    if (Ce > 0) {
34305                      r = a + r.substring(8, h - 1);
34306                      break;
34307                    }
34308
34309                  default:
34310                    if (o < 1 || f[o - 1].length < 1) r = a + Ee + r;
34311                }
34312
34313                break;
34314
34315              case U:
34316                a = "";
34317
34318              default:
34319                if (h > 1 && r.indexOf(":") > 0) r = a + r.replace(v, "$1" + Ee + "$2");else r = a + r + Ee;
34320            }
34321
34322            n += r;
34323          }
34324
34325          i[s] = n.replace(c, "").trim();
34326        }
34327
34328        return i;
34329      }(a) : a, ye > 0) if (void 0 !== (n = Pe(Fe, Ve, f, e, pe, be, je, t, i, t)) && 0 === (Ve = n).length) return Ye + Ve + Xe;
34330
34331      if (Ve = f.join(",") + "{" + Ve + "}", Ae * ke != 0) {
34332        if (2 === Ae && !Le(Ve, 2)) ke = 0;
34333
34334        switch (ke) {
34335          case le:
34336            Ve = Ve.replace(k, ":" + S + "$1") + Ve;
34337            break;
34338
34339          case ne:
34340            Ve = Ve.replace(p, "::" + N + "input-$1") + Ve.replace(p, "::" + S + "$1") + Ve.replace(p, ":" + F + "input-$1") + Ve;
34341        }
34342
34343        ke = 0;
34344      }
34345    }
34346
34347    return Ye + Ve + Xe;
34348  }
34349
34350  function Ie(e, a, r) {
34351    var c = a.trim().split(o),
34352        s = c,
34353        t = c.length,
34354        i = e.length;
34355
34356    switch (i) {
34357      case 0:
34358      case 1:
34359        for (var f = 0, n = 0 === i ? "" : e[0] + " "; f < t; ++f) s[f] = Je(n, s[f], r, i).trim();
34360
34361        break;
34362
34363      default:
34364        f = 0;
34365        var l = 0;
34366
34367        for (s = []; f < t; ++f) for (var h = 0; h < i; ++h) s[l++] = Je(e[h] + " ", c[f], r, i).trim();
34368
34369    }
34370
34371    return s;
34372  }
34373
34374  function Je(e, a, r, c) {
34375    var s = a,
34376        t = s.charCodeAt(0);
34377    if (t < 33) t = (s = s.trim()).charCodeAt(0);
34378
34379    switch (t) {
34380      case P:
34381        switch (ge + c) {
34382          case 0:
34383          case 1:
34384            if (0 === e.trim().length) break;
34385
34386          default:
34387            return s.replace(h, "$1" + e.trim());
34388        }
34389
34390        break;
34391
34392      case V:
34393        switch (s.charCodeAt(1)) {
34394          case 103:
34395            if (Ce > 0 && ge > 0) return s.replace(u, "$1").replace(h, "$1" + Ge);
34396            break;
34397
34398          default:
34399            return e.trim() + s.replace(h, "$1" + e.trim());
34400        }
34401
34402      default:
34403        if (r * ge > 0 && s.indexOf("\f") > 0) return s.replace(h, (e.charCodeAt(0) === V ? "" : "$1") + e.trim());
34404    }
34405
34406    return e + s;
34407  }
34408
34409  function Ke(e, a, r, c) {
34410    var l,
34411        o = 0,
34412        h = e + ";",
34413        u = 2 * a + 3 * r + 4 * c;
34414    if (944 === u) return function (e) {
34415      var a = e.length,
34416          r = e.indexOf(":", 9) + 1,
34417          c = e.substring(0, r).trim(),
34418          s = e.substring(r, a - 1).trim();
34419
34420      switch (e.charCodeAt(9) * Be) {
34421        case 0:
34422          break;
34423
34424        case Q:
34425          if (110 !== e.charCodeAt(10)) break;
34426
34427        default:
34428          for (var t = s.split((s = "", f)), i = 0, r = 0, a = t.length; i < a; r = 0, ++i) {
34429            for (var l = t[i], o = l.split(n); l = o[r];) {
34430              var h = l.charCodeAt(0);
34431              if (1 === Be && (h > L && h < 90 || h > 96 && h < 123 || h === R || h === Q && l.charCodeAt(1) !== Q)) switch (isNaN(parseFloat(l)) + (-1 !== l.indexOf("("))) {
34432                case 1:
34433                  switch (l) {
34434                    case "infinite":
34435                    case "alternate":
34436                    case "backwards":
34437                    case "running":
34438                    case "normal":
34439                    case "forwards":
34440                    case "both":
34441                    case "none":
34442                    case "linear":
34443                    case "ease":
34444                    case "ease-in":
34445                    case "ease-out":
34446                    case "ease-in-out":
34447                    case "paused":
34448                    case "reverse":
34449                    case "alternate-reverse":
34450                    case "inherit":
34451                    case "initial":
34452                    case "unset":
34453                    case "step-start":
34454                    case "step-end":
34455                      break;
34456
34457                    default:
34458                      l += De;
34459                  }
34460
34461              }
34462              o[r++] = l;
34463            }
34464
34465            s += (0 === i ? "" : ",") + o.join(" ");
34466          }
34467
34468      }
34469
34470      if (s = c + s + ";", 1 === Ae || 2 === Ae && Le(s, 1)) return N + s + s;
34471      return s;
34472    }(h);else if (0 === Ae || 2 === Ae && !Le(h, 1)) return h;
34473
34474    switch (u) {
34475      case 1015:
34476        return 97 === h.charCodeAt(10) ? N + h + h : h;
34477
34478      case 951:
34479        return 116 === h.charCodeAt(3) ? N + h + h : h;
34480
34481      case 963:
34482        return 110 === h.charCodeAt(5) ? N + h + h : h;
34483
34484      case 1009:
34485        if (100 !== h.charCodeAt(4)) break;
34486
34487      case 969:
34488      case 942:
34489        return N + h + h;
34490
34491      case 978:
34492        return N + h + S + h + h;
34493
34494      case 1019:
34495      case 983:
34496        return N + h + S + h + F + h + h;
34497
34498      case 883:
34499        if (h.charCodeAt(8) === Q) return N + h + h;
34500        if (h.indexOf("image-set(", 11) > 0) return h.replace(z, "$1" + N + "$2") + h;
34501        return h;
34502
34503      case 932:
34504        if (h.charCodeAt(4) === Q) switch (h.charCodeAt(5)) {
34505          case 103:
34506            return N + "box-" + h.replace("-grow", "") + N + h + F + h.replace("grow", "positive") + h;
34507
34508          case 115:
34509            return N + h + F + h.replace("shrink", "negative") + h;
34510
34511          case 98:
34512            return N + h + F + h.replace("basis", "preferred-size") + h;
34513        }
34514        return N + h + F + h + h;
34515
34516      case 964:
34517        return N + h + F + "flex-" + h + h;
34518
34519      case 1023:
34520        if (99 !== h.charCodeAt(8)) break;
34521        return l = h.substring(h.indexOf(":", 15)).replace("flex-", "").replace("space-between", "justify"), N + "box-pack" + l + N + h + F + "flex-pack" + l + h;
34522
34523      case 1005:
34524        return t.test(h) ? h.replace(s, ":" + N) + h.replace(s, ":" + S) + h : h;
34525
34526      case 1e3:
34527        switch (o = (l = h.substring(13).trim()).indexOf("-") + 1, l.charCodeAt(0) + l.charCodeAt(o)) {
34528          case 226:
34529            l = h.replace(m, "tb");
34530            break;
34531
34532          case 232:
34533            l = h.replace(m, "tb-rl");
34534            break;
34535
34536          case 220:
34537            l = h.replace(m, "lr");
34538            break;
34539
34540          default:
34541            return h;
34542        }
34543
34544        return N + h + F + l + h;
34545
34546      case 1017:
34547        if (-1 === h.indexOf("sticky", 9)) return h;
34548
34549      case 975:
34550        switch (o = (h = e).length - 10, u = (l = (33 === h.charCodeAt(o) ? h.substring(0, o) : h).substring(e.indexOf(":", 7) + 1).trim()).charCodeAt(0) + (0 | l.charCodeAt(7))) {
34551          case 203:
34552            if (l.charCodeAt(8) < 111) break;
34553
34554          case 115:
34555            h = h.replace(l, N + l) + ";" + h;
34556            break;
34557
34558          case 207:
34559          case 102:
34560            h = h.replace(l, N + (u > 102 ? "inline-" : "") + "box") + ";" + h.replace(l, N + l) + ";" + h.replace(l, F + l + "box") + ";" + h;
34561        }
34562
34563        return h + ";";
34564
34565      case 938:
34566        if (h.charCodeAt(5) === Q) switch (h.charCodeAt(6)) {
34567          case 105:
34568            return l = h.replace("-items", ""), N + h + N + "box-" + l + F + "flex-" + l + h;
34569
34570          case 115:
34571            return N + h + F + "flex-item-" + h.replace(y, "") + h;
34572
34573          default:
34574            return N + h + F + "flex-line-pack" + h.replace("align-content", "").replace(y, "") + h;
34575        }
34576        break;
34577
34578      case 973:
34579      case 989:
34580        if (h.charCodeAt(3) !== Q || 122 === h.charCodeAt(4)) break;
34581
34582      case 931:
34583      case 953:
34584        if (true === j.test(e)) if (115 === (l = e.substring(e.indexOf(":") + 1)).charCodeAt(0)) return Ke(e.replace("stretch", "fill-available"), a, r, c).replace(":fill-available", ":stretch");else return h.replace(l, N + l) + h.replace(l, S + l.replace("fill-", "")) + h;
34585        break;
34586
34587      case 962:
34588        if (h = N + h + (102 === h.charCodeAt(5) ? F + h : "") + h, r + c === 211 && 105 === h.charCodeAt(13) && h.indexOf("transform", 10) > 0) return h.substring(0, h.indexOf(";", 27) + 1).replace(i, "$1" + N + "$2") + h;
34589    }
34590
34591    return h;
34592  }
34593
34594  function Le(e, a) {
34595    var r = e.indexOf(1 === a ? ":" : "{"),
34596        c = e.substring(0, 3 !== a ? r : 10),
34597        s = e.substring(r + 1, e.length - 1);
34598    return Oe(2 !== a ? c : c.replace(O, "$1"), s, a);
34599  }
34600
34601  function Me(e, a) {
34602    var r = Ke(a, a.charCodeAt(0), a.charCodeAt(1), a.charCodeAt(2));
34603    return r !== a + ";" ? r.replace($, " or ($1)").substring(4) : "(" + a + ")";
34604  }
34605
34606  function Pe(e, a, r, c, s, t, i, f, n, l) {
34607    for (var o, h = 0, u = a; h < ye; ++h) switch (o = $e[h].call(Te, e, u, r, c, s, t, i, f, n, l)) {
34608      case void 0:
34609      case false:
34610      case true:
34611      case null:
34612        break;
34613
34614      default:
34615        u = o;
34616    }
34617
34618    if (u !== a) return u;
34619  }
34620
34621  function Qe(e, a, r, c) {
34622    for (var s = a + 1; s < r; ++s) switch (c.charCodeAt(s)) {
34623      case Z:
34624        if (e === T) if (c.charCodeAt(s - 1) === T && a + 2 !== s) return s + 1;
34625        break;
34626
34627      case I:
34628        if (e === Z) return s + 1;
34629    }
34630
34631    return s;
34632  }
34633
34634  function Re(e) {
34635    for (var a in e) {
34636      var r = e[a];
34637
34638      switch (a) {
34639        case "keyframe":
34640          Be = 0 | r;
34641          break;
34642
34643        case "global":
34644          Ce = 0 | r;
34645          break;
34646
34647        case "cascade":
34648          ge = 0 | r;
34649          break;
34650
34651        case "compress":
34652          we = 0 | r;
34653          break;
34654
34655        case "semicolon":
34656          ve = 0 | r;
34657          break;
34658
34659        case "preserve":
34660          me = 0 | r;
34661          break;
34662
34663        case "prefix":
34664          if (Oe = null, !r) Ae = 0;else if ("function" != typeof r) Ae = 1;else Ae = 2, Oe = r;
34665      }
34666    }
34667
34668    return Re;
34669  }
34670
34671  function Te(a, r) {
34672    if (void 0 !== this && this.constructor === Te) return e(a);
34673    var s = a,
34674        t = s.charCodeAt(0);
34675    if (t < 33) t = (s = s.trim()).charCodeAt(0);
34676    if (Be > 0) De = s.replace(d, t === G ? "" : "-");
34677    if (t = 1, 1 === ge) Ge = s;else Ee = s;
34678    var i,
34679        f = [Ge];
34680    if (ye > 0) if (void 0 !== (i = Pe(ze, r, f, f, pe, be, 0, 0, 0, 0)) && "string" == typeof i) r = i;
34681    var n = He(xe, f, r, 0, 0);
34682    if (ye > 0) if (void 0 !== (i = Pe(je, n, f, f, pe, be, n.length, 0, 0, 0)) && "string" != typeof (n = i)) t = 0;
34683    return De = "", Ge = "", Ee = "", ke = 0, pe = 1, be = 1, we * t == 0 ? n : n.replace(c, "").replace(g, "").replace(A, "$1").replace(C, "$1").replace(w, " ");
34684  }
34685
34686  if (Te.use = function e(a) {
34687    switch (a) {
34688      case void 0:
34689      case null:
34690        ye = $e.length = 0;
34691        break;
34692
34693      default:
34694        if ("function" == typeof a) $e[ye++] = a;else if ("object" == typeof a) for (var r = 0, c = a.length; r < c; ++r) e(a[r]);else qe = 0 | !!a;
34695    }
34696
34697    return e;
34698  }, Te.set = Re, void 0 !== a) Re(a);
34699  return Te;
34700});
34701
34702/***/ }),
34703
vendor: 795 bytes, lines 34704-34731
34704/***/ "./node_modules/tiny-invariant/dist/tiny-invariant.esm.js":
34705/*!****************************************************************!*\
34706  !*** ./node_modules/tiny-invariant/dist/tiny-invariant.esm.js ***!
34707  \****************************************************************/
34708/*! exports provided: default */
34709/***/ (function(module, __webpack_exports__, __webpack_require__) {
34710
34711"use strict";
34712__webpack_require__.r(__webpack_exports__);
34713var isProduction = "development" === 'production';
34714var prefix = 'Invariant failed';
34715
34716function invariant(condition, message) {
34717  if (condition) {
34718    return;
34719  }
34720
34721  if (isProduction) {
34722    throw new Error(prefix);
34723  }
34724
34725  throw new Error(prefix + ": " + (message || ''));
34726}
34727
34728/* harmony default export */ __webpack_exports__["default"] = (invariant);
34729
34730/***/ }),
34731
vendor: 835 bytes, lines 34732-34764
34732/***/ "./node_modules/tiny-warning/dist/tiny-warning.esm.js":
34733/*!************************************************************!*\
34734  !*** ./node_modules/tiny-warning/dist/tiny-warning.esm.js ***!
34735  \************************************************************/
34736/*! exports provided: default */
34737/***/ (function(module, __webpack_exports__, __webpack_require__) {
34738
34739"use strict";
34740__webpack_require__.r(__webpack_exports__);
34741var isProduction = "development" === 'production';
34742
34743function warning(condition, message) {
34744  if (!isProduction) {
34745    if (condition) {
34746      return;
34747    }
34748
34749    var text = "Warning: " + message;
34750
34751    if (typeof console !== 'undefined') {
34752      console.warn(text);
34753    }
34754
34755    try {
34756      throw Error(text);
34757    } catch (x) {}
34758  }
34759}
34760
34761/* harmony default export */ __webpack_exports__["default"] = (warning);
34762
34763/***/ }),
34764
vendor: 1,280 bytes, lines 34765-34805
34765/***/ "./node_modules/value-equal/esm/value-equal.js":
34766/*!*****************************************************!*\
34767  !*** ./node_modules/value-equal/esm/value-equal.js ***!
34768  \*****************************************************/
34769/*! exports provided: default */
34770/***/ (function(module, __webpack_exports__, __webpack_require__) {
34771
34772"use strict";
34773__webpack_require__.r(__webpack_exports__);
34774function valueOf(obj) {
34775  return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);
34776}
34777
34778function valueEqual(a, b) {
34779  // Test for strict equality first.
34780  if (a === b) return true; // Otherwise, if either of them == null they are not equal.
34781
34782  if (a == null || b == null) return false;
34783
34784  if (Array.isArray(a)) {
34785    return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {
34786      return valueEqual(item, b[index]);
34787    });
34788  }
34789
34790  if (typeof a === 'object' || typeof b === 'object') {
34791    var aValue = valueOf(a);
34792    var bValue = valueOf(b);
34793    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);
34794    return Object.keys(Object.assign({}, a, b)).every(function (key) {
34795      return valueEqual(a[key], b[key]);
34796    });
34797  }
34798
34799  return false;
34800}
34801
34802/* harmony default export */ __webpack_exports__["default"] = (valueEqual);
34803
34804/***/ }),
34805
vendor: 727 bytes, lines 34806-34833
34806/***/ "./node_modules/webpack/buildin/global.js":
34807/*!***********************************!*\
34808  !*** (webpack)/buildin/global.js ***!
34809  \***********************************/
34810/*! no static exports found */
34811/***/ (function(module, exports) {
34812
34813var g; // This works in non-strict mode
34814
34815g = function () {
34816  return this;
34817}();
34818
34819try {
34820  // This works if eval is allowed (see CSP)
34821  g = g || new Function("return this")();
34822} catch (e) {
34823  // This works if the window reference is available
34824  if (typeof window === "object") g = window;
34825} // g can still be undefined, but nothing to do about it...
34826// We return undefined, instead of nothing here, so it's
34827// easier to handle this case. if(!global) { ...}
34828
34829
34830module.exports = g;
34831
34832/***/ }),
34833
vendor: 798 bytes, lines 34834-34867
34834/***/ "./node_modules/webpack/buildin/module.js":
34835/*!***********************************!*\
34836  !*** (webpack)/buildin/module.js ***!
34837  \***********************************/
34838/*! no static exports found */
34839/***/ (function(module, exports) {
34840
34841module.exports = function (module) {
34842  if (!module.webpackPolyfill) {
34843    module.deprecate = function () {};
34844
34845    module.paths = []; // module.parent = undefined by default
34846
34847    if (!module.children) module.children = [];
34848    Object.defineProperty(module, "loaded", {
34849      enumerable: true,
34850      get: function () {
34851        return module.l;
34852      }
34853    });
34854    Object.defineProperty(module, "id", {
34855      enumerable: true,
34856      get: function () {
34857        return module.i;
34858      }
34859    });
34860    module.webpackPolyfill = 1;
34861  }
34862
34863  return module;
34864};
34865
34866/***/ }),
34867
vendor: 31,800 bytes, lines 34868-36377
34868/***/ "./node_modules/wonka/dist/wonka.es.js":
34869/*!*********************************************!*\
34870  !*** ./node_modules/wonka/dist/wonka.es.js ***!
34871  \*********************************************/
34872/*! exports provided: Types, buffer, combine, concat, concatAll, concatMap, debounce, delay, empty, filter, flatten, forEach, fromArray, fromCallbag, fromDomEvent, fromList, fromListener, fromObservable, fromPromise, fromValue, interval, make, makeSubject, map, merge, mergeAll, mergeMap, never, onEnd, onPush, onStart, pipe, publish, sample, scan, share, skip, skipUntil, skipWhile, subscribe, switchAll, switchMap, take, takeLast, takeUntil, takeWhile, tap, throttle, toArray, toCallbag, toObservable, toPromise */
34873/***/ (function(module, __webpack_exports__, __webpack_require__) {
34874
34875"use strict";
34876__webpack_require__.r(__webpack_exports__);
34877/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Types", function() { return Types; });
34878/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return buffer$2; });
34879/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combine", function() { return combine$2; });
34880/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat$2; });
34881/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return concatAll$2; });
34882/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return concatMap$2; });
34883/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce$2; });
34884/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay$2; });
34885/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty$2; });
34886/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter$2; });
34887/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return flatten$2; });
34888/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return forEach$2; });
34889/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromArray", function() { return fromArray$2; });
34890/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromCallbag", function() { return fromCallbag$2; });
34891/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromDomEvent", function() { return fromDomEvent$2; });
34892/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromList", function() { return fromList$2; });
34893/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromListener", function() { return fromListener$2; });
34894/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromObservable", function() { return fromObservable$2; });
34895/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromPromise", function() { return fromPromise$2; });
34896/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromValue", function() { return fromValue$2; });
34897/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return interval$2; });
34898/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "make", function() { return make$2; });
34899/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeSubject", function() { return makeSubject$2; });
34900/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map$2; });
34901/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge$2; });
34902/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return mergeAll$2; });
34903/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return mergeMap$2; });
34904/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return never$2; });
34905/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onEnd", function() { return onEnd$2; });
34906/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onPush", function() { return onPush$2; });
34907/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onStart", function() { return onStart$2; });
34908/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return pipe; });
34909/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish$2; });
34910/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample$2; });
34911/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return scan$2; });
34912/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share$2; });
34913/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return skip$2; });
34914/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return skipUntil$2; });
34915/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return skipWhile$2; });
34916/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribe", function() { return subscribe$2; });
34917/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll$2; });
34918/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return switchMap$2; });
34919/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return take$2; });
34920/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return takeLast$2; });
34921/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return takeUntil$2; });
34922/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return takeWhile$2; });
34923/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap$2; });
34924/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle$2; });
34925/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray$2; });
34926/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toCallbag", function() { return toCallbag$2; });
34927/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toObservable", function() { return toObservable$2; });
34928/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toPromise", function() { return toPromise$2; });
34929function h(a, b) {
34930  b.tag = a;
34931  return b;
34932}
34933
34934function l(a, b, c) {
34935  for (var d = Array(c), e = 0; e < c;) {
34936    d[e] = a[b], e = e + 1 | 0, b = b + 1 | 0;
34937  }
34938
34939  return d;
34940}
34941
34942function m(a, b) {
34943  for (;;) {
34944    var c = b;
34945    var d = 0 === (b = a.length) ? 1 : b;
34946
34947    if (0 === (b = d - c.length | 0)) {
34948      return a.apply(null, c);
34949    }
34950
34951    if (0 > b) {
34952      b = l(c, d, 0 | -b), a = a.apply(null, l(c, 0, d));
34953    } else {
34954      return function (a, c) {
34955        return function (d) {
34956          return m(a, c.concat([d]));
34957        };
34958      }(a, c);
34959    }
34960  }
34961}
34962
34963function r(a, b) {
34964  var c = a.length;
34965  return 1 === c ? a(b) : function q(a, b, c) {
34966    switch (c) {
34967      case 1:
34968        return a(b);
34969
34970      case 2:
34971        return function (c) {
34972          return a(b, c);
34973        };
34974
34975      case 3:
34976        return function (c, e) {
34977          return a(b, c, e);
34978        };
34979
34980      case 4:
34981        return function (c, e, f) {
34982          return a(b, c, e, f);
34983        };
34984
34985      case 5:
34986        return function (c, e, f, g) {
34987          return a(b, c, e, f, g);
34988        };
34989
34990      case 6:
34991        return function (c, e, f, g, k) {
34992          return a(b, c, e, f, g, k);
34993        };
34994
34995      case 7:
34996        return function (c, e, f, g, k, n) {
34997          return a(b, c, e, f, g, k, n);
34998        };
34999
35000      default:
35001        return m(a, [b]);
35002    }
35003  }(a, b, c);
35004}
35005
35006function u(a, b, c, d) {
35007  var e = a.length;
35008  return 3 === e ? a(b, c, d) : function t(a, b, c, d, e) {
35009    switch (e) {
35010      case 1:
35011        return m(a(b), [c, d]);
35012
35013      case 2:
35014        return m(a(b, c), [d]);
35015
35016      case 3:
35017        return a(b, c, d);
35018
35019      case 4:
35020        return function (e) {
35021          return a(b, c, d, e);
35022        };
35023
35024      case 5:
35025        return function (e, g) {
35026          return a(b, c, d, e, g);
35027        };
35028
35029      case 6:
35030        return function (e, g, k) {
35031          return a(b, c, d, e, g, k);
35032        };
35033
35034      case 7:
35035        return function (e, g, k, n) {
35036          return a(b, c, d, e, g, k, n);
35037        };
35038
35039      default:
35040        return m(a, [b, c, d]);
35041    }
35042  }(a, b, c, d, e);
35043}
35044
35045var v = [];
35046
35047function w(a) {
35048  if (void 0 === a) {
35049    return (a = [v, 0]).tag = 256, a;
35050  }
35051
35052  null !== a && a[0] === v && ((a = [v, a[1] + 1 | 0]).tag = 256);
35053  return a;
35054}
35055
35056function x(a) {
35057  if (null !== a && a[0] === v) {
35058    if (0 !== (a = a[1])) {
35059      return [v, a - 1 | 0];
35060    }
35061  } else {
35062    return a;
35063  }
35064}
35065
35066function y() {
35067  return 0;
35068}
35069
35070function z(a, b) {
35071  let c = y;
35072  return r(a, function (a) {
35073    "number" != typeof a && (a.tag || (c = a[0]));
35074    return b(a, c);
35075  });
35076}
35077
35078function A(a, b) {
35079  let c = !1,
35080      d = !1,
35081      e = !1;
35082  return a(h(0, [function (f) {
35083    if (f) {
35084      c = !0;
35085    } else if (d) {
35086      e = !0;
35087    } else {
35088      for (d = e = !0; e && !c;) {
35089        void 0 !== (f = b()) ? (e = !1, a(h(1, [x(f)]))) : (c = !0, a(0));
35090      }
35091
35092      d = !1;
35093    }
35094
35095    return 0;
35096  }]));
35097}
35098
35099var B = "function" == typeof Symbol ? Symbol.observable || (Symbol.observable = Symbol("observable")) : "@@observable";
35100
35101function C() {
35102  return 0;
35103}
35104
35105function D(a) {
35106  return function (b) {
35107    return function (c) {
35108      function d() {
35109        return e.shift();
35110      }
35111
35112      var e = [];
35113      return z(b, function (b, g) {
35114        if ("number" == typeof b) {
35115          return A(c, d);
35116        }
35117
35118        b.tag && (e.length >= a && 0 < a && e.shift(), e.push(b[0]));
35119        return g(0);
35120      });
35121    };
35122  };
35123}
35124
35125function E(a, b) {
35126  return function (c) {
35127    function d(a) {
35128      return c(h(1, [a]));
35129    }
35130
35131    c(h(0, [function (c) {
35132      return c ? r(b, d) : 0;
35133    }]));
35134    return r(a, d);
35135  };
35136}
35137
35138function F(a, b, c) {
35139  a.addEventListener(b, c);
35140}
35141
35142function G(a, b, c) {
35143  a.removeEventListener(b, c);
35144}
35145
35146function H(a) {
35147  return function (b) {
35148    let c = y,
35149        d = !1;
35150    r(b, function (e) {
35151      if ("number" == typeof e) {
35152        return d = !0, 0;
35153      }
35154
35155      if (e.tag) {
35156        if (d) {
35157          return 0;
35158        }
35159
35160        a(e[0]);
35161        return c(0);
35162      }
35163
35164      c = e = e[0];
35165      return e(0);
35166    });
35167    return [function () {
35168      if (d) {
35169        return 0;
35170      }
35171
35172      d = !0;
35173      return c(1);
35174    }];
35175  };
35176}
35177
35178function I() {
35179  return 0;
35180}
35181
35182function J(a) {
35183  return function (b) {
35184    var c = a.length;
35185    let d = 0;
35186    return A(b, function () {
35187      if (d < c) {
35188        var e = a[d];
35189        d = d + 1 | 0;
35190        return w(e);
35191      }
35192    });
35193  };
35194}
35195
35196function K(a) {
35197  return a(0);
35198}
35199
35200function L(a) {
35201  return a(0);
35202}
35203
35204function M(a) {
35205  return function (b) {
35206    return function (c) {
35207      return r(b, function (d) {
35208        "number" != typeof d && d.tag && a(d[0]);
35209        return c(d);
35210      });
35211    };
35212  };
35213}
35214
35215function N() {
35216  return 0;
35217}
35218
35219function O() {
35220  return 0;
35221}
35222
35223function P(a) {
35224  return a(1);
35225}
35226
35227function Q(a) {
35228  return a(1);
35229}
35230
35231function R(a) {
35232  return a(0);
35233}
35234
35235function S(a) {
35236  return function (b) {
35237    return function (c) {
35238      let e = y,
35239          f = [],
35240          g = !1;
35241      r(b, function (b) {
35242        if ("number" == typeof b) {
35243          if (g) {
35244            return 0;
35245          }
35246
35247          g = !0;
35248          return 0 === f.length ? c(0) : 0;
35249        }
35250
35251        if (b.tag) {
35252          if (g) {
35253            return 0;
35254          }
35255
35256          !function d(a) {
35257            function d(c) {
35258              return c !== e;
35259            }
35260
35261            let e = y;
35262            return r(a, function (a) {
35263              if ("number" == typeof a) {
35264                return f = f.filter(d), g && 0 === f.length ? c(0) : 0;
35265              }
35266
35267              if (a.tag) {
35268                return 0 !== f.length ? (c(h(1, [a[0]])), e(0)) : 0;
35269              }
35270
35271              e = a = a[0];
35272              f = f.concat(a);
35273              return a(0);
35274            });
35275          }(a(b[0]));
35276          return e(0);
35277        }
35278
35279        e = b = b[0];
35280        return b(0);
35281      });
35282      return c(h(0, [function (a) {
35283        a ? (f.forEach(P), g || (g = !0, e(1), f.forEach(Q), f = [])) : g || f.forEach(R);
35284        return 0;
35285      }]));
35286    };
35287  };
35288}
35289
35290function T(a) {
35291  return a;
35292}
35293
35294function U(a) {
35295  return a;
35296}
35297
35298function V(a) {
35299  return S(U)(a);
35300}
35301
35302function W(a) {
35303  return function (b) {
35304    return function (c) {
35305      function d(b) {
35306        if ("number" == typeof b) {
35307          return k = !1, g = y, void 0 !== (b = e.shift()) ? r(a(x(b)), d) : p ? c(0) : 0;
35308        }
35309
35310        if (b.tag) {
35311          if (n) {
35312            return 0;
35313          }
35314
35315          c(h(1, [b[0]]));
35316          return g(0);
35317        }
35318
35319        k = !0;
35320        g = b = b[0];
35321        return b(0);
35322      }
35323
35324      let e = [],
35325          f = y,
35326          g = y,
35327          k = !1,
35328          n = !1,
35329          p = !1;
35330      r(b, function (b) {
35331        if ("number" == typeof b) {
35332          if (p) {
35333            return 0;
35334          }
35335
35336          p = !0;
35337          return k || 0 !== e.length ? 0 : c(0);
35338        }
35339
35340        if (b.tag) {
35341          if (p) {
35342            return 0;
35343          }
35344
35345          b = b[0];
35346          k ? e.push(b) : r(a(b), d);
35347          return f(0);
35348        }
35349
35350        f = b = b[0];
35351        return b(0);
35352      });
35353      return c(h(0, [function (a) {
35354        return a ? (g(1), p || (n = p = !0, f(1), g = y), 0) : p ? 0 : g(0);
35355      }]));
35356    };
35357  };
35358}
35359
35360function X(a) {
35361  return a;
35362}
35363
35364function Y(a) {
35365  return a;
35366}
35367
35368function Z(a) {
35369  return function (b) {
35370    return function (c) {
35371      function d(a) {
35372        if ("number" == typeof a) {
35373          return g = !1, f = y, n ? c(0) : 0;
35374        }
35375
35376        if (a.tag) {
35377          if (k) {
35378            return 0;
35379          }
35380
35381          c(h(1, [a[0]]));
35382          return f(0);
35383        }
35384
35385        g = !0;
35386        f = a = a[0];
35387        return a(0);
35388      }
35389
35390      let e = y,
35391          f = y,
35392          g = !1,
35393          k = !1,
35394          n = !1;
35395      r(b, function (b) {
35396        if ("number" == typeof b) {
35397          if (n) {
35398            return 0;
35399          }
35400
35401          n = !0;
35402          return g ? 0 : c(0);
35403        }
35404
35405        if (b.tag) {
35406          if (n) {
35407            return 0;
35408          }
35409
35410          g && (f(1), f = y);
35411          r(a(b[0]), d);
35412          return e(0);
35413        }
35414
35415        e = b = b[0];
35416        return b(0);
35417      });
35418      return c(h(0, [function (a) {
35419        return a ? (f(1), n || (k = n = !0, e(1), f = y), 0) : f(0);
35420      }]));
35421    };
35422  };
35423}
35424
35425function aa(a) {
35426  return a;
35427}
35428
35429var Types = 0;
35430
35431var buffer$2 = function (a) {
35432  return function (b) {
35433    return function (c) {
35434      function d(a) {
35435        if ("number" == typeof a) {
35436          if (k) {
35437            return 0;
35438          }
35439
35440          k = !0;
35441          f(1);
35442          c(h(1, [e]));
35443          return c(0);
35444        }
35445
35446        if (a.tag) {
35447          if (k) {
35448            return 0;
35449          }
35450
35451          c(h(1, [e]));
35452          e = [];
35453          return g(0);
35454        }
35455
35456        return (g = a[0])(0);
35457      }
35458
35459      let e = [],
35460          f = y,
35461          g = y,
35462          k = !1;
35463      r(b, function (b) {
35464        if ("number" == typeof b) {
35465          if (k) {
35466            return 0;
35467          }
35468
35469          k = !0;
35470          g(1);
35471          c(h(1, [e]));
35472          return c(0);
35473        }
35474
35475        if (b.tag) {
35476          if (k) {
35477            return 0;
35478          }
35479
35480          e.push(b[0]);
35481          return f(0);
35482        }
35483
35484        f = b[0];
35485        return r(a, d);
35486      });
35487      return c(h(0, [function (a) {
35488        return k ? 0 : a ? (k = !0, f(1), g(1)) : f(0);
35489      }]));
35490    };
35491  };
35492};
35493
35494var combine$2 = function (a) {
35495  return function (b) {
35496    return function (c) {
35497      let d = y,
35498          e = y,
35499          f = void 0,
35500          g = void 0,
35501          k = !1,
35502          n = 0,
35503          p = !1;
35504      r(a, function (a) {
35505        var b = g;
35506
35507        if ("number" == typeof a) {
35508          if (1 > n) {
35509            return n = n + 1 | 0, 0;
35510          }
35511
35512          if (p) {
35513            return 0;
35514          }
35515
35516          p = !0;
35517          return c(0);
35518        }
35519
35520        if (a.tag) {
35521          a = a[0];
35522
35523          if (void 0 !== b) {
35524            if (p) {
35525              return 0;
35526            }
35527
35528            f = w(a);
35529            k = !1;
35530            return c(h(1, [[a, x(b)]]));
35531          }
35532
35533          f = w(a);
35534          k = !1;
35535          return 0;
35536        }
35537
35538        d = a[0];
35539        return 0;
35540      });
35541      r(b, function (a) {
35542        var b = f;
35543
35544        if ("number" == typeof a) {
35545          if (1 > n) {
35546            return n = n + 1 | 0, 0;
35547          }
35548
35549          if (p) {
35550            return 0;
35551          }
35552
35553          p = !0;
35554          return c(0);
35555        }
35556
35557        if (a.tag) {
35558          a = a[0];
35559
35560          if (void 0 !== b) {
35561            if (p) {
35562              return 0;
35563            }
35564
35565            g = w(a);
35566            k = !1;
35567            return c(h(1, [[x(b), a]]));
35568          }
35569
35570          g = w(a);
35571          k = !1;
35572          return 0;
35573        }
35574
35575        e = a[0];
35576        return 0;
35577      });
35578      return c(h(0, [function (a) {
35579        if (p) {
35580          return 0;
35581        }
35582
35583        if (a) {
35584          return p = !0, d(1), e(1);
35585        }
35586
35587        if (k) {
35588          return 0;
35589        }
35590
35591        k = !0;
35592        d(a);
35593        return e(a);
35594      }]));
35595    };
35596  };
35597};
35598
35599var concat$2 = function (a) {
35600  return W(Y)(J(a));
35601};
35602
35603var concatAll$2 = function (a) {
35604  return W(X)(a);
35605};
35606
35607var concatMap$2 = W;
35608
35609var debounce$2 = function (a) {
35610  return function (b) {
35611    return function (c) {
35612      function d() {
35613        var a = f;
35614        void 0 !== a && (f = void 0, clearTimeout(x(a)));
35615        return 0;
35616      }
35617
35618      let e = !1,
35619          f = void 0;
35620      return r(b, function (b) {
35621        if ("number" == typeof b) {
35622          return e = !0, void 0 !== f ? 0 : c(0);
35623        }
35624
35625        if (b.tag) {
35626          return d(), f = w(setTimeout(function g() {
35627            f = void 0;
35628            c(b);
35629            return e ? c(0) : 0;
35630          }, a(b[0]))), 0;
35631        }
35632
35633        var n = b[0];
35634        return c(h(0, [function (a) {
35635          return a ? (d(), n(1)) : n(a);
35636        }]));
35637      });
35638    };
35639  };
35640};
35641
35642var delay$2 = function (a) {
35643  return function (b) {
35644    return function (c) {
35645      let d = y,
35646          e = 0,
35647          f = !1;
35648      r(b, function (b) {
35649        if ("number" != typeof b && !b.tag) {
35650          return d = b[0], 0;
35651        }
35652
35653        f || (e = e + 1 | 0, setTimeout(function k() {
35654          f && 0 === e ? c(0) : e = e - 1 | 0;
35655          return c(b);
35656        }, a));
35657        return 0;
35658      });
35659      return c(h(0, [function (a) {
35660        return a ? (f = !0, 0 === e ? c(0) : 0) : f ? 0 : d(a);
35661      }]));
35662    };
35663  };
35664};
35665
35666var empty$2 = function (a) {
35667  a(h(0, [y]));
35668  return a(0);
35669};
35670
35671var filter$2 = function (a) {
35672  return function (b) {
35673    return function (c) {
35674      return z(b, function (b, e) {
35675        return "number" == typeof b || !b.tag || a(b[0]) ? c(b) : e(0);
35676      });
35677    };
35678  };
35679};
35680
35681var flatten$2 = V;
35682
35683var forEach$2 = function (a) {
35684  return function (b) {
35685    H(a)(b);
35686    return 0;
35687  };
35688};
35689
35690var fromArray$2 = J;
35691
35692var fromCallbag$2 = function (a) {
35693  return function (b) {
35694    return a(0, function (a, d) {
35695      switch (a) {
35696        case 0:
35697          return b(h(0, [function c(a) {
35698            return a ? d(2) : d(1);
35699          }]));
35700
35701        case 1:
35702          return b(h(1, [d]));
35703
35704        case 2:
35705          return b(0);
35706      }
35707    });
35708  };
35709};
35710
35711var fromDomEvent$2 = function (a, b) {
35712  return function (c) {
35713    return E(function (c) {
35714      return u(F, a, b, c);
35715    }, function (c) {
35716      return u(G, a, b, c);
35717    })(c);
35718  };
35719};
35720
35721var fromList$2 = function (a) {
35722  return function (b) {
35723    let c = a;
35724    return A(b, function () {
35725      var a = c;
35726
35727      if (a) {
35728        return c = a[1], w(a[0]);
35729      }
35730    });
35731  };
35732};
35733
35734var fromListener$2 = E;
35735
35736var fromObservable$2 = function (a) {
35737  var b = void 0 !== a[B] ? a[B]() : a;
35738  return function (a) {
35739    var c = b.subscribe({
35740      next: function (b) {
35741        return a(h(1, [b]));
35742      },
35743      complete: function () {
35744        return a(0);
35745      },
35746      error: C
35747    });
35748    return a(h(0, [function (a) {
35749      return a ? c.unsubscribe() : 0;
35750    }]));
35751  };
35752};
35753
35754var fromPromise$2 = function (a) {
35755  return function (b) {
35756    let c = !1;
35757    a.then(function (a) {
35758      c || (b(h(1, [a])), b(0));
35759      return Promise.resolve(0);
35760    });
35761    return b(h(0, [function (a) {
35762      a && (c = !0);
35763      return 0;
35764    }]));
35765  };
35766};
35767
35768var fromValue$2 = function (a) {
35769  return function (b) {
35770    let c = !1;
35771    return b(h(0, [function (d) {
35772      if (d || c) {
35773        return 0;
35774      }
35775
35776      c = !0;
35777      b(h(1, [a]));
35778      return b(0);
35779    }]));
35780  };
35781};
35782
35783var interval$2 = function (a) {
35784  return function (b) {
35785    let c = 0;
35786    var d = setInterval(function () {
35787      var a = c;
35788      c = c + 1 | 0;
35789      return b(h(1, [a]));
35790    }, a);
35791    return b(h(0, [function (a) {
35792      a && clearInterval(d);
35793      return 0;
35794    }]));
35795  };
35796};
35797
35798var make$2 = function (a) {
35799  return function (b) {
35800    let c = I;
35801    b(h(0, [function (a) {
35802      return a ? c() : 0;
35803    }]));
35804    c = a([function (a) {
35805      return b(h(1, [a]));
35806    }, function () {
35807      return b(0);
35808    }]);
35809    return 0;
35810  };
35811};
35812
35813var makeSubject$2 = function () {
35814  let a = [],
35815      b = !1;
35816  return [function (b) {
35817    function c(a) {
35818      return a !== b;
35819    }
35820
35821    a = a.concat(b);
35822    return b(h(0, [function (b) {
35823      1 === b && (a = a.filter(c));
35824      return 0;
35825    }]));
35826  }, function (c) {
35827    b || a.forEach(function d(a) {
35828      return a(h(1, [c]));
35829    });
35830    return 0;
35831  }, function () {
35832    b || (b = !0, a.forEach(K));
35833    return 0;
35834  }];
35835};
35836
35837var map$2 = function (a) {
35838  return function (b) {
35839    return function (c) {
35840      return r(b, function (b) {
35841        b = "number" == typeof b ? 0 : b.tag ? h(1, [a(b[0])]) : h(0, [b[0]]);
35842        return c(b);
35843      });
35844    };
35845  };
35846};
35847
35848var merge$2 = function (a) {
35849  return S(T)(J(a));
35850};
35851
35852var mergeAll$2 = V;
35853var mergeMap$2 = S;
35854
35855var never$2 = function (a) {
35856  return a(h(0, [y]));
35857};
35858
35859var onEnd$2 = function (a) {
35860  return function (b) {
35861    return function (c) {
35862      let d = !1;
35863      return r(b, function (b) {
35864        if ("number" == typeof b) {
35865          if (d) {
35866            return 0;
35867          }
35868
35869          d = !0;
35870          c(b);
35871          return a();
35872        }
35873
35874        if (b.tag) {
35875          return c(b);
35876        }
35877
35878        var e = b[0];
35879        return c(h(0, [function (b) {
35880          b && !d && (d = !0, a());
35881          return e(b);
35882        }]));
35883      });
35884    };
35885  };
35886};
35887
35888var onPush$2 = M;
35889
35890var onStart$2 = function (a) {
35891  return function (b) {
35892    return function (c) {
35893      return r(b, function (b) {
35894        if ("number" == typeof b || b.tag) {
35895          return c(b);
35896        }
35897
35898        c(b);
35899        return a();
35900      });
35901    };
35902  };
35903};
35904
35905var pipe = function (a) {
35906  for (var b = arguments, c = b.length, d = a, e = 1; e < c; e++) {
35907    d = b[e](d);
35908  }
35909
35910  return d;
35911};
35912
35913var publish$2 = function (a) {
35914  let b = y,
35915      c = !1;
35916  r(a, function (a) {
35917    if ("number" == typeof a) {
35918      return c = !0, 0;
35919    }
35920
35921    if (a.tag) {
35922      return c ? 0 : b(0);
35923    }
35924
35925    b = a = a[0];
35926    return a(0);
35927  });
35928  return [function () {
35929    if (c) {
35930      return 0;
35931    }
35932
35933    c = !0;
35934    return b(1);
35935  }];
35936};
35937
35938var sample$2 = function (a) {
35939  return function (b) {
35940    return function (c) {
35941      let d = !1,
35942          e = void 0,
35943          f = N,
35944          g = O;
35945      r(b, function (a) {
35946        if ("number" == typeof a) {
35947          return d = !0, g(1), c(0);
35948        }
35949
35950        a.tag ? e = w(a[0]) : f = a[0];
35951        return 0;
35952      });
35953      r(a, function (a) {
35954        var b = e;
35955
35956        if ("number" == typeof a) {
35957          return d = !0, f(1), c(0);
35958        }
35959
35960        if (a.tag) {
35961          if (void 0 === b || d) {
35962            return 0;
35963          }
35964
35965          e = void 0;
35966          return c(h(1, [x(b)]));
35967        }
35968
35969        g = a[0];
35970        return 0;
35971      });
35972      return c(h(0, [function (a) {
35973        if (a) {
35974          return d = !0, f(1), g(1);
35975        }
35976
35977        f(0);
35978        return g(0);
35979      }]));
35980    };
35981  };
35982};
35983
35984var scan$2 = function (a, b) {
35985  return function (c) {
35986    return function (d) {
35987      let e = b;
35988      return r(c, function (b) {
35989        "number" == typeof b ? b = 0 : b.tag ? b = h(1, [e = a(e, b[0])]) : b = h(0, [b[0]]);
35990        return d(b);
35991      });
35992    };
35993  };
35994};
35995
35996var share$2 = function (a) {
35997  function b(a) {
35998    "number" == typeof a ? (c.forEach(L), c = []) : a.tag ? (e = !1, c.forEach(function b(b) {
35999      return b(a);
36000    })) : d = a[0];
36001    return 0;
36002  }
36003
36004  let c = [],
36005      d = y,
36006      e = !1;
36007  return function (f) {
36008    function g(a) {
36009      return a !== f;
36010    }
36011
36012    1 === (c = c.concat(f)).length && r(a, b);
36013    return f(h(0, [function (a) {
36014      if (a) {
36015        return 0 === (c = c.filter(g)).length ? d(1) : 0;
36016      }
36017
36018      if (e) {
36019        return 0;
36020      }
36021
36022      e = !0;
36023      return d(a);
36024    }]));
36025  };
36026};
36027
36028var skip$2 = function (a) {
36029  return function (b) {
36030    return function (c) {
36031      let d = a;
36032      return z(b, function (a, b) {
36033        return "number" != typeof a && a.tag && 0 < d ? (d = d - 1 | 0, b(0)) : c(a);
36034      });
36035    };
36036  };
36037};
36038
36039var skipUntil$2 = function (a) {
36040  return function (b) {
36041    return function (c) {
36042      let d = !0,
36043          e = !1,
36044          f = !1,
36045          g = y,
36046          k = y;
36047      r(b, function (b) {
36048        if ("number" == typeof b) {
36049          return d && k(1), e = !0, c(0);
36050        }
36051
36052        if (b.tag) {
36053          if (d && !e) {
36054            return g(0);
36055          }
36056
36057          if (e) {
36058            return 0;
36059          }
36060
36061          f = !1;
36062          return c(b);
36063        }
36064
36065        var n = b[0];
36066        g = n;
36067        return r(a, function (a) {
36068          if ("number" == typeof a) {
36069            return 0;
36070          }
36071
36072          if (a.tag) {
36073            return d = !1, k(1);
36074          }
36075
36076          k = a = a[0];
36077          a(0);
36078          return n(0);
36079        });
36080      });
36081      return c(h(0, [function (a) {
36082        if (a) {
36083          return d && k(1), e = !0, g(1);
36084        }
36085
36086        if (f || e) {
36087          return 0;
36088        }
36089
36090        f = !0;
36091        return g(0);
36092      }]));
36093    };
36094  };
36095};
36096
36097var skipWhile$2 = function (a) {
36098  return function (b) {
36099    return function (c) {
36100      let d = !0;
36101      return z(b, function (b, f) {
36102        if ("number" != typeof b && b.tag && d) {
36103          if (a(b[0])) {
36104            return f(0);
36105          }
36106
36107          d = !1;
36108        }
36109
36110        return c(b);
36111      });
36112    };
36113  };
36114};
36115
36116var subscribe$2 = H;
36117
36118var switchAll$2 = function (a) {
36119  return Z(aa)(a);
36120};
36121
36122var switchMap$2 = Z;
36123
36124var take$2 = function (a) {
36125  return function (b) {
36126    return function (c) {
36127      let d = 0,
36128          e = y;
36129      r(b, function (b) {
36130        if ("number" == typeof b) {
36131          return d < a ? (d = a, c(0)) : 0;
36132        }
36133
36134        if (b.tag) {
36135          return d < a && (d = d + 1 | 0, c(b), d === a) ? (c(0), e(1)) : 0;
36136        }
36137
36138        e = b[0];
36139        return 0;
36140      });
36141      return c(h(0, [function (b) {
36142        return d < a ? b ? (d = a, e(1)) : e(0) : 0;
36143      }]));
36144    };
36145  };
36146};
36147
36148var takeLast$2 = D;
36149
36150var takeUntil$2 = function (a) {
36151  return function (b) {
36152    return function (c) {
36153      function d(a) {
36154        if ("number" == typeof a) {
36155          return 0;
36156        }
36157
36158        if (a.tag) {
36159          return e = !0, f(1), c(0);
36160        }
36161
36162        g = a = a[0];
36163        return a(0);
36164      }
36165
36166      let e = !1,
36167          f = y,
36168          g = y;
36169      r(b, function (b) {
36170        if ("number" == typeof b) {
36171          if (e) {
36172            return 0;
36173          }
36174
36175          e = !0;
36176          g(1);
36177          return c(0);
36178        }
36179
36180        if (b.tag) {
36181          return e ? 0 : c(b);
36182        }
36183
36184        f = b[0];
36185        return r(a, d);
36186      });
36187      return c(h(0, [function (a) {
36188        return e ? 0 : a ? (e = !0, f(1), g(1)) : f(0);
36189      }]));
36190    };
36191  };
36192};
36193
36194var takeWhile$2 = function (a) {
36195  return function (b) {
36196    return function (c) {
36197      let d = !1,
36198          e = y;
36199      r(b, function (b) {
36200        if ("number" == typeof b) {
36201          if (d) {
36202            return 0;
36203          }
36204
36205          d = !0;
36206          return c(0);
36207        }
36208
36209        if (b.tag) {
36210          if (d) {
36211            return 0;
36212          }
36213
36214          if (a(b[0])) {
36215            return c(b);
36216          }
36217
36218          d = !0;
36219          c(0);
36220          return e(1);
36221        }
36222
36223        e = b[0];
36224        return c(b);
36225      });
36226      return c(h(0, [function (a) {
36227        return d ? 0 : a ? (d = !0, e(1)) : e(0);
36228      }]));
36229    };
36230  };
36231};
36232
36233var tap$2 = M;
36234
36235var throttle$2 = function (a) {
36236  return function (b) {
36237    return function (c) {
36238      function d() {
36239        void 0 !== g && clearTimeout(x(g));
36240        return 0;
36241      }
36242
36243      function e() {
36244        g = void 0;
36245        f = !1;
36246        return 0;
36247      }
36248
36249      let f = !1,
36250          g = void 0;
36251      return r(b, function (b) {
36252        if ("number" == typeof b) {
36253          return d(), c(0);
36254        }
36255
36256        if (b.tag) {
36257          if (f) {
36258            return 0;
36259          }
36260
36261          f = !0;
36262          d();
36263          g = w(setTimeout(e, a(b[0])));
36264          return c(b);
36265        }
36266
36267        var k = b[0];
36268        return c(h(0, [function (a) {
36269          return a ? (d(), k(1)) : k(a);
36270        }]));
36271      });
36272    };
36273  };
36274};
36275
36276var toArray$2 = function (a) {
36277  let b = [],
36278      c = y,
36279      d = !1;
36280  r(a, function (a) {
36281    if ("number" == typeof a) {
36282      return d = !0, 0;
36283    }
36284
36285    if (a.tag) {
36286      return b.push(a[0]), c(0);
36287    }
36288
36289    c = a = a[0];
36290    return a(0);
36291  });
36292  d || c(1);
36293  return b;
36294};
36295
36296var toCallbag$2 = function (a) {
36297  return function (b, c) {
36298    return 0 === b ? r(a, function d(a) {
36299      if ("number" == typeof a) {
36300        return c(2, 0);
36301      }
36302
36303      if (a.tag) {
36304        return c(1, a[0]);
36305      }
36306
36307      var b = a[0];
36308      return c(0, function (a) {
36309        switch (a) {
36310          case 0:
36311            return 0;
36312
36313          case 1:
36314            return b(0);
36315
36316          case 2:
36317            return b(1);
36318        }
36319      });
36320    }) : 0;
36321  };
36322};
36323
36324var toObservable$2 = function (a) {
36325  var b = {
36326    subscribe: function (b) {
36327      let c = y,
36328          e = !1;
36329      r(a, function (a) {
36330        if ("number" == typeof a) {
36331          return e = !0, b.complete();
36332        }
36333
36334        if (a.tag) {
36335          if (e) {
36336            return 0;
36337          }
36338
36339          b.next(a[0]);
36340          return c(0);
36341        }
36342
36343        c = a = a[0];
36344        return a(0);
36345      });
36346      return {
36347        unsubscribe: function () {
36348          if (e) {
36349            return 0;
36350          }
36351
36352          e = !0;
36353          return c(1);
36354        }
36355      };
36356    }
36357  };
36358
36359  b[B] = function () {
36360    return b;
36361  };
36362
36363  return b;
36364};
36365
36366var toPromise$2 = function (a) {
36367  return new Promise(function (b) {
36368    return r(D(1)(a), function (a) {
36369      return "number" == typeof a ? 0 : a.tag ? b(a[0]) : a[0](0);
36370    });
36371  });
36372};
36373
36374
36375
36376/***/ }),
36377
36378/***/ "./src/index.js":
36379/*!**********************!*\
36380  !*** ./src/index.js ***!
36381  \**********************/
36382/*! no exports provided */
36383/***/ (function(module, __webpack_exports__, __webpack_require__) {
36384
36385"use strict";
36386__webpack_require__.r(__webpack_exports__);
36387/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
36388/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
36389/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js");
36390/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
36391/* harmony import */ var prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prism-react-renderer/themes/dracula */ "./node_modules/prism-react-renderer/themes/dracula/index.js");
36392/* harmony import */ var spectacle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! spectacle */ "./node_modules/spectacle/es/index.js");
36393/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./theme */ "./src/theme.js");
36394/* harmony import */ var _template__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./template */ "./src/template.js");
36395/* harmony import */ var _assets_blue_hair_headshot_jpg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../assets/blue_hair_headshot.jpg */ "./assets/blue_hair_headshot.jpg");
36396/* harmony import */ var _assets_Twitter_Logo_Blue_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../assets/Twitter_Logo_Blue.svg */ "./assets/Twitter_Logo_Blue.svg");
36397/* harmony import */ var _assets_t_p_favicon_png__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../assets/t&p-favicon.png */ "./assets/t&p-favicon.png");
36398/* harmony import */ var _assets_living_with_disabilities_legend_jpg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../assets/living-with-disabilities_legend.jpg */ "./assets/living-with-disabilities_legend.jpg");
36399/* harmony import */ var _assets_living_with_disabilities_hearing_jpg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../assets/living-with-disabilities_hearing.jpg */ "./assets/living-with-disabilities_hearing.jpg");
36400/* harmony import */ var _assets_living_with_disabilities_ambulatory_jpg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../assets/living-with-disabilities_ambulatory.jpg */ "./assets/living-with-disabilities_ambulatory.jpg");
36401/* harmony import */ var _assets_living_with_disabilities_vision_jpg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../assets/living-with-disabilities_vision.jpg */ "./assets/living-with-disabilities_vision.jpg");
36402/* harmony import */ var _assets_living_with_disabilities_selfcare_jpg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../assets/living-with-disabilities_selfcare.jpg */ "./assets/living-with-disabilities_selfcare.jpg");
36403/* harmony import */ var _assets_living_with_disabilities_cognitive_jpg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../assets/living-with-disabilities_cognitive.jpg */ "./assets/living-with-disabilities_cognitive.jpg");
36404/* harmony import */ var _assets_living_with_disabilities_independent_jpg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../assets/living-with-disabilities_independent.jpg */ "./assets/living-with-disabilities_independent.jpg");
36405/* harmony import */ var _assets_broken_arm_jpg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../assets/broken_arm.jpg */ "./assets/broken_arm.jpg");
36406/* harmony import */ var _assets_mouse_cat_jpg__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../assets/mouse_cat.jpg */ "./assets/mouse_cat.jpg");
36407/* harmony import */ var _assets_sick_at_computer_jpg__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../assets/sick_at_computer.jpg */ "./assets/sick_at_computer.jpg");
36408/* harmony import */ var _assets_computer_vision_jpg__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../assets/computer_vision.jpg */ "./assets/computer_vision.jpg");
36409/* harmony import */ var _assets_mobile_screen_glare_jpg__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../assets/mobile_screen_glare.jpg */ "./assets/mobile_screen_glare.jpg");
36410/* harmony import */ var _assets_video_in_loud_room_png__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../assets/video_in_loud_room.png */ "./assets/video_in_loud_room.png");
36411/* harmony import */ var _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../assets/eslint_logo.png */ "./assets/eslint_logo.png");
36412/* harmony import */ var _assets_eslint_terminal_png__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../assets/eslint_terminal.png */ "./assets/eslint_terminal.png");
36413/* harmony import */ var _assets_IDE_screenshot_png__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../assets/IDE_screenshot.png */ "./assets/IDE_screenshot.png");
36414/* harmony import */ var _assets_jsx_a11y_rules_documentation_png__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../assets/jsx-a11y_rules_documentation.png */ "./assets/jsx-a11y_rules_documentation.png");
36415/* harmony import */ var _assets_jsx_a11y_rule_detail_png__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../assets/jsx-a11y_rule_detail.png */ "./assets/jsx-a11y_rule_detail.png");
36416/* harmony import */ var _assets_deque_logo_png__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../assets/deque_logo.png */ "./assets/deque_logo.png");
36417/* harmony import */ var _assets_react_axe_screenshot_png__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../assets/react-axe_screenshot.png */ "./assets/react-axe_screenshot.png");
36418/* harmony import */ var _assets_react_axe_screenshot_expanded_png__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../assets/react-axe_screenshot_expanded.png */ "./assets/react-axe_screenshot_expanded.png");
36419/* harmony import */ var _assets_aXe_documentation_1_png__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../assets/aXe_documentation_1.png */ "./assets/aXe_documentation_1.png");
36420/* harmony import */ var _assets_aXe_documentation_2_png__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../assets/aXe_documentation_2.png */ "./assets/aXe_documentation_2.png");
36421/* harmony import */ var _assets_aXe_documentation_3_png__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../assets/aXe_documentation_3.png */ "./assets/aXe_documentation_3.png");
36422/* harmony import */ var _assets_ghost_busters_book_stack_jpg__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../assets/ghost_busters_book_stack.jpg */ "./assets/ghost_busters_book_stack.jpg");
36423/* harmony import */ var _assets_storybook_logo_png__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../assets/storybook_logo.png */ "./assets/storybook_logo.png");
36424/* harmony import */ var _assets_example_button_args_png__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../assets/example-button-args.png */ "./assets/example-button-args.png");
36425/* harmony import */ var _assets_toolbar_walkthrough_optimized_mp4__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../assets/toolbar-walkthrough-optimized.mp4 */ "./assets/toolbar-walkthrough-optimized.mp4");
36426/* harmony import */ var _assets_storybook_a11y_addon_png__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../assets/storybook_a11y_addon.png */ "./assets/storybook_a11y_addon.png");
36427/* harmony import */ var _assets_jest_logo_png__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../assets/jest_logo.png */ "./assets/jest_logo.png");
36428/* harmony import */ var _assets_jest_axe_output_png__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../assets/jest-axe_output.png */ "./assets/jest-axe_output.png");
36429/* harmony import */ var _assets_can_telephone_jpg__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../assets/can_telephone.jpg */ "./assets/can_telephone.jpg");
36430/* harmony import */ var _assets_selenium_logo_large_png__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ../assets/selenium_logo_large.png */ "./assets/selenium_logo_large.png");
36431/* harmony import */ var _assets_webdriver_chrome_window_png__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../assets/webdriver_chrome_window.png */ "./assets/webdriver_chrome_window.png");
36432/* harmony import */ var _assets_webdriver_results_page1_png__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../assets/webdriver_results_page1.png */ "./assets/webdriver_results_page1.png");
36433/* harmony import */ var _assets_webdriver_results_page2_png__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../assets/webdriver_results_page2.png */ "./assets/webdriver_results_page2.png");
36434/* harmony import */ var _assets_webdriver_results_page3_png__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../assets/webdriver_results_page3.png */ "./assets/webdriver_results_page3.png");
36435/* harmony import */ var _assets_webdriver_results_page4_png__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../assets/webdriver_results_page4.png */ "./assets/webdriver_results_page4.png");
36436/* harmony import */ var _assets_cypress_logo_png__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../assets/cypress-logo.png */ "./assets/cypress-logo.png");
36437/* harmony import */ var _assets_cypress_app_png__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../assets/cypress_app.png */ "./assets/cypress_app.png");
36438/* harmony import */ var _assets_cypress_app_run_test_png__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../assets/cypress_app_run_test.png */ "./assets/cypress_app_run_test.png");
36439/* harmony import */ var _assets_cypress_run_results_png__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../assets/cypress_run_results.png */ "./assets/cypress_run_results.png");
36440/* harmony import */ var _assets_cypress_run_results_error_png__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../assets/cypress_run_results_error.png */ "./assets/cypress_run_results_error.png");
36441/* harmony import */ var _assets_cypress_results_in_console_png__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../assets/cypress_results_in_console.png */ "./assets/cypress_results_in_console.png");
36442/* harmony import */ var _assets_out_of_the_box_jpg__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../assets/out_of_the_box.jpg */ "./assets/out_of_the_box.jpg");
36443/* harmony import */ var _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../assets/github_logo.png */ "./assets/github_logo.png");
36444/* harmony import */ var _assets_GitHub_Action_Results_png__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../assets/GitHub_Action_Results.png */ "./assets/GitHub_Action_Results.png");
36445/* harmony import */ var _assets_GitHub_Action_Results_lint_png__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../assets/GitHub_Action_Results_lint.png */ "./assets/GitHub_Action_Results_lint.png");
36446/* harmony import */ var _assets_gitHub_Action_Results_unittest_png__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../assets/gitHub_Action_Results_unittest.png */ "./assets/gitHub_Action_Results_unittest.png");
36447/* harmony import */ var _assets_Jenkins_logo_png__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../assets/Jenkins-logo.png */ "./assets/Jenkins-logo.png");
36448/* harmony import */ var _assets_netlify_logo_png__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../assets/netlify_logo.png */ "./assets/netlify_logo.png");
36449/* harmony import */ var _assets_travisci_logo_png__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ../assets/travisci_logo.png */ "./assets/travisci_logo.png");
36450/* harmony import */ var _assets_circle_logo_horizontal_white_png__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ../assets/circle-logo-horizontal-white.png */ "./assets/circle-logo-horizontal-white.png");
36451/* harmony import */ var _assets_lighthouse_logo_png__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../assets/lighthouse
36451-logo.png */ "./assets/lighthouse-logo.png");
36452/* harmony import */ var _assets_pa11y_logo_png__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ../assets/pa11y_logo.png */ "./assets/pa11y_logo.png");
36453/* harmony import */ var _assets_Lighthouse_GitHub_App_Install_png__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ../assets/Lighthouse_GitHub_App_Install.png */ "./assets/Lighthouse_GitHub_App_Install.png");
36454/* harmony import */ var _assets_Lighthouse_Status_Check_png__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ../assets/Lighthouse_Status_Check.png */ "./assets/Lighthouse_Status_Check.png");
36455/* harmony import */ var _assets_Lighthouse_Report_png__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ../assets/Lighthouse_Report.png */ "./assets/Lighthouse_Report.png");
36456/* harmony import */ var _assets_Jenkins_Lighthouse_Plugin_png__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ../assets/Jenkins_Lighthouse_Plugin.png */ "./assets/Jenkins_Lighthouse_Plugin.png");
36457/* harmony import */ var _assets_pa11y_travis_results_png__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ../assets/pa11y_travis_results.png */ "./assets/pa11y_travis_results.png");
36458
36459
36460
36461
36462
36463
36464
36465
36466
36467
36468
36469
36470
36471
36472
36473
36474
36475
36476
36477
36478
36479
36480
36481
36482
36483
36484
36485
36486
36487
36488
36489
36490
36491
36492
36493
36494
36495
36496
36497
36498
36499
36500
36501
36502
36503
36504
36505
36506
36507
36508
36509
36510
36511
36512
36513
36514
36515
36516
36517
36518
36519
36520
36521
36522
36523
36524
36525
36526
36527
36528const Presentation = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Deck"], {
36529  theme: _theme__WEBPACK_IMPORTED_MODULE_4__["default"],
36530  template: _template__WEBPACK_IMPORTED_MODULE_5__["default"],
36531  transitionEffect: "fade"
36532}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36533  height: "100%",
36534  flexDirection: "column"
36535}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36536  color: "primary",
36537  fontSize: "h1"
36538}, "Auditing React Apps for Accessibility"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36539  fontSize: "h2"
36540}, "Tips and Tricks"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36541  paddingTop: "130px",
36542  width: "100%",
36543  justifyContent: "space-evenly"
36544}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36544x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
36545  color: "secondary",
36546  fontWeight: "bold",
36547  fontSize: "3em"
36548}, "by Erin Doyle")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
36549  fontFamily: "monospace",
36550  fontSize: "2em"
36551}, "React Summit 2020"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36552  marginBottom: "20px"
36553}, "Who am I?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], {
36554  gridTemplateColumns: "1fr 2fr",
36555  gridColumnGap: 15
36556}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36556x"], {
36557  backgroundColor: "primary",
36558  border: "10px inset #FF0080",
36559  overflowY: "hidden"
36560}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36561  src: _assets_blue_hair_headshot_jpg__WEBPACK_IMPORTED_MODULE_6__["default"],
36562  width: "100%"
36563})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36564  backgroundColor: "secondary",
36565  overflowY: "hidden"
36566}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["OrderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
36567  elementNum: 0
36568}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], {
36569  paddingBottom: 5,
36570  paddingTop: 4
36571}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Fullstack Senior Developer at:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36572  justifyContent: "flex-start",
36573  alightItems: "center"
36574}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36574x"], {
36575  padding: "0 8px 0 15px",
36576  marginTop: "10px"
36577}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36578  src: _assets_t_p_favicon_png__WEBPACK_IMPORTED_MODULE_8__["default"]
36579})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
36580  href: "theoryandprinciple.com"
36581}, "Theory and Principle"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
36582  fontStyle: "italic",
36583  fontSize: "0.8em"
36584}, "\xA0\xA0(A Legal and Justice Technology design firm)")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
36585  elementNum: 1
36586}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], {
36587  paddingBottom: 5
36588}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Egghead.io Instructor"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
36589  href: "https://egghead.io/courses/develop-accessible-web-apps-with-react?af=f27y1u"
36590}, "https://egghead.io/courses/develop-accessible-web-apps-with-react"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
36591  elementNum: 2
36592}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], {
36593  paddingBottom: 5
36594}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Open Source Software contributor"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
36595  href: "https://github.com/erin-doyle"
36596}, "https://github.com/erin-doyle"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
36597  elementNum: 3
36598}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36599  justifyContent: "flex-start",
36600  alightItems: "center"
36601}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Erin Doyle ("), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36601x"], {
36602  marginTop: "10px",
36603  marginRight: "-10px"
36604}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36605  src: _assets_Twitter_Logo_Blue_svg__WEBPACK_IMPORTED_MODULE_7__["default"],
36606  height: "70px"
36607})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
36608  href: "https://twitter.com/SunshinyDoyle"
36609}, "@SunshinyDoyle)")))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36610  width: "75%",
36611  margin: "auto"
36612}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], null, "Why is Accessibility Important?"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], null, "Inclusion"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36613  backgroundColor: "#E5F3F4",
36614  flexDirection: "column",
36615  justifyItems: "center",
36616  flexBasis: "1",
36617  marginLeft: "30px",
36618  marginRight: "30px"
36619}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36620  justifyContent: "center",
36621  alignItems: "flex-end"
36622}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36622x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36623  src: _assets_living_with_disabilities_legend_jpg__WEBPACK_IMPORTED_MODULE_9__["default"],
36624  alt: "Living With Disabilities.  Number of Americans With a Disability by Age, Sex, and Disability Type"
36625})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36626  paddingBottom: "3px",
36627  paddingLeft: "10px"
36628}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
36629  href: "https://www.census.gov/library/visualizations/2020/comm/living-with-disabilities.html?cid=living-with-disabilities",
36630  target: "_blank",
36631  fontSize: "0.9em"
36632}, "[Source: U.S. Census Bureau]"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], {
36633  gridTemplateColumns: "1fr 1fr",
36634  gridTemplateRows: "1fr 1fr 1fr",
36635  gridColumnGap: 20
36636}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36637  src: _assets_living_with_disabilities_hearing_jpg__WEBPACK_IMPORTED_MODULE_10__["default"],
36638  alt: "Number of Americans with Hearing difficulty"
36639})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36640  src: _assets_living_with_disabilities_ambulatory_jpg__WEBPACK_IMPORTED_MODULE_11__["default"],
36641  alt: "Number of Americans with Ambulatory difficulty"
36642})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36643  src: _assets_living_with_disabilities_vision_jpg__WEBPACK_IMPORTED_MODULE_12__["default"],
36644  alt: "Number of Americans with Vision difficulty"
36645})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36646  src: _assets_living_with_disabilities_selfcare_jpg__WEBPACK_IMPORTED_MODULE_13__["default"],
36647  alt: "Number of Americans with Self-Care difficulty"
36648})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36649  src: _assets_living_with_disabilities_cognitive_jpg__WEBPACK_IMPORTED_MODULE_14__["default"],
36650  alt: "Number of Americans with Cognitive difficulty"
36651})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36652  src: _assets_living_with_disabilities_independent_jpg__WEBPACK_IMPORTED_MODULE_15__["default"],
36653  alt: "Number of Americans with Independent Living difficulty"
36654})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36655                        - This infographic comes from the 2018 US Census.
36656                        - So this is only a small slice of our global population,
36657                        - but it gives us an example that there are millions of people using our web sites that have a disability or difficulty of some sort
36658                        - Many of the difficulties listed here make it especially hard for these people to use the web
36659                        - And additionally many people may not have a disability to begin with but as they age they develop these difficulties
36660                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36661  fontSize: "h3",
36662  textAlign: "center"
36663}, "Inclusion - Temporary Limitations"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36664  padding: "20px 40px 0",
36665  height: "75%",
36666  justifyContent: "space-evenly",
36667  alignItems: "center"
36668}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36668x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36669  src: _assets_broken_arm_jpg__WEBPACK_IMPORTED_MODULE_16__["default"],
36670  height: "550px"
36671})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36672  src: _assets_mouse_cat_jpg__WEBPACK_IMPORTED_MODULE_17__["default"],
36673  height: "550px"
36674}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36675                        - Injuries, broken arm / hand / wrist, recent surgery
36676                        - Cat in the way
36677                            - preventing people from being able to use a mouse
36678                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36679  fontSize: "h3",
36680  textAlign: "center"
36681}, "Inclusion - Temporary Limitations"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36682  padding: "20px 40px 0",
36683  height: "75%",
36684  justifyContent: "space-evenly",
36685  alignItems: "center"
36686}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36686x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36687  src: _assets_sick_at_computer_jpg__WEBPACK_IMPORTED_MODULE_18__["default"],
36688  height: "350px"
36689})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36690  src: _assets_computer_vision_jpg__WEBPACK_IMPORTED_MODULE_19__["default"],
36691  height: "350px"
36692}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36693                        - Sick or on a medication that causes brain fogginess
36694                            - can cause cognitive or vision difficulties
36695                            - or can make it difficult to make fine motor movements using a mouse
36696                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36697  fontSize: "h3"
36698}, "Inclusion - Situational or Environmental Limitations"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36699  padding: "20px 20px 0",
36700  height: "70%",
36701  justifyContent: "space-between",
36702  alignItems: "center"
36703}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36703x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36704  src: _assets_mobile_screen_glare_jpg__WEBPACK_IMPORTED_MODULE_20__["default"],
36705  height: "350px"
36706})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36707  src: _assets_video_in_loud_room_png__WEBPACK_IMPORTED_MODULE_21__["default"],
36708  height: "350px"
36709}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36710                        - Using a mobile device outside where screen glare makes it hard to see
36711                        - Trying to watch a video in an area that's too loud to hear it
36712                            - or where it needs to be quiet and you can't turn the volume on
36713                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], {
36714  backgroundColor: "tertiary",
36715  backgroundImage: "url(https://static.politico.com/dims4/default/6230068/2147483647/resize/1920x/quality/90/?url=https%3A%2F%2Fstatic.politico.com%2Fb1%2Fd6%2Fb7daf6d24f128a1f5c132c1a23ef%2F20200210-doj-sign-ap-773.jpg)",
36716  backgroundOpacity: 0.6
36717}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36718  color: "secondary"
36719}, "It's the Law"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36720  margin: "10px",
36721  flexDirection: "row",
36722  justifyContent: "space-evenly",
36723  alignItems: "flex-start"
36724}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
36725  elementNum: 0
36726}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36726x"], {
36727  backgroundColor: "tertiary",
36728  padding: "10px"
36729}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36730  paddingBottom: "5px"
36731}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36732  fontSize: "2em"
36733}, "Americans with Disabilities Act (ADA)")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Regulated and enforced by the U.S. Department of Justice")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Prohibits discrimination against individuals with disabilities")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Applies to:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "All areas of public life (jobs, schools, transportation)")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "All public and private places that are open to the general public")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "All electronic and information technology")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "How to comply:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Meet the ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
36734  href: "https://www.w3.org/TR/WCAG20"
36735}, "WCAG (Web Content Accessibility Guidelines) 2.0"), " Level AA"))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
36736  elementNum: 1
36737}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36737x"], {
36738  backgroundColor: "tertiary",
36739  padding: "10px"
36740}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36741  paddingBottom: "10px"
36742}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36743  fontSize: "2em"
36744}, "Section 508 of the Rehabilitation Act of 1973")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Prohibits discrimination on the basis of disability with regards to Federal Agencies")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Section 508 adds the inclusion of electronic and information technology")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Applies to:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Programs conducted by Federal Agencies")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Programs receiving federal financial assistance")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Both Federal employment and Federal Contractor employment")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "All information and communications technology")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "How to comply:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
36745  fontSize: "0.8em"
36746}, "Meet the\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
36747  fontSize: "0.8em",
36748  href: "https://www.access-board.gov/guidelines-and-standards/communications-and-it/about-the-ict-refresh/final-rule/text-of-the-standards-and-guidelines"
36749}, "U.S. Access Board's ICT (Information and Communication Technology) Final Standards and Guidelines"))))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36750                        - In the United States, we have 2 major laws that require all web sites be accessible to those with disabilities.
36751                        - There are many similar laws in other countries around the world.
36752                        - As a result of these laws, there are thousands of lawsuits in the US alone each year against company's whose websites have been found to be inaccessible
36753                        - Both of these laws encourage using WCAG (or Web Content Accessibility Guidelines) version 2.0 level AA as a guide on how to meet the regulations
36754                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36754x"], {
36755  width: "75%",
36756  margin: "auto"
36757}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], null, "How do we get there?"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36758  fontSize: "h2"
36759}, "Auditing Tools and Automation"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36760  margin: "auto"
36761}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("iframe", {
36762  src: "https://giphy.com/embed/1nR6fu93A17vWZbO9c",
36763  width: "680",
36764  height: "520",
36765  frameBorder: "0",
36766  class: "giphy-embed",
36767  allowFullScreen: true
36768})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36769                        - You don't have to be an expert in accessibility in order to get started in making your apps more accessible.
36770                            - There are a number of things that you can add your projects and workflow today to start improving the accessibility of your apps immediately.
36771                            - These tools will do a lot of the heavy lifting for you making it very easy to identify issues before they go to production.
36772                        - Additionally, taking a test-driven approach to accessibility:
36773                            - can really help you incrementally learn more about potential issues and how to resolve them
36774                            - most of these tools provide information and educational resources along with any findings that can help you learn more about the issue,
36775                            what groups are impacted, how severely they're impacted and how you can fix the issue
36776                        - Keep in mind that automated tools can only catch a percentage of _potential_ issues
36777                            - Manual testing using the assistive technology devices and strategies used by our users is still crucial in identifying
36778                            all accessibility issues or usability problems in your app
36779                            - But using tools and automating what we can will give us a big boost
36780                        - If we all used these tools and fixed just what they identified alone the web would be massively more accessible to our users
36781                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36782  fontSize: "h2"
36783}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36784  justifyContent: "center"
36785}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36785x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36786  src: _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__["default"],
36787  width: "300px"
36788})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36789  fontSize: "3em",
36790  color: "primary"
36791}, "eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36792  fontSize: "2em"
36793}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36794  marginLeft: "20px",
36795  marginRight: "20px"
36796}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
36797  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
36798  language: "shell",
36799  autoFillHeight: true
36800}, `
36801                    # npm
36802                    npm install eslint eslint-plugin-jsx-a11y --save-dev
36803
36804                    # yarn
36805                    yarn add eslint eslint-plugin-jsx-a11y --dev
36806                    `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36807                        - A plugin for ESLint that will run a static analysis check for any potential accessibility issues in your code
36808                        - If you're already running ESLint on your code (and you should be) this is a really easy way to start checking your
36809                        code for a11y issues
36810                        - install
36811                            - you'll need to install eslint if you haven't already
36812                            - and then install the plugin as development dependency
36813                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36814  fontSize: "h2"
36815}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36816  justifyContent: "center"
36817}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36817x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36818  src: _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__["default"],
36819  width: "300px"
36820})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36821  fontSize: "3em",
36822  color: "primary"
36823}, "eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36824  fontSize: "2em"
36825}, "Enable and Configure"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
36826  defaultValue: [],
36827  values: [[1, 4], [8, 10], [5, 7]]
36828}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36829  position: "relative",
36830  marginLeft: "20px",
36831  marginRight: "20px"
36832}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
36833  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
36834  language: "json",
36835  highlightStart: value[0],
36836  highlightEnd: value[1],
36837  fontSize: 18,
36838  autoFillHeight: true
36839}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
36840                                {
36841                                    "plugins": [
36842                                        "jsx-a11y"
36843                                    ],
36844                                    "extends": [
36845                                        "plugin:jsx-a11y/recommended"
36846                                    ],
36847                                    "rules": {
36848                                        "jsx-a11y/rule-name": 2
36849                                    }
36850                                }
36851                            `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36851x"], {
36852  position: "absolute",
36853  bottom: "0rem",
36854  left: "0rem",
36855  right: "0rem",
36856  bg: "black"
36857}, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
36858  fontSize: "1.5rem",
36859  margin: "0rem"
36860}, "Enable"), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
36861  fontSize: "1.5rem",
36862  margin: "0rem"
36863}, "Set Specific Rules"), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
36864  fontSize: "1.5rem",
36865  margin: "0rem"
36866}, "Use the recommended rule set")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36867                        - you'll configure this plugin in your .eslintrc, .eslintrc.json file or in an eslintConfig field in package.json
36868                        - wherever you currently have eslint configured
36869                        - Enable
36870                            - (STEP)
36871                                - You enable the plugin by adding 'jsx-a11y' to the plugins array
36872                        - Configure
36873                            - (STEP)
36874                                - You can set any specific rules from the supported rules set in the rules object
36875                            - (STEP)
36876                                - You can also enable all the recommended rules at once by adding to the extends array
36877                                - If you want to use the strict rules set instead you'd just replace 'recommended' with 'strict'
36878                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36879  fontSize: "h2"
36880}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36881  justifyContent: "center"
36882}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36882x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36883  src: _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__["default"],
36884  width: "300px"
36885})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36886  fontSize: "3em",
36887  color: "primary"
36888}, "eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36889  fontSize: "2em"
36890}, "Run from the command line"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36891  margin: "10px",
36892  flexDirection: "row",
36893  justifyContent: "space-evenly",
36894  alignItems: "center"
36895}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
36896  elementNum: 0
36897}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36897x"], {
36898  width: "450px"
36899}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36900  bg: "black",
36901  padding: "5px",
36902  display: "block"
36903}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
36904  fontFamily: "monospace",
36905  fontSize: "1.5rem",
36906  margin: "0rem"
36907}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
36908  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
36909  highlightStart: 5,
36910  highlightEnd: 5,
36911  fontSize: 15,
36912  language: "json",
36913  autoFillHeight: true
36914}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
36915                                {
36916                                    "scripts": {
36917                                        "start": "react-scripts start",
36918                                        "build": "react-scripts build",
36919                                        "lint": "eslint src",
36920                                        "pretest": "npm run lint",
36921                                        "test": "react-scripts test",
36922                                        "eject": "react-scripts eject"
36923                                    }
36924                                }
36925                            `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
36926  elementNum: 1
36927}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36927x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36928  src: _assets_eslint_terminal_png__WEBPACK_IMPORTED_MODULE_23__["default"],
36929  width: "800px",
36930  style: {
36931    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
36932  }
36933})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36934                        - To run eslint from the command line
36935                        - (STEP)
36936                            - you can just add a script to your package.json file
36937                        - (STEP)
36938                            - Then from your terminal run that command
36939                        - Let's look at the results:
36940                            - It lists all files in which potential accessibility issues were detected
36941                            - Under each file it lists the specific errors in that file
36942                            - And next to each error is the name of the rule that was violated
36943                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36944  fontSize: "h2"
36945}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36946  justifyContent: "center"
36947}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36947x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36948  src: _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__["default"],
36949  width: "300px"
36950})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36951  fontSize: "3em",
36952  color: "primary"
36953}, "eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36954  fontSize: "2em"
36955}, "IDE Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
36956  marginLeft: "auto",
36957  marginRight: "auto"
36958}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36959  src: _assets_IDE_screenshot_png__WEBPACK_IMPORTED_MODULE_24__["default"],
36960  style: {
36961    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
36962  }
36963})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36964                        - Another really cool benefit of using linting to check for accessibility issues is that:
36965                            - Most IDEs today have integrations with eslint and can automatically show you any findings
36966                            right inline with your code
36967                            - This allows you to catch any potential errors immediately as you're writing the code.
36968                        -    Hovering over the errant code will show you what the finding is.
36969                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36969x"], {
36970  margin: "20px auto"
36971}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36972  src: _assets_jsx_a11y_rules_documentation_png__WEBPACK_IMPORTED_MODULE_25__["default"],
36973  height: "650px",
36974  style: {
36975    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
36976  }
36977})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36978                        - So if you then take one of the errors and look up the rule that was violated you can get more information about it
36979                        - The Github repo for the plugin has documentation of all of the rules it supports
36980                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36980x"], {
36981  margin: "20px auto"
36982}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
36983  src: _assets_jsx_a11y_rule_detail_png__WEBPACK_IMPORTED_MODULE_26__["default"],
36984  height: "650px",
36985  style: {
36986    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
36987  }
36988})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
36989                        - So in the example I just showed you, I had files that were violating the label-has-associated-control rule
36990                        - if we look up that rule we can see that:
36991                            - For each rule it details
36992                                1. what the pass and fail criteria is so you can understand how the rule works
36993                                2. suggestions for how to resolve the issue
36994                                3. and links to the WCAG guidelines that are specifically violated by this issue
36995                        - from there you can learn more about how this specific issue impacts the accessibility for users
36996                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
36997  fontSize: "h2"
36998}, "Runtime"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
36999  justifyContent: "center",
37000  paddingBottom: "60px"
37001}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37001x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37002  src: _assets_deque_logo_png__WEBPACK_IMPORTED_MODULE_27__["default"],
37003  height: "70px"
37004})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37005  fontSize: "3em",
37006  color: "primary"
37007}, "react-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37008  values: [0, [1, 9], [6, 9]]
37009}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37010  fontSize: "2em"
37011}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37011x"], {
37012  marginLeft: "20px",
37013  marginRight: "20px"
37014}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37015  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37016  language: "shell",
37017  autoFillHeight: true
37018}, `
37019                                        # npm
37020                                        npm install react-axe --save-dev
37021
37022                                        # yarn
37023                                        yarn add react-axe --dev
37024                                        `))), (step === 1 || step === 2) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37025  fontSize: "2em"
37026}, "Enable"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37027  marginLeft: "20px",
37028  marginRight: "20px"
37029}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37030  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37031  language: "javascript",
37032  highlightStart: value[0],
37033  highlightEnd: value[1],
37034  fontSize: 18,
37035  autoFillHeight: true
37036}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
37037                                            import React from 'react';
37038                                            import ReactDOM from 'react-dom';
37039
37040                                            import App from './App';
37041
37042                                            if (process.env.NODE_ENV !== 'production') {
37043                                                const axe = require('react-axe');
37044                                                axe(React, ReactDOM, 1000);
37045                                            }
37046
37047                                            ReactDOM.render(<App/>, document.getElementById('app-root'));
37048                                        `)))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37049                        - react-axe is an analysis tool for auditing your app for accessibility issues at runtime
37050                        - Any findings are output to the Chrome DevTools console
37051                        - react-axe layers nicely with the eslint-plugin-jsx-a11y in that
37052                            - the eslint plugin can only audit the static code
37053                            - but react-axe looks at the rendered DOM
37054                            - it can analyze the resulting DOM constantly as components are mounted, unmounted and state changes
37055                            - it can test for things like color contrast by being able to analyze the current foreground and
37056                            background colors during all states of an element
37057                        - (STEP)
37058                            - you install it as a development dependency just like the eslint plugin
37059                        - (STEP)
37060                            - To enable the tool
37061                        - (STEP)
37062                            - you'll need to initialize it early on in the code that starts up your app, before the call to render the root of your app
37063                            - You'll want to conditionally require react-axe so that it's only running in non Production environments as there is a bit of a performance impact when it runs
37064                            - To initialize it, you'll just pass the imported axe function the React and ReactDOM objects
37065                            - and the third argument is the timing delay in milliseconds that react-axe will wait to start analysis after detecting a component change
37066                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37067  fontSize: "h2"
37068}, "Runtime"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37069  justifyContent: "center",
37070  paddingBottom: "15px"
37071}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37071x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37072  src: _assets_deque_logo_png__WEBPACK_IMPORTED_MODULE_27__["default"],
37073  height: "70px"
37074})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37075  fontSize: "3em",
37076  color: "primary"
37077}, "react-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37078  values: [0]
37079}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37080  marginLeft: "auto",
37081  marginRight: "auto"
37082}, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37083  src: _assets_react_axe_screenshot_png__WEBPACK_IMPORTED_MODULE_28__["default"],
37084  width: "1300px",
37085  style: {
37086    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37087  }
37088}), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37089  src: _assets_react_axe_screenshot_expanded_png__WEBPACK_IMPORTED_MODULE_29__["default"],
37090  width: "1300px",
37091  style: {
37092    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37093  }
37094}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37095                        - Once installed and enabled react-axe will just run as your app runs, and output any findings to the Chrome DevTools console.
37096                        - This is the same page/component that I showed the eslint plugin had reported findings on
37097                            - but you can see here that react-axe is able to report even more findings of that same code now that it has the context
37098                            of the entire DOM and it's current state
37099                        - Looking at what react-axe outputs:
37100                            - it lists all found issues in order of severity of the impact to accessibility the problem represents
37101                            - if you expand one of the findings
37102                            - (STEP)
37103                                - It shows the errant source code
37104                                - If you hover over the Element listing here it will highlight the element on the page
37105                                - And it will list more details about the problem
37106                        - Finally, if you click on the link listed with the finding
37107                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37108  values: [0, 1]
37109}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37109x"], {
37110  marginLeft: "auto",
37111  marginRight: "auto",
37112  marginTop: "5px"
37113}, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37114  src: _assets_aXe_documentation_1_png__WEBPACK_IMPORTED_MODULE_30__["default"],
37115  width: "1300px",
37116  style: {
37117    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
37118  }
37119}), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37120  src: _assets_aXe_documentation_2_png__WEBPACK_IMPORTED_MODULE_31__["default"],
37121  width: "1300px",
37122  style: {
37123    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
37124  }
37125}), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37126  src: _assets_aXe_documentation_3_png__WEBPACK_IMPORTED_MODULE_32__["default"],
37127  width: "1300px",
37128  style: {
37129    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
37130  }
37131}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37132                        - Just like in the eslint plugin repo, here you can get more information about the issue
37133                        - Listed here are examples of how to resolve the issue and make the element in question accessible
37134                        - (STEP)
37135                            - There is a section showing:
37136                                - how severely accessibility is impacted for users
37137                                - Which specific disabilities are impacted
37138                                - And which WCAG and Section 508 guidelines are violated
37139                        - (STEP)
37140                            - And there is then further detail explaining in what ways accessibility is impacted by this issue
37141                            - which is really helpful in further understanding exactly how our code can impacts people's ability to use our applications
37142                            - And finally:
37143                                - a list of resources to learn even more through Deque University if desired
37144                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37145  fontSize: "h2"
37146}, "Component Library"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37146x"], {
37147  marginLeft: "auto",
37148  marginRight: "auto",
37149  paddingTop: "20px"
37150}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37151  src: _assets_ghost_busters_book_stack_jpg__WEBPACK_IMPORTED_MODULE_33__["default"],
37152  height: "550px"
37153})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37154                        - Building a component library is a great way to gain efficiencies in creating accessible React apps
37155                        - You can consolidate all of your UI widget components in one place
37156                            - by "UI widget" I mean our basic building block UI elements, things like:
37157                                - form elements such as:
37158                                    - text inputs
37159                                    - radio buttons
37160                                    - checkboxes
37161                                    - text areas
37162                                    - selects
37163                                - and then interactive elements like:
37164                                    - buttons
37165                                    - links
37166                                    - tabs
37167                                    - nav bars
37168                                    - etc
37169                                - and finally more complex items such as:
37170                                    - dialogs or modals
37171                                    - menus
37172                                    - number steppers
37173                                    - accordians
37174                                    - carousels
37175                                    - and the list goes on
37176                            - While of course there are still accessibility considerations once these building blocks are composed on a page,
37177                                - but the large bulk of potential accessibility problems lie in how these widgets are individually coded
37178                        - If you can write each of these widgets with accessibility in mind then you now have:
37179                            - a library of reusable components with accessibility baked in
37180                            - you don't need to solve the same problems over and over again for each app you build
37181                        - so the amount of issues you'll run into will be massively reduced
37182                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37183  fontSize: "h2"
37184}, "Component Library"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37185  justifyContent: "center",
37186  paddingBottom: "60px"
37187}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37187x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37188  src: _assets_storybook_logo_png__WEBPACK_IMPORTED_MODULE_34__["default"],
37189  height: "70px"
37190})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37191  paddingLeft: "20px"
37192}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37193  fontSize: "3em",
37194  color: "primary"
37195}, "Storybook"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37196  marginLeft: "auto",
37197  marginRight: "auto"
37198}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37199  src: "https://raw.githubusercontent.com/storybookjs/storybook/master/media/storybook-intro.gif"
37200})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37201                        - Storybook is a super useful tool for building a React component library
37202                        - It provides UI where you can browse the components in your library
37203                        - and while doing so you can:
37204                            - view each component in isolation
37205                            - and interactively test the component by being able to change the props that are passed in to it
37206                            and see how it behaves
37207                            - well before having to integrate it into an app
37208                        - Being able to develop components in isolation, outside the context of an app allows you to focus on:
37209                            - building a component that can be reusable
37210                            - and testing various use cases ahead of time without having to worry about application-specific dependencies
37211                            - so that when it's time to drop the component into your app it's already been tested on its own
37212                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37213  fontSize: "h2"
37214}, "Component Library"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37215  justifyContent: "center",
37216  paddingBottom: "60px"
37217}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37217x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37218  src: _assets_storybook_logo_png__WEBPACK_IMPORTED_MODULE_34__["default"],
37219  height: "70px"
37220})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37221  paddingLeft: "20px"
37222}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37223  fontSize: "3em",
37224  color: "primary"
37225}, "Storybook"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37226  values: [0]
37227}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37228  fontSize: "2em"
37229}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37229x"], {
37230  marginLeft: "20px",
37231  marginRight: "20px"
37232}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37233  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37234  language: "shell",
37235  autoFillHeight: true
37236}, `
37237                                            npx sb init
37238                                        `))), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37239  fontSize: "2em"
37240}, "Run"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37241  marginLeft: "20px",
37242  marginRight: "20px"
37243}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37244  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37245  language: "shell",
37246  autoFillHeight: true
37247}, `
37248                                            npm run storybook
37249                                        `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37250                        - Storybook has a CLI making installation simple
37251                        - (STEP)
37252                            - Run the init command of the Storybook CLI using npx inside an existing project's root directory
37253                            - The command will:
37254                                - Install required dependencies
37255                                - Setup the necessary scripts to run and build Storybook
37256                                - Add a default configuration
37257                                - Add some boilerplate stories to get you started
37258                        - (STEP)
37259                            - Once that's done you simply run Storybook with 'npm run storybook'
37260                            - and that will start up a development server hosting your Storybook UI
37261                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37261x"], {
37262  marginLeft: "auto",
37263  marginRight: "auto",
37264  marginTop: "-15px"
37265}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37266  src: _assets_example_button_args_png__WEBPACK_IMPORTED_MODULE_35__["default"],
37267  height: "750px"
37268})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37269                        - As I stated before, Storybook gives you the ability to test changing the props that get passed in to
37270                        a component to see how its state changes based on those values
37271                        - You can do that on the Controls panel for the component
37272                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37272x"], {
37273  marginLeft: "auto",
37274  marginRight: "auto"
37275}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("video", {
37276  autoPlay: true,
37277  loop: true,
37278  height: "700px"
37279}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("source", {
37280  src: _assets_toolbar_walkthrough_optimized_mp4__WEBPACK_IMPORTED_MODULE_36__["default"],
37281  type: "video/mp4"
37282}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37283                        - Storybook also provides the ability to test your component using different viewport sizes
37284                        and against different background colors
37285                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37285x"], {
37286  marginLeft: "auto",
37287  marginRight: "auto",
37288  marginTop: "-10px"
37289}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37290  src: _assets_storybook_a11y_addon_png__WEBPACK_IMPORTED_MODULE_37__["default"],
37291  height: "750px"
37292})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37293                        - So here's where Storybook gets even more powerful:
37294                            - It supports a plugin system it calls Addons.
37295                            - Most notably there is an Addon for auditing the accessibility of components
37296                            - Once installed and configured it can audit a component for accessibility issues
37297                            and display them in a panel
37298                            - The Addon uses the same rules engine that react-axe uses called axe-core
37299                            - Here it shows you:
37300                                1. Any violations
37301                                2. What rules were violated
37302                                3. A link to more information
37303                                4. And what WCAG and Section 508 Guidelines were violated
37304                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37305  fontSize: "h2"
37306}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37306x"], {
37307  marginLeft: "auto",
37308  marginRight: "auto"
37309}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("iframe", {
37310  src: "https://giphy.com/embed/l2Je9KLRT3YkN4yas",
37311  width: "730",
37312  height: "616",
37313  frameBorder: "0",
37314  class: "giphy-embed"
37315})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37316                        - We can also add accessibility testing to our unit tests which gives us:
37317                            1. an easy way to automate accessibility auditing
37318                            2. the flexibility to audit at any level of our code, as low as an element and as high as a component representing an entire page of our app
37319                            3. a safety net for any regressions
37320                        - For all of the reasons we write unit tests we can apply that to accessibility
37321                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37322  fontSize: "h2"
37323}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37324  justifyContent: "center",
37325  paddingBottom: "75px"
37326}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37326x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37327  src: _assets_jest_logo_png__WEBPACK_IMPORTED_MODULE_38__["default"],
37328  height: "75px"
37329})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37330  fontSize: "3em",
37331  color: "primary"
37332}, "jest-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37333  fontSize: "2em"
37334}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37335  marginLeft: "20px",
37336  marginRight: "20px"
37337}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37338  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37339  language: "shell",
37340  autoFillHeight: true
37341}, `
37342                        # npm
37343                        npm install jest-axe --save-dev
37344
37345                        # yarn
37346                        yarn add jest-axe --dev
37347                    `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37348                        - jest-axe is a plugin to jest that also uses the axe-core rules engine
37349                            - that's the same rules engine we've already talked about used by react-axe and the Storybook accessibility plugin
37350                            - if you're noticing a theme, IMO, the axe-core rules engine is the most trusted source for accessibility auditing
37351                            at this time,
37352                            - so these tools that are built on top of it share a really thoroughm dependable and consistent foundation
37353                            for accessibility auditing
37354                        - If you're already using jest for unit testing in your project then all you'll need to do is install jest-axe
37355                        to your development dependencies
37356                        - Otherwise you'll need to also install jest
37357                            - So see the jest docs for more detail on getting jest configured
37358                        - But assuming you're already running jest, let's talk about how to add in jest-axe
37359                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37360  fontSize: "h2"
37361}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37362  justifyContent: "center",
37363  paddingBottom: "75px"
37364}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37364x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37365  src: _assets_jest_logo_png__WEBPACK_IMPORTED_MODULE_38__["default"],
37366  height: "75px"
37367})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37368  fontSize: "3em",
37369  color: "primary"
37370}, "jest-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37371  fontSize: "2em"
37372}, "Writing Tests"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37373  values: [// ReactDOM
37374  [2, 2], [9, 19], [10, 13], [15, 15], [17, 17], // Enzyme
37375  [2, 2], [10, 12], [14, 14], [16, 16], // React Testing Library
37376  [2, 2], [10, 12], [14, 14], [16, 16]]
37377}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37377x"], {
37378  marginLeft: "20px",
37379  marginRight: "20px",
37380  display: step === -1 ? 'none' : 'block'
37381}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37382  bg: "black",
37383  paddingLeft: "10px",
37384  display: "block"
37385}, [0, 1, 2, 3, 4].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
37386  fontSize: "1.5rem",
37387  margin: "0rem"
37388}, "Rendering with ReactDOM"), [5, 6, 7, 8].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
37389  fontSize: "1.5rem",
37390  margin: "0rem"
37391}, "Using Enzyme"), [9, 10, 11, 12].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
37392  fontSize: "1.5rem",
37393  margin: "0rem"
37394}, "Using React Testing Library")), [0, 1, 2, 3, 4].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37395  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37396  language: "javascript",
37397  highlightStart: value[0],
37398  highlightEnd: value[1],
37399  fontSize: 15,
37400  autoFillHeight: true
37401}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
37402                                        import React from 'react';
37403                                        import ReactDOM from 'react-dom';
37404                                        import { axe, toHaveNoViolations } from 'jest-axe';
37405
37406                                        import Login from '../Login';
37407
37408                                        expect.extend(toHaveNoViolations);
37409
37410                                        it('should not violate accessibility rules', async () => {
37411                                            const LoginPage = document.createElement('div');
37412                                            ReactDOM.render((
37413                                                <Login history={{ push: jest.fn() }} />
37414                                            ), LoginPage);
37415
37416                                            const results = await axe(LoginPage);
37417
37418                                            expect(results).toHaveNoViolations();
37419                                        });
37420                                    `)), [5, 6, 7, 8].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37421  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37422  language: "javascript",
37423  highlightStart: value[0],
37424  highlightEnd: value[1],
37425  fontSize: 15,
37426  autoFillHeight: true
37427}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
37428                                        import React from 'react';
37429                                        import { mount } from 'enzyme';
37430                                        import { axe, toHaveNoViolations } from 'jest-axe';
37431
37432                                        import Login from '../Login';
37433
37434                                        expect.extend(toHaveNoViolations);
37435
37436                                        it('should not violate accessibility rules', async () => {
37437                                            const LoginPage = mount(
37438                                                <Login history={{ push: jest.fn() }} />
37439                                            );
37440
37441                                            const results = await axe(LoginPage.getDOMNode());
37442
37443                                            expect(results).toHaveNoViolations();
37444                                        });
37445                                    `)), [9, 10, 11, 12].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37446  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37447  language: "javascript",
37448  highlightStart: value[0],
37449  highlightEnd: value[1],
37450  fontSize: 15,
37451  autoFillHeight: true
37452}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
37453                                        import React from 'react';
37454                                        import { render } from '@testing-library/react';
37455                                        import { axe, toHaveNoViolations } from 'jest-axe';
37456
37457                                        import Login from '../Login';
37458
37459                                        expect.extend(toHaveNoViolations);
37460
37461                                        it('should not violate accessibility rules', async () => {
37462                                            const { container } = render(
37463                                                <Login history={{ push: jest.fn() }} />
37464                                            );
37465
37466                                            const results = await axe(container);
37467
37468                                            expect(results).toHaveNoViolations();
37469                                        });
37470                                    `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37471                        - you can use jest-axe with whatever rendering library you wish as long as you pass the axe function the HTML you wish to test
37472                        - (STEP)
37473                            - You can use ReactDOM to render the component you wish to test
37474                            - (STEP)
37475                                - here in this test we're rendering a component representing a Login Page
37476                                    - this is the same Login Page I've already showed some examples of findings from the eslint plugin and react-axe earlier
37477                            - (STEP)
37478                                - we're creating a DIV and then calling ReactDOM to render the component we want to test into that DIV
37479                            - (STEP)
37480                                - then we pass that DIV element which now contains our LoginPage component as rendered HTML to the axe function
37481                            - (STEP)
37482                                - finally we call expect on the results with the matcher that jest-axe provides us, toHaveNoViolations
37483                                - if a violation is found then the test will fail and the violation will be output to the console
37484                        - (STEP)
37485                            - You can also use Enzyme for rendering the component you wish to test
37486                            - (STEP)
37487                                - here we use Enzyme's mount function to render our component
37488                            - (STEP)
37489                                - then we pass the result of Enzyme's getDOMNode function to axe because remember we need to pass the axe function HTML
37490                            - (STEP)
37491                                - and then the last step is the same no matter what rendering framework we use, we just test that the result from axe has no violations
37492                        - (STEP)
37493                            - You can even use React-Testing-Library for rendering your test components
37494                            - (STEP)
37495                                - here we're using React-Testing-Library's render function to render the component
37496                                - and destructuring the returned object to get the container
37497                            - (STEP)
37498                                - then we can pass the container to the axe function
37499                            - (STEP)
37500                                - and once again expect that there are no violations
37501
37502                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37503  fontSize: "h2"
37504}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37505  justifyContent: "center",
37506  paddingBottom: "30px"
37507}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37507x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37508  src: _assets_jest_logo_png__WEBPACK_IMPORTED_MODULE_38__["default"],
37509  height: "75px"
37510})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37511  fontSize: "3em",
37512  color: "primary"
37513}, "jest-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37514  marginLeft: "auto",
37515  marginRight: "auto"
37516}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37517  src: _assets_jest_axe_output_png__WEBPACK_IMPORTED_MODULE_39__["default"],
37518  style: {
37519    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37520  }
37521})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37522                        - Here's what the output would look like for that test we just saw the examples of
37523                        - If a component being tested has a violation, jest will output that the test failed
37524                        - jest-axe adds to the output for the failed test:
37525                            1. the HTML element where the violation occurred
37526                            2. what the violation was
37527                            3. a list of suggestions for fixing the issue
37528                            4. And finally a link to more information about the rule that was violated
37529                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37530  fontSize: "h2"
37531}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37531x"], {
37532  margin: "auto"
37533}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37534  src: _assets_can_telephone_jpg__WEBPACK_IMPORTED_MODULE_40__["default"],
37535  height: "750px"
37536})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37537                        - While a tool like react-axe can audit a page for accessibility at runtime you have to be there
37538                        manually testing your app to trigger the auditing and watching the DevTools Console for findings as you go
37539                        - This is great while you're developing but gets tedious as a method for repeatedly testing entire pages of your app at a time
37540                        - Using End-to-End testing gives us the ability to automate the auditing of our rendered pages
37541                        - With End-to-End testing you can program interactions with the UI to fully exercise all possible states of your page's UI widgets
37542                        and uncover any accessibility issues on the page
37543                        - Just like with unit testing, this provides a great way to build a safety net to catch any regressions as you continue to develop
37544                        - For End-to-End Testing we have some options - most notably we can use the axe-core rules engine with both:
37545                            - Selenium WebDriver
37546                            - and Cypress
37547                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37548  fontSize: "h2"
37549}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37550  justifyContent: "center",
37551  paddingBottom: "75px"
37552}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37552x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37553  src: _assets_selenium_logo_large_png__WEBPACK_IMPORTED_MODULE_41__["default"],
37554  height: "75px"
37555})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37556  paddingLeft: "15px"
37557}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37558  fontSize: "3em",
37559  color: "primary"
37560}, "axe-webdriverjs"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37561  values: [0, 1]
37562}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37563  fontSize: "2em"
37564}, "Install Selenium WebDriver"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37564x"], {
37565  marginLeft: "20px",
37566  marginRight: "20px"
37567}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37568  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37569  language: "shell",
37570  autoFillHeight: true
37571}, `
37572                                            # npm
37573                                            npm install selenium-webdriver --no-save
37574
37575                                            # yarn
37576                                            yarn add selenium-webdriver --dev
37577                                        `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37578  padding: "50px 20px"
37579}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
37580  color: "secondary"
37581}, "For more info on installing Selenium WebDriver and browser drivers see: ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
37582  href: "https://www.selenium.dev/documentation/en/webdriver/driver_requirements/"
37583}, "https://www.selenium.dev/documentation/en/webdriver/driver_requirements/")))), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37584  fontSize: "2em"
37585}, "Install axe-webdriverjs"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37585x"], {
37586  marginLeft: "20px",
37587  marginRight: "20px"
37588}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37589  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37590  language: "shell",
37591  autoFillHeight: true
37592}, `
37593                                            # npm
37594                                            npm install axe-webdriverjs --save-dev
37595
37596                                            # yarn
37597                                            yarn add axe-webdriverjs --dev
37598                                        `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37599                        - Starting with Selenium WebDriver, there is a library available
37600                            - axe-webdriverjs
37601                            - that provides WebDriver the ability to analyze the current page for accessibility issues
37602                        - (STEP)
37603                            - Start by installing Selenium WebDriver if you haven't already
37604                            - and see the link listed here for further details on setting up WebDriver and links to download browser drivers
37605                        - (STEP)
37606                            - Then install the library axe-webdriverjs to your development dependencies
37607                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37608  fontSize: "h2"
37609}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37610  justifyContent: "center",
37611  paddingBottom: "75px"
37612}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37612x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37613  src: _assets_selenium_logo_large_png__WEBPACK_IMPORTED_MODULE_41__["default"],
37614  height: "75px"
37615})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37616  paddingLeft: "15px"
37617}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37618  fontSize: "3em",
37619  color: "primary"
37620}, "axe-webdriverjs"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37621  fontSize: "2em"
37622}, "Writing Tests"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37623  defaultValue: [],
37624  values: [[1, 17], [1, 2], [4, 6], [9, 9], [10, 16]]
37625}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37625x"], {
37626  marginLeft: "20px",
37627  marginRight: "20px",
37628  display: step === -1 ? 'none' : 'block'
37629}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37630  bg: "black",
37631  paddingLeft: "10px",
37632  display: "block"
37633}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
37634  fontFamily: "monospace",
37635  fontSize: "1rem",
37636  margin: "0rem"
37637}, "e2e-tests.js")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37638  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37639  language: "javascript",
37640  highlightStart: value[0],
37641  highlightEnd: value[1],
37642  fontSize: 15,
37643  autoFillHeight: true
37644}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
37645                                    const WebDriver = require('selenium-webdriver');
37646                                    const AxeBuilder = require('axe-webdriverjs');
37647
37648                                    const driver = new WebDriver.Builder()
37649                                        .forBrowser('chrome')
37650                                        .build();
37651
37652                                    driver
37653                                      .get('localhost:3000/login')
37654                                      .then(function() {
37655                                            AxeBuilder(driver).analyze(function(err, results) {
37656                                                if (err) {
37657                                                    // Handle error somehow
37658                                                }
37659                                                console.log(results);
37660                                            });
37661                                      });
37662                                `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37663                        - Selenium WebDriver is run via a script.
37664                        - (STEP)
37665                            - here is a simple example test script
37666                        - (STEP)
37667                            - we only need to require:
37668                                - Selenium WebDriver
37669                                - and the axe-webdriverjs library
37670                        - (STEP)
37671                            - We build a WebDriver instance for Chrome in this example
37672                        - (STEP)
37673                            - Then we navigate to the page we want to test
37674                            - in this case it's the same Login Page that we've used for a number of the other tools we've looked at so far
37675                        - (STEP)
37676                            - Once the page has loaded we call the AxeBuilder we imported from the axe-webdriverjs library
37677                            - it requires we pass it the WebDriver instance we created initially
37678                            - then we can finally call the analyze function which will audit the current page against the axe-core rules set
37679                            and pass the results as the second argument to a provided callback function
37680                        - All we're doing in this callback function is logging out the results object so we can see what that looks like
37681                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37682  fontSize: "h2"
37683}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37684  justifyContent: "center",
37685  paddingBottom: "75px"
37686}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37686x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37687  src: _assets_selenium_logo_large_png__WEBPACK_IMPORTED_MODULE_41__["default"],
37688  height: "75px"
37689})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37690  paddingLeft: "15px"
37691}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37692  fontSize: "3em",
37693  color: "primary"
37694}, "axe-webdriverjs"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37695  fontSize: "2em"
37696}, "Running"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37697  marginLeft: "20px",
37698  marginRight: "20px"
37699}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37700  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37701  language: "shell",
37702  autoFillHeight: true
37703}, `
37704                        node e2e-tests
37705                    `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37706                        - To run the test script we need to run it with Node
37707                        - and if you noticed in the previous slide, for this example my script was named e2e-tests.js
37708                        - so that's the file we're running here with Node
37709                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37710  values: [0, 1, 2, 3]
37711}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37712  justifyContent: "space-evenly",
37713  alignItems: "center"
37714}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37714x"], {
37715  marginLeft: "auto",
37716  marginRight: "auto",
37717  paddingTop: "75px"
37718}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37719  src: _assets_webdriver_chrome_window_png__WEBPACK_IMPORTED_MODULE_42__["default"],
37720  width: "500px",
37721  style: {
37722    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37723  }
37724})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37725  paddingTop: "20px"
37726}, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37727  src: _assets_webdriver_results_page1_png__WEBPACK_IMPORTED_MODULE_43__["default"],
37728  height: "650px",
37729  style: {
37730    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37731  }
37732}), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37733  src: _assets_webdriver_results_page2_png__WEBPACK_IMPORTED_MODULE_44__["default"],
37734  height: "650px",
37735  style: {
37736    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37737  }
37738}), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37739  src: _assets_webdriver_results_page3_png__WEBPACK_IMPORTED_MODULE_45__["default"],
37740  height: "650px",
37741  style: {
37742    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37743  }
37744}), step === 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37745  src: _assets_webdriver_results_page4_png__WEBPACK_IMPORTED_MODULE_46__["default"],
37746  height: "650px",
37747  style: {
37748    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37749  }
37750})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37751                        - once the script starts it will automatically open up a window of the browser that we specified in the test script
37752                        - to the url the script specified
37753                        - after axe-webdriverjs's analyze function is finished and returns its results to the callback,
37754                        - (STEP)
37755                            - the results object will be logged to the console as we specified in the test script
37756                            - the first property in the results object is the inapplicable items
37757                            - these are all of the rules that were found not to apply to the current page
37758                            - there will likely be A LOT of these
37759                        - (STEP)
37760                            - keep scrolling and eventually you'll get to the incomplete items which presumably would include any rules whose checks weren't able to be completed
37761                            - and then there is a passes property listing all of the rules that did apply to the page and passed
37762                        - (STEP)
37763                            - then further down you'll get to the details of the testEngine, testEnvironment, testRunner, timeStamp, toolOptions and the url being tested
37764                        - (STEP)
37765                            - and then finally is the violations property containing any rules that the page violated
37766                            - each violation lists:
37767                                - the description and detail about the rule
37768                                - a URL where more information is available
37769                                - the id of the rule
37770                                - how severe the violation impacts accessibility
37771                                - references to the Nodes and Tags that violate the rule
37772                                - (since these results are just simply being output using console.log we only see [Array] rather than a more useful representation of the value)
37773                            - one could certainly customize how the results are reported using this results object to be more tailored to their needs
37774                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37775  fontSize: "h2"
37776}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37777  justifyContent: "center",
37778  alignItems: "center"
37779}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37779x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37780  src: _assets_cypress_logo_png__WEBPACK_IMPORTED_MODULE_47__["default"],
37781  height: "70px"
37782})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37783  paddingLeft: "30px",
37784  paddingBottom: "15px"
37785}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37786  fontSize: "3em",
37787  color: "primary"
37788}, "cypress-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37789  values: [0, 1, 2, 3]
37790}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37791  paddingTop: "75px"
37792}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37793  fontSize: "2em"
37794}, "Install Cypress"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37794x"], {
37795  marginLeft: "20px",
37796  marginRight: "20px"
37797}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37798  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37799  language: "shell",
37800  autoFillHeight: true
37801}, `
37802                                            # npm
37803                                            npm install cypress --save-dev
37804
37805                                            # yarn
37806                                            yarn add cypress --dev
37807                                        `))), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37808  paddingTop: "75px"
37809}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37810  fontSize: "2em"
37811}, "Install cypress-axe"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37811x"], {
37812  marginLeft: "20px",
37813  marginRight: "20px"
37814}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37815  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37816  language: "shell",
37817  autoFillHeight: true
37818}, `
37819                                            # npm
37820                                            npm install cypress-axe --save-dev
37821
37822                                            # yarn
37823                                            yarn add cypress-axe --dev
37824                                        `))), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37825  margin: "10px",
37826  flexDirection: "row",
37827  justifyContent: "space-evenly",
37828  alignItems: "center"
37829}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37829x"], {
37830  width: "475px"
37831}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37832  bg: "black",
37833  padding: "5px",
37834  display: "block"
37835}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
37836  fontFamily: "monospace",
37837  fontSize: "1.5rem",
37838  margin: "0rem"
37839}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37840  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37841  highlightStart: 8,
37842  highlightEnd: 8,
37843  fontSize: 15,
37844  language: "json",
37845  autoFillHeight: true
37846}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
37847                                                {
37848                                                    "scripts": {
37849                                                        "start": "react-scripts start",
37850                                                        "build": "react-scripts build",
37851                                                        "lint": "eslint src",
37852                                                        "pretest": "npm run lint",
37853                                                        "test": "react-scripts test",
37854                                                        "cypress:open": "cypress open",
37855                                                        "eject": "react-scripts eject",
37856                                                    }
37857                                                }
37858                                            `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37858x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37859  src: _assets_cypress_app_png__WEBPACK_IMPORTED_MODULE_48__["default"],
37860  height: "500px",
37861  style: {
37862    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
37863  }
37864})))), step === 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37865  fontSize: "2em"
37866}, "Add cypress-axe Commands"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37867  marginLeft: "auto",
37868  marginRight: "auto",
37869  width: "700px",
37870  paddingTop: "10px"
37871}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37872  bg: "black",
37873  paddingLeft: "10px",
37874  display: "block"
37875}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
37876  fontFamily: "monospace",
37877  fontSize: "1rem",
37878  margin: "0rem"
37879}, "cypress/support/index.js")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37880  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37881  language: "javascript",
37882  highlightStart: 22,
37883  highlightEnd: 22,
37884  fontSize: "15px",
37885  autoFillHeight: true
37886}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
37887                                            // ***********************************************************
37888                                            // This example support/index.js is processed and
37889                                            // loaded automatically before your test files.
37890                                            //
37891                                            // This is a great place to put global configuration and
37892                                            // behavior that modifies Cypress.
37893                                            //
37894                                            // You can change the location of this file or turn off
37895                                            // automatically serving support files with the
37896                                            // 'supportFile' configuration option.
37897                                            //
37898                                            // You can read more here:
37899                                            // https://on.cypress.io/configuration
37900                                            // ***********************************************************
37901
37902                                            // Import commands.js using ES2015 syntax:
37903                                            import './commands'
37904
37905                                            // Alternatively you can use CommonJS syntax:
37906                                            // require('./commands')
37907
37908                                            import 'cypress-axe';
37909                                        `)))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37910                        - Continuing on to Cypress, cypress-axe is a package that adds commands to Cypress for testing the pages of your application
37911                        for accessibility issues using the axe-core rules engine
37912                        - (STEP)
37913                            - Start by installing Cypress if you haven't already
37914                        - (STEP)
37915                            - Then install the cypress-axe package
37916                        - (STEP)
37917                            - If this is your first time setting up Cypress, you'll want to add the command to open the Cypress app
37918                            to your npm scripts
37919                            - once you run that command, the Cypress app will automatically open in a browser window
37920                            - and upon running the first time will install some directory scaffolding with some example files into your project
37921                        - (STEP)
37922                            - To continue setting up cypress-axe you'll need to open up the index.js file located in the cypress/support directory
37923                            - add to it an import of cypress-axe
37924                            - this makes the additional commands provided by cypress-axe available to cypress
37925                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37926  fontSize: "h2"
37927}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37928  justifyContent: "center",
37929  alignItems: "center",
37930  paddingBottom: "75px"
37931}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37931x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37932  src: _assets_cypress_logo_png__WEBPACK_IMPORTED_MODULE_47__["default"],
37933  height: "70px"
37934})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37935  paddingLeft: "30px",
37936  paddingBottom: "15px"
37937}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37938  fontSize: "3em",
37939  color: "primary"
37940}, "cypress-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37941  fontSize: "2em"
37942}, "Writing Tests"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37943  defaultValue: [],
37944  values: [[2, 2], [3, 4], [6, 8]]
37945}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37945x"], {
37946  marginLeft: "20px",
37947  marginRight: "20px"
37948}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
37949  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
37950  language: "javascript",
37951  highlightStart: value[0],
37952  highlightEnd: value[1],
37953  autoFillHeight: true
37954}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
37955                                    beforeEach(() => {
37956                                        cy.visit('http://localhost:3000/login');
37957                                        cy.injectAxe();
37958                                    });
37959
37960                                    it('should not violate accessibility rules', () => {
37961                                        cy.checkA11y();
37962                                    });
37963                                `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
37964                        - So now let's look at an example test
37965                        - (STEP)
37966                            - First we call the command to visit the page we want to test
37967                        - (STEP)
37968                            - That should be followed immediately by the command to injectAxe
37969                            - this injects the axe-core runtime into the page so it will be available to use for auditing
37970                        - (STEP)
37971                            - Then we can proceed to check the page for accessibility issues by calling the checkA11y command
37972                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
37973  values: [0, 1, 2, 3]
37974}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37975  fontSize: "h2"
37976}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
37977  justifyContent: "center",
37978  alignItems: "center",
37979  paddingBottom: "75px"
37980}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37980x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37981  src: _assets_cypress_logo_png__WEBPACK_IMPORTED_MODULE_47__["default"],
37982  height: "70px"
37983})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37984  paddingLeft: "30px",
37985  paddingBottom: "15px"
37986}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37987  fontSize: "3em",
37988  color: "primary"
37989}, "cypress-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
37990  fontSize: "2em"
37991}, "Running Tests")), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
37992  marginLeft: "auto",
37993  marginRight: "auto",
37994  marginTop: "50px"
37995}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
37996  src: _assets_cypress_app_run_test_png__WEBPACK_IMPORTED_MODULE_49__["default"],
37997  style: {
37998    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
37999  }
38000})), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38000x"], {
38001  marginLeft: "auto",
38002  marginRight: "auto",
38003  marginTop: "20px"
38004}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38005  src: _assets_cypress_run_results_png__WEBPACK_IMPORTED_MODULE_50__["default"],
38006  height: "650px",
38007  style: {
38008    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38009  }
38010})), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38011  marginLeft: "auto",
38012  marginRight: "auto",
38013  marginTop: "20px"
38014}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38015  src: _assets_cypress_run_results_error_png__WEBPACK_IMPORTED_MODULE_51__["default"],
38016  height: "650px",
38017  style: {
38018    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38019  }
38020})), step === 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38020x"], {
38021  marginLeft: "auto",
38022  marginRight: "auto",
38023  marginTop: "20px"
38024}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38025  src: _assets_cypress_results_in_console_png__WEBPACK_IMPORTED_MODULE_52__["default"],
38026  height: "650px",
38027  style: {
38028    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38029  }
38030})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38031                        - To run the tests
38032                        - (STEP)
38033                            - Go to the Cypress App and find the link for the test you wish to run
38034                            - Here is the test we just looked at in the previous slide
38035                        - (STEP)
38036                            - Clicking on the link will open a new window in the selected browser in which to test
38037                            - Shown on the right will be the page under test
38038                            - and on the left are the test results
38039                            - Here you can see there were 5 accessibility violations detected
38040                            - and each of them is listed
38041                        - (STEP)
38042                            - by clicking on one of the accessibility errors
38043                            - it will highlight the elements on the page that contain the specific error
38044                            - additionally it will log to the Dev Console more details about the error
38045                        - (STEP)
38046                            - by opening up the DevTools Console we do indeed see more details logged about that error
38047                            - Because cypress-axe is using axe-core just like the axe-webdriverjs library we just talked about
38048                            you'll notice all of the data points listed here are the same
38049                        - So really this gives us the flexibility to choose which End-to-End testing framework we prefer to work with
38050                        without being restricted by our ability to test for accessibility.  Both of them give us the same results.
38051                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38052  fontSize: "h2"
38053}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38053x"], {
38054  marginLeft: "auto",
38055  marginRight: "auto"
38056}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("iframe", {
38057  src: "https://giphy.com/embed/l2Je3fIeeXyYEM85G",
38058  width: "750",
38059  height: "634",
38060  frameBorder: "0",
38061  class: "giphy-embed"
38062})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38063                        - Continuous Integration is really where a lot of these tools become the most powerful in helping us efficiently
38064                        achieve and maintain the accessibility of our applications.
38065                        - We want to employ the tools I've covered so far all along the way as we're developing
38066                        so that our code is accessible from the start.
38067                        - But continuous integration is where we can really implement that safety net to ensure that our application
38068                        remains accessible.
38069                        - With every code change we make we introduce the potential to break accessibility.
38070                        - The bigger our team is or the more rapidly we develop, the easier it is for a code change to slip through the net.
38071                        - So employing some form of accessibility auditing in our continuous integration system can go a long way in
38072                        helping with that.
38073                        - Additionally, it can be used as a gate to prevent code changes that break accessibility from being able to be merged.
38074                        - Let me clear, again, as I stated at the very beginning, automated auditing tools will only catch a percentage of
38075                        potential accessibility issues, it is no replacement for manual testing which we need to do fairly regularly.
38076                        - But being able to automate the auditing will still give us an immense benefit and provide an early warning system
38077                        that can be run much more frequently than it's practical to perform manual testing.
38078                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38079  fontSize: "h2"
38080}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38081  fontSize: "3em",
38082  color: "primary"
38083}, "Out of the Box"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38084  justifyContent: "space-evenly",
38085  alightItems: "center",
38086  paddingTop: "50px"
38087}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38087x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
38088  elementNum: 0
38089}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], {
38090  padding: "20px"
38091}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38092  fontSize: "1.2em"
38093}, "Linting with eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
38094  elementNum: 1
38095}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], {
38096  padding: "20px"
38097}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38098  fontSize: "1.2em"
38099}, "Unit Testing with jest-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], {
38100  elementNum: 2
38101}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], {
38102  padding: "20px"
38103}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38104  fontSize: "1.2em"
38105}, "End-to-End Testing with:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "axe-webdriverjs")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "cypress-axe"))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38105x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38106  src: _assets_out_of_the_box_jpg__WEBPACK_IMPORTED_MODULE_53__["default"],
38107  width: "600px"
38108}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38109                       - Out of the box with a Continuous Integration system of your choice you have the ability to add
38110                       any or all of the following to your pipeline:
38111                            - (STEP)
38112                                1. linting with the eslint-plugin-jsx-a11y plugin
38113                            - (STEP)
38114                                2. running the unit tests we've written using jest-axe
38115                            - (STEP)
38116                                3. running the end-to-end tests we've written using either:
38117                                    - Selenium WebDriver with the axe-webdriverjs library
38118                                    - or Cypress with cypress-axe
38119                        - I'll show you quick example of how to run these tools with one of the CI systems
38120                            - To keep things brief I won't show the example in all of them but the concepts are the same so you should be able to
38121                            recreate in whatever your CI system of choice is
38122                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38123  fontSize: "h2"
38124}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38125  justifyContent: "center",
38126  alignItems: "center",
38127  paddingBottom: "20px"
38128}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38128x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38129  src: _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__["default"],
38130  height: "75px"
38131})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38132  paddingLeft: "30px"
38133}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38134  fontSize: "3em",
38135  color: "primary"
38136}, "Actions CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38137  defaultValue: [],
38138  values: [[3, 7, 1, 18], // lint job
38139  [10, 19, 5, 5], [10, 19, 12, 17], // test job
38140  [21, 30, 7, 7]]
38141}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38142  justifyContent: "space-evenly",
38143  alignItems: "center"
38144}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38144x"], {
38145  width: "500px",
38146  height: "500px"
38147}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38148  bg: "black",
38149  padding: "5px",
38150  display: "block"
38151}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38152  fontFamily: "monospace",
38153  fontSize: "1.2rem",
38154  margin: "0rem"
38155}, ".github/workflows/ci.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38156  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38157  highlightStart: value[0],
38158  highlightEnd: value[1],
38159  fontSize: "13",
38160  language: "yml",
38161  autoFillHeight: true
38162}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38163                                    name: CI
38164
38165                                    on:
38166                                        push:
38167                                            branches: [ master ]
38168                                        pull_request:
38169                                            branches: [ master ]
38170
38171                                    jobs:
38172                                        lint:
38173                                            runs-on: ubuntu-latest
38174                                            name: Run eslint
38175                                            steps:
38176                                            - uses: actions/checkout@v1
38177                                            - uses: actions/setup-node@v1
38178                                                with:
38179                                                node-version: '14.x'
38180                                            - run: npm ci
38181                                            - run: npm run lint
38182
38183                                        unit-test:
38184                                            runs-on: ubuntu-latest
38185                                            name: Run unit tests
38186                                            steps:
38187                                            - uses: actions/checkout@v1
38188                                            - uses: actions/setup-node@v1
38189                                                with:
38190                                                node-version: '14.x'
38191                                            - run: npm ci
38192                                            - run: npm run test-only
38193                                `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38193x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38194  bg: "black",
38195  padding: "5px",
38196  display: "block"
38197}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38198  fontFamily: "monospace",
38199  fontSize: "1.2rem",
38200  margin: "0rem"
38201}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38202  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38203  highlightStart: value[2],
38204  highlightEnd: value[3],
38205  fontSize: "13",
38206  language: "json",
38207  autoFillHeight: true
38208}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38209                                    {
38210                                        "scripts": {
38211                                            "start": "react-scripts start",
38212                                            "build": "react-scripts build",
38213                                            "lint": "eslint src",
38214                                            "pretest": "npm run lint",
38215                                            "test-only": "react-scripts test",
38216                                            "test": "npm run test-only",
38217                                            "cypress:open": "cypress open",
38218                                            "eject": "react-scripts eject"
38219                                        },
38220                                        "eslintConfig": {
38221                                            "extends": [
38222                                              "react-app",
38223                                              "plugin:jsx-a11y/recommended"
38224                                            ]
38225                                        },
38226                                    }
38227                                `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38228                        - For this example I'll be showing a GitHub Action
38229                            - This is a .yml file stored at .github/workflows at the root of my project
38230                            - (STEP)
38231                                - this workflow will be trigger when any pushes or PRs are made to the master branch
38232                                - I've separated the workflow out into 2 jobs which will run in parallel
38233                            - (STEP)
38234                                - there's the 'lint' job which will run the 'lint' npm script I defined in my package.json file
38235                                - this runs eslint which will include the eslint-plugin-jsx-a11y
38236                            - (STEP)
38237                                - since I have that installed and configured in my eslint config
38238                            - (STEP)
38239                                - the second job is the 'unit-test' job
38240                                - this will run the 'test-only' npm script I defined in my package.json file
38241                                - this runs jest which will auto detect my jest test files and run the tests I've written using jest-axe
38242                            - The reason I have these broken up into 2 separate jobs is that I want to see any failures separately for each
38243                            - If these tasks were run linearly then if one fails the job will exit before executing the following job
38244                            - but I want to know if I have failures in both tasks rather than having to fix all failures in one and push changes before
38245                            I can learn about whether I have failures in the next task
38246                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38247  defaultValue: [],
38248  values: [0, 1]
38249}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38249x"], {
38250  marginLeft: "auto",
38251  marginRight: "auto",
38252  paddingTop: "20px"
38253}, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38254  src: _assets_GitHub_Action_Results_png__WEBPACK_IMPORTED_MODULE_55__["default"],
38255  height: "650px",
38256  style: {
38257    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38258  }
38259}), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38260  src: _assets_GitHub_Action_Results_lint_png__WEBPACK_IMPORTED_MODULE_56__["default"],
38261  height: "650px",
38262  style: {
38263    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38264  }
38265}), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38266  src: _assets_gitHub_Action_Results_unittest_png__WEBPACK_IMPORTED_MODULE_57__["default"],
38267  height: "650px",
38268  style: {
38269    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38270  }
38271}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38272                        - Here's what the results look like when this workflow runs on the project we've been testing on throughout this presentation
38273                        - It shows that both the lint and unit test running jobs failed (as I expected them to)
38274                        - If we click on the failed "Run eslint" job
38275                        - (STEP)
38276                            - We see the output from the 'npm run lint' script which matches what we saw when I demonstrated using the eslint-plugin-jsx-a11y plugin earlier
38277                            - If we click on the failed "Run unit tests" job
38278                        - (STEP)
38279                            - We see the output from the 'npm run test-only' script which matches what we saw when I demonstrated using jest-axe earlier
38280                        - So we can see here how we're able to produce the same results we would get if running these tools locally but we can leverage our CI system to automate them
38281                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38282  fontSize: "h2"
38283}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38283x"], {
38284  margin: "50px",
38285  border: "1px solid #FF0080"
38286}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], {
38287  gridTemplateColumns: "1fr 1fr 1fr",
38288  gridColumnGap: "70px",
38289  height: "550px"
38290}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38291  flexDirection: "column",
38292  alignItems: "center",
38293  justifyContent: "space-evenly"
38294}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38295  src: _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__["default"],
38296  height: "75px"
38297})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38298  src: _assets_Jenkins_logo_png__WEBPACK_IMPORTED_MODULE_58__["default"],
38299  height: "75px"
38300})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38300x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38301  src: _assets_netlify_logo_png__WEBPACK_IMPORTED_MODULE_59__["default"],
38302  height: "75px"
38303}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38304  flexDirection: "column",
38305  alignItems: "center",
38306  justifyContent: "space-evenly"
38307}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38308  src: _assets_travisci_logo_png__WEBPACK_IMPORTED_MODULE_60__["default"],
38309  height: "75px"
38310})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38311  src: _assets_circle_logo_horizontal_white_png__WEBPACK_IMPORTED_MODULE_61__["default"],
38312  height: "75px"
38313}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38314  flexDirection: "column",
38315  alignItems: "center",
38316  justifyContent: "space-evenly"
38317}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38317x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38318  src: _assets_lighthouse_logo_png__WEBPACK_IMPORTED_MODULE_62__["default"],
38319  height: "125px"
38320})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38321  src: _assets_pa11y_logo_png__WEBPACK_IMPORTED_MODULE_63__["default"],
38322  height: "125px"
38323}))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38324                        - In addition to what we can do out-of-the-box with our CI system of choice there are plugins
38325                        available for each of the major CI systems that we can leverage
38326                        - So far just about all of the tools we've talked about have been built upon the axe-core rules engine.
38327                        - But in the CI space there are some other players
38328                            - Most notably at this time are Lighthouse and pa11y
38329                            - Pretty much any of these CI systems can be set up to run either of these tools
38330                        - You've probably heard of Lighthouse before as it comes bundled with Chrome DevTools for performing a number
38331                        of audits on things such as performance, SEO, best practices as well as accessibility
38332                            - Well it's also available to use as a CLI or CI tool
38333                            - And once again axe shows up, as Lighthouse uses axe-core under the covers.
38334                        - Pa11y is also a set of CLI and CI tools that can perform accessibility audits on a provided URL or file
38335                            - It allows you to specify the test runner to use, and at this time comes with the options to use either:
38336                                - HTML CodeSniffer
38337                                - or axe-core
38338                        - I'll show you some examples for each of the top CI systems but this list is not exhaustive and there are more plugins
38339                        coming out all the time.
38340                        - So I urge you to do some research about what's out there for your system of choice.
38341                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38342  fontSize: "h2"
38343}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38344  fontSize: "3em",
38345  color: "primary"
38346}, "Lighthouse CI"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38347  fontSize: "2em"
38348}, "Configure"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38349  defaultValue: [],
38350  values: [// package.json
38351  [5, 6], // lighthouserc.json
38352  [1, 15], [4, 4], [5, 5], [6, 8]]
38353}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38353x"], {
38354  marginRight: "auto",
38355  marginLeft: "auto"
38356}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38357  bg: "black",
38358  padding: "5px",
38359  display: "block"
38360}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38361  fontFamily: "monospace",
38362  fontSize: "1.2rem",
38363  margin: "0rem"
38364}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38365  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38366  highlightStart: value[0],
38367  highlightEnd: value[1],
38368  language: "json",
38369  autoFillHeight: true
38370}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38371                                        {
38372                                            "scripts": {
38373                                                "start": "react-scripts start",
38374                                                "build": "react-scripts build",
38375                                                "serve": "serve -s build",
38376                                                "serve:lhci": "NODE_ENV=production npm run serve",
38377                                                "lint": "eslint src",
38378                                                "pretest": "npm run lint",
38379                                                "test-only": "react-scripts test",
38380                                                "test": "npm run test-only",
38381                                                "cypress:open": "cypress open",
38382                                                "lighthouse": "lhci autorun",
38383                                                "eject": "react-scripts eject"
38384                                            },
38385                                        }
38386                                    `))), [1, 2, 3, 4].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38386x"], {
38387  marginRight: "auto",
38388  marginLeft: "auto",
38389  width: "600px"
38390}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38391  bg: "black",
38392  padding: "5px",
38393  display: "block"
38394}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38395  fontFamily: "monospace",
38396  fontSize: "1.2rem",
38397  margin: "0rem"
38398}, "lighthouserc.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38399  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38400  highlightStart: value[0],
38401  highlightEnd: value[1],
38402  language: "json",
38403  autoFillHeight: true
38404}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38405                                        {
38406                                            "ci": {
38407                                                "collect": {
38408                                                    "url": ["http://localhost:5000/login"],
38409                                                    "isSinglePageApplication": true,
38410                                                    "settings": {
38411                                                        "onlyCategories": ["accessibility"]
38412                                                    }
38413                                                }
38414                                            }
38415                                        }
38416                                    `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38417                        - (STEP)
38418                            - The first thing needed to set up the Lighthouse CI is in the package.json for your project:
38419                                - add a script to serve the production build
38420                                    - I chose to use the serve package but you can use whatever you want just make sure to npm or yarn install it as well
38421                                - and then add a script named "serve:lhci"
38422                                    - this is used by Lighthouse CI to detect what is should run to start your server
38423                                    - there are also options for letting Lighthouse CI serve static files in its own server so you can do what
38424                                    best suits your project
38425                        - (STEP)
38426                            - Next you'll need to create a file in the root of your project named lighthouserc.json.
38427                            - There are extensive options for configuring Lighthouse CI but this was just the minimum needed to get up and running.
38428                            - I encourage you to check their docs for more options.
38429                        - (STEP)
38430                            - the 'url' property takes an array of URLs I want Lighthouse to audit
38431                                - here I've just specified my Login Page which we've been testing throughout the presentation
38432                                - note it's at localhost and the port is specifically 5000 because that's what 'serve' is going to
38433                                host it at
38434                                - make sure the port is set to whatever your server will be using
38435                        - (STEP)
38436                            - the next property 'isSinglePageApplication" needs to be set to true for Single Page Applications
38437                        - (STEP)
38438                            - The settings property here is specifying that I only want Lighthouse to audit for accessibility issues
38439                            - Because Lighthouse performs many categories of audits I added this to restrict the results just to
38440                            accessibility issues
38441                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38442  fontSize: "h2"
38443}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38444  justifyContent: "center",
38445  alignItems: "center",
38446  paddingBottom: "10px"
38447}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38447x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38448  src: _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__["default"],
38449  height: "75px"
38450})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38451  paddingLeft: "30px"
38452}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38453  fontSize: "3em",
38454  color: "primary"
38455}, "Lighthouse CI Action"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38456  defaultValue: [],
38457  values: [[3, 7], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18]]
38458}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38459  marginRight: "auto",
38460  marginLeft: "auto",
38461  width: "800px"
38462}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38462x"], {
38463  bg: "black",
38464  padding: "5px",
38465  display: "block"
38466}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38467  fontFamily: "monospace",
38468  fontSize: "1.2rem",
38469  margin: "0rem"
38470}, ".github/workflows/lighthouse.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38471  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38472  highlightStart: value[0],
38473  highlightEnd: value[1],
38474  language: "yml",
38475  autoFillHeight: true
38476}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38477                                name: Lighthouse
38478
38479                                on:
38480                                    push:
38481                                        branches: [ master ]
38482                                    pull_request:
38483                                        branches: [ master ]
38484
38485                                jobs:
38486                                    lighthouse:
38487                                        runs-on: ubuntu-latest
38488                                        name: Audit with Lighthouse
38489                                        steps:
38490                                            - uses: actions/checkout@v2
38491                                            - uses: actions/setup-node@v1
38492                                            - run: npm install && npm install -g @lhci/[email protected]
38493                                            - run: npm run build
38494                                            - run: lhci autorun --upload.target=temporary-public-storage
38495                            `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38496                        - So if you want to use Lighthouse with GitHub Actions, similarly to what I already demonstrated,
38497                        - you'll need to create a .yml file in the .github/workflow directory at the root of your project
38498                        - (STEP)
38499                            - again this workflow is triggered on push and PRs of the master branch
38500                        - (STEP)
38501                            - the workflow will do a checkout of the repo
38502                        - (STEP)
38503                            - setup node
38504                        - (STEP)
38505                            - and then install the Lighthouse Continuous Integration CLI
38506                        - (STEP)
38507                            - it will then build the project
38508                        - (STEP)
38509                            - and finally runs Lighthouse
38510                            - using the configuration we defined in the 'lighthouserc.json' file in our project
38511                            - we could also pass flags into the 'lhci autorun' command in place of using the json config file
38512                            - here you can see I'm passing the upload.target flag
38513                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38514  fontSize: "h2"
38515}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38516  justifyContent: "center",
38517  alignItems: "center",
38518  paddingBottom: "75px"
38519}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38519x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38520  src: _assets_travisci_logo_png__WEBPACK_IMPORTED_MODULE_60__["default"],
38521  height: "75px"
38522})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38523  paddingLeft: "30px"
38524}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38525  fontSize: "3em",
38526  color: "primary"
38527}, "Lighthouse CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38528  defaultValue: [],
38529  values: [[1, 10], [4, 5], [7, 7], [8, 8]]
38530}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38531  marginRight: "auto",
38532  marginLeft: "auto",
38533  width: "800px"
38534}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38534x"], {
38535  bg: "black",
38536  padding: "5px",
38537  display: "block"
38538}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38539  fontFamily: "monospace",
38540  fontSize: "1.2rem",
38541  margin: "0rem"
38542}, ".travis.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38543  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38544  highlightStart: value[0],
38545  highlightEnd: value[1],
38546  language: "yml",
38547  autoFillHeight: true
38548}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38549                                language: node_js
38550                                node_js:
38551                                  - 14
38552                                before_install:
38553                                  - npm install -g @lhci/[email protected]
38554                                script:
38555                                  - npm run build
38556                                  - lhci autorun --upload.target=temporary-public-storage
38557                                addons:
38558                                  chrome: stable
38559                            `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38560                        - The setup for running Lighthouse with Travis is pretty similar to the GitHub Action
38561                        - Create a yml file named .travis.yml at the root of your project
38562                        - (STEP)
38563                            - There's a "before_install" step to install the Lighthouse Continuous Integration CLI
38564                        - (STEP)
38565                            - And then just like the GitHub Action we'll run the build of our app
38566                        - (STEP)
38567                            - And then run Lighthouse
38568                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38569  fontSize: "h2"
38570}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38571  justifyContent: "center",
38572  alignItems: "center",
38573  paddingBottom: "75px"
38574}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38574x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38575  src: _assets_circle_logo_horizontal_white_png__WEBPACK_IMPORTED_MODULE_61__["default"],
38576  height: "75px"
38577})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38578  paddingLeft: "30px"
38579}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38580  fontSize: "3em",
38581  color: "primary"
38582}, "Lighthouse CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38583  defaultValue: [],
38584  values: [[1, 12], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12]]
38585}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38586  marginRight: "auto",
38587  marginLeft: "auto",
38588  width: "800px"
38589}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38589x"], {
38590  bg: "black",
38591  padding: "5px",
38592  display: "block"
38593}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38594  fontFamily: "monospace",
38595  fontSize: "1.2rem",
38596  margin: "0rem"
38597}, ".circleci/config.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38598  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38599  highlightStart: value[0],
38600  highlightEnd: value[1],
38601  language: "yml",
38602  autoFillHeight: true
38603}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38604                                version: 2.1
38605                                jobs:
38606                                  build:
38607                                    docker:
38608                                      - image: circleci/node:10.16-browsers
38609                                    working_directory: ~/your-project
38610                                    steps:
38611                                      - checkout
38612                                      - run: npm install
38613                                      - run: npm run build
38614                                      - run: sudo npm install -g @lhci/[email protected]
38615                                      - run: lhci autorun --upload.target=temporary-public-storage
38616                            `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38617                        - For CircleCI, again the setup is not terribly different
38618                        - Place a yml file named config.yml in a .circleci directory at the root of your project
38619                        - And the necessary steps are exactly the same
38620                        - (STEP)
38621                            - checkout the repo
38622                        - (STEP)
38623                            - install npm dependencies
38624                        - (STEP)
38625                            - build the app
38626                        - (STEP)
38627                            - Install Lighthouse
38628                        - (STEP)
38629                            - And run Lighthouse
38630                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38631  defaultValue: [],
38632  values: [0, 1]
38633}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38633x"], {
38634  marginLeft: "auto",
38635  marginRight: "auto",
38636  paddingTop: "20px"
38637}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38638  src: _assets_Lighthouse_GitHub_App_Install_png__WEBPACK_IMPORTED_MODULE_64__["default"],
38639  height: "650px",
38640  style: {
38641    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38642  }
38643})), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38644  marginLeft: "auto",
38645  marginRight: "auto",
38646  paddingTop: "75px"
38647}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38648  src: _assets_Lighthouse_Status_Check_png__WEBPACK_IMPORTED_MODULE_65__["default"],
38649  style: {
38650    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38651  }
38652})), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38652x"], {
38653  marginLeft: "auto",
38654  marginRight: "auto",
38655  paddingTop: "20px"
38656}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38657  src: _assets_Lighthouse_Report_png__WEBPACK_IMPORTED_MODULE_66__["default"],
38658  height: "650px",
38659  style: {
38660    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
38661  }
38662})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38663                        - If you're using GitHub and integrate your CI system with your repos there, there's a really cool way
38664                        to see the Lighthouse results in much nicer, more readable format than what you'd see in the CI log
38665                        - There is an official Lighthouse CI GitHub App that you'll need to install
38666                        - (STEP)
38667                            - once you've got it installed and wired up with your CI system, you should start to see Status Checks for Lighthouse on your PRs and/or commits,
38668                            whichever you have your CI tool triggered by
38669                            - A Status Check will show up for each URL you specified for Lighthouse to audit as well as the overall rating for that URL
38670                            - Since I only specified for Lighthouse to audit my login page we only have the one status check showing here
38671                            - Then by clicking the Details link on the Status Check
38672                        - (STEP)
38673                            - It will open the Lighthouse Report for that URL
38674                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38675  fontSize: "h2"
38676}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38677  justifyContent: "center",
38678  alignItems: "center"
38679}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38679x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38680  src: _assets_Jenkins_logo_png__WEBPACK_IMPORTED_MODULE_58__["default"],
38681  height: "75px"
38682})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38683  paddingLeft: "30px"
38684}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38685  fontSize: "3em",
38686  color: "primary"
38687}, "Lighthouse CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38688  defaultValue: [],
38689  values: [0, 1, 2]
38690}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38691  marginLeft: "auto",
38692  marginRight: "auto",
38693  paddingTop: "10px"
38694}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38695  src: _assets_Jenkins_Lighthouse_Plugin_png__WEBPACK_IMPORTED_MODULE_67__["default"],
38696  height: "500px",
38697  style: {
38698    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38699  }
38700})), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38700x"], {
38701  paddingTop: "75px",
38702  marginLeft: "20px",
38703  marginRight: "20px"
38704}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38705  bg: "black",
38706  padding: "5px",
38707  display: "block"
38708}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38709  fontFamily: "monospace",
38710  fontSize: "1.2rem",
38711  margin: "0rem"
38712}, "machine-setup.sh")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38713  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38714  language: "shell",
38715  fontSize: "15",
38716  autoFillHeight: true
38717}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38718                                        #!/bin/bash
38719
38720                                        set -euxo pipefail
38721
38722                                        # Add Chrome's apt-key
38723                                        echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee -a /etc/apt/sources.list.d/google.list
38724                                        wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
38725
38726                                        # Add Node's apt-key
38727                                        curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
38728
38729                                        # Install NodeJS and Google Chrome
38730                                        sudo apt-get update
38731                                        sudo apt-get install -y nodejs google-chrome-stable
38732                                    `))), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38732x"], {
38733  paddingTop: "75px",
38734  marginLeft: "20px",
38735  marginRight: "20px"
38736}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38737  bg: "black",
38738  padding: "5px",
38739  display: "block"
38740}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38741  fontFamily: "monospace",
38742  fontSize: "1.2rem",
38743  margin: "0rem"
38744}, "job.sh")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38745  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38746  language: "shell",
38747  fontSize: "15",
38748  autoFillHeight: true
38749}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38750                                        #!/bin/bash
38751
38752                                        set -euxo pipefail
38753
38754                                        npm install
38755                                        npm run build
38756
38757                                        export CHROME_PATH=$(which google-chrome-stable)
38758                                        export LHCI_BUILD_CONTEXT__EXTERNAL_BUILD_URL="$BUILD_URL"
38759
38760                                        npm install -g @lhci/[email protected]
38761                                        lhci autorun
38762                                    `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38763                        - If you're using Jenkins as your CI Tool of choice don't feel left out as it also has the ability to use Lighthouse
38764                        - (STEP)
38765                            - there is a Plugin available through the Plugins Manager in Jenkins
38766                            - Or you can write your own build script to use the Lighthouse CI tool similarly to how the other CI tools I've
38767                            demonstrated so far
38768                        - (STEP)
38769                            - Some setup may have to be done if you haven't already configured your build machine to support Node and Chrome
38770                        - (STEP)
38771                            - And then your build script will run those say key steps that the others have:
38772                                - install your npm packages
38773                                - build your app
38774                                - install the Lighthouse Continuous Integration CLI
38775                                - and then run it
38776                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38777  defaultValue: [],
38778  values: [0, 1]
38779}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38780  fontSize: "h2"
38781}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38782  fontSize: "3em",
38783  color: "primary"
38784}, "The Lighthouse CI Server")), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38784x"], {
38785  marginLeft: "auto",
38786  marginRight: "auto",
38787  paddingTop: "20px"
38788}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38789  src: "https://user-images.githubusercontent.com/2301202/79480502-c8af9a80-7fd3-11ea-8087-52f6c8ba6f03.png",
38790  height: "650px",
38791  style: {
38792    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38793  }
38794})), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38795  marginLeft: "auto",
38796  marginRight: "auto",
38797  paddingTop: "20px"
38798}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38799  src: "https://user-images.githubusercontent.com/39191/68522269-7917b680-025e-11ea-8d96-2774c0a0b04c.png",
38800  height: "650px",
38801  style: {
38802    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)'
38803  }
38804})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38805                        - I've only really scratched the surface here on using Lighthouse with your CI system.  If you dig into the docs there are a ton of options
38806                        for further configuration and there are some really powerful reporting options.
38807                        - You can even set up your own Lighthouse CI Server.
38808                        - (STEP)
38809                            - The Lighthouse CI Server is an open source node server that you can host in a cloud provider or on your local machine,
38810                            - essentially as a personal storage and visualization center for the history of your Lighthouse reports for your project.
38811                            - Where the methods I've shown you so far will just show you the report that was just generated in a temporary storage location,
38812                            they don't provide the ability to persist or compare a history
38813                            - The Lighthouse CI Server though gives you the ability to store all of the reports and view data points about that history
38814                            - You can see how your score has varied over a timeline
38815                        - (STEP)
38816                            - You can generate graphs showing improvements and regressions of scores or metric performance.
38817                            - And you can view diffs between any two Lighthouse reports to find the root cause of a regression.
38818                        - There's a lot of exciting and powerful stuff here to explore!
38819                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38820  fontSize: "h2"
38821}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38822  fontSize: "3em",
38823  color: "primary"
38824}, "Pa11y CI"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38825  fontSize: "2em"
38826}, "Configure"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38827  defaultValue: [],
38828  values: [// install
38829  0, // package.json
38830  [14, 14], // .pa11y.ci
38831  [1, 8], [2, 4], [5, 7]]
38832}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38832x"], {
38833  marginRight: "auto",
38834  marginLeft: "auto",
38835  paddingTop: "75px",
38836  width: "650px"
38837}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38838  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38839  language: "shell",
38840  autoFillHeight: true
38841}, `
38842                                        # npm
38843                                        npm install pa11y-ci --save-dev
38844
38845                                        # yarn
38846                                        yarn add pa11y-ci --dev
38847                                    `)), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38848  marginRight: "auto",
38849  marginLeft: "auto",
38850  paddingTop: "50px"
38851}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38852  bg: "black",
38853  padding: "5px",
38854  display: "block"
38855}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38856  fontFamily: "monospace",
38857  fontSize: "1.2rem",
38858  margin: "0rem"
38859}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38860  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38861  highlightStart: value[0],
38862  highlightEnd: value[1],
38863  fontSize: "15px",
38864  language: "json",
38865  autoFillHeight: true
38866}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38867                                        {
38868                                            "scripts": {
38869                                                "start": "react-scripts start",
38870                                                "build": "react-scripts build",
38871                                                "serve": "serve -s build",
38872                                                "serve:prod": "NODE_ENV=production npm run serve",
38873                                                "serve:lhci": "npm run serve:prod",
38874                                                "lint": "eslint src",
38875                                                "pretest": "npm run lint",
38876                                                "test-only": "react-scripts test",
38877                                                "test": "npm run test-only",
38878                                                "cypress:open": "cypress open",
38879                                                "lighthouse": "lhci autorun",
38880                                                "pa11y": "pa11y-ci",
38881                                                "eject": "react-scripts eject"
38882                                            },
38883                                        }
38884                                    `))), [2, 3, 4].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38884x"], {
38885  marginRight: "auto",
38886  marginLeft: "auto",
38887  paddingTop: "75px",
38888  width: "600px"
38889}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38890  bg: "black",
38891  padding: "5px",
38892  display: "block"
38893}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38894  fontFamily: "monospace",
38895  fontSize: "1.2rem",
38896  margin: "0rem"
38897}, ".pa11yci")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38898  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38899  highlightStart: value[0],
38900  highlightEnd: value[1],
38901  language: "json",
38902  autoFillHeight: true
38903}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38904                                        {
38905                                            "urls": [
38906                                                "http://localhost:5000/login"
38907                                            ],
38908                                            "runners": [
38909                                                "axe"
38910                                            ]
38911                                        }
38912                                    `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38913                        - Now let's talk about the Pa11y CI tool
38914                        - Some benefits of using Pa11y over Lighthouse are that it's:
38915                            - easier to get set up and running faster
38916                            - the output results are easier to read
38917                            - and it offers the flexibility to specify the test runner
38918                                - while it uses HTML CodeSniffer by default you can also configure it
38919                                to use aXe or both
38920                        - Let's go over the steps to getting it set up
38921                        - (STEP)
38922                            - First you'll need to install the pa11y-ci package in your project
38923                        - (STEP)
38924                            - Then you'll need to add an npm script for running pa11y-ci that
38925                            you'll use from your CI tool
38926                        - (STEP)
38927                            - Then you'll need to create a .pa11yci file at the root of your project
38928                            - Here's a pretty basic example though there are a lot of things you can
38929                            configure if desired
38930                        - (STEP)
38931                            - It takes an array of URLs to test
38932                            - Just like in the Lighthouse examples I'm just specifying my Login Page to start
38933                        - (STEP)
38934                            - And then here in the runners array you can specify whether you want to use HTML CodeSniffer,
38935                            aXe-core, or both
38936                            - Here I've chosen to just use aXe
38937                        - Now let's set this up with some of the CI systems
38938                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38939  fontSize: "h2"
38940}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
38941  justifyContent: "center",
38942  alignItems: "center",
38943  paddingBottom: "10px"
38944}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38944x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
38945  src: _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__["default"],
38946  height: "75px"
38947})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38948  paddingLeft: "30px"
38949}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
38950  fontSize: "3em",
38951  color: "primary"
38952}, "Pa11y CI Action"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
38953  defaultValue: [],
38954  values: [[18, 18], [19, 19]]
38955}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
38956  marginRight: "auto",
38957  marginLeft: "auto",
38958  width: "800px",
38959  paddingTop: "30px"
38960}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38960x"], {
38961  bg: "black",
38962  padding: "5px",
38963  display: "block"
38964}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
38965  fontFamily: "monospace",
38966  fontSize: "1.2rem",
38967  margin: "0rem"
38968}, ".github/workflows/pa11y.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
38969  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
38970  highlightStart: value[0],
38971  highlightEnd: value[1],
38972  fontSize: "13",
38973  language: "yml",
38974  autoFillHeight: true
38975}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
38976                                name: Pa11y
38977
38978                                on:
38979                                  push:
38980                                    branches: [ master ]
38981                                  pull_request:
38982                                    branches: [ master ]
38983
38984                                jobs:
38985                                  pa11y:
38986                                    runs-on: ubuntu-latest
38987                                    name: Audit with Lighthouse
38988                                    steps:
38989                                      - uses: actions/checkout@v2
38990                                      - uses: actions/setup-node@v1
38991                                      - run: npm ci
38992                                      - run: npm run build
38993                                      - run: npm run serve:prod & sleep 5
38994                                      - run: npm run pa11y
38995                            `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
38996                        - So if you want to use Pa11y CI with GitHub Actions
38997                        - you'll need to create a .yml file in the .github/workflow directory at the root of your project
38998                        - The file contents will be very similar to the examples we've already seen
38999                        - The main differences are that we'll
39000                        - (STEP)
39001                            - specifically running a command to start a server serving up our built application
39002                            - and wait 5 seconds to give it time to start up and accept connections
39003                        - (STEP)
39004                            - and then we're running that command I added to my package.json scripts for running pa11y-ci
39005                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39006  fontSize: "h2"
39007}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
39008  justifyContent: "center",
39009  alignItems: "center",
39010  paddingBottom: "75px"
39011}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39011x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
39012  src: _assets_travisci_logo_png__WEBPACK_IMPORTED_MODULE_60__["default"],
39013  height: "75px"
39014})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39015  paddingLeft: "30px"
39016}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39017  fontSize: "3em",
39018  color: "primary"
39019}, "pa11y-ci"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
39020  defaultValue: [],
39021  values: [[5, 5], [6, 6]]
39022}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39023  marginRight: "auto",
39024  marginLeft: "auto",
39025  width: "800px"
39026}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39026x"], {
39027  bg: "black",
39028  padding: "5px",
39029  display: "block"
39030}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39031  fontFamily: "monospace",
39032  fontSize: "1.2rem",
39033  margin: "0rem"
39034}, ".travis.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
39035  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
39036  highlightStart: value[0],
39037  highlightEnd: value[1],
39038  language: "yml",
39039  autoFillHeight: true
39040}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
39041                                language: node_js
39042                                node_js:
39043                                  - 14
39044                                script:
39045                                  - npm run build
39046                                  - npm run serve:prod & sleep 5; npm run pa11y;
39047                            `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
39048                        - Here's an example of the yml file needed to run pa11y with Travis CI
39049                        - It's pretty simple and the key steps are the same
39050                        - (STEP)
39051                            - again we're just building our project
39052                        - (STEP)
39053                            - and then serving our app and running pa11y-ci
39054                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39055  fontSize: "h2"
39056}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
39057  justifyContent: "center",
39058  alignItems: "center",
39059  paddingBottom: "10px"
39060}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39060x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
39061  src: _assets_circle_logo_horizontal_white_png__WEBPACK_IMPORTED_MODULE_61__["default"],
39062  height: "75px"
39063})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39064  paddingLeft: "30px",
39065  paddingBottom: "15px"
39066}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39067  fontSize: "3em",
39068  color: "primary"
39069}, "pa11yci Orb"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
39070  defaultValue: [],
39071  values: [[4, 12], [14, 15], [21, 23]]
39072}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39073  marginRight: "auto",
39074  marginLeft: "auto",
39075  width: "600px"
39076}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39076x"], {
39077  bg: "black",
39078  padding: "5px",
39079  display: "block"
39080}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39081  fontFamily: "monospace",
39082  fontSize: "1.2rem",
39083  margin: "0rem"
39084}, ".circleci/config.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
39085  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
39086  highlightStart: value[0],
39087  highlightEnd: value[1],
39088  fontSize: "13",
39089  language: "yml",
39090  autoFillHeight: true
39091}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
39092                                version: 2.1
39093
39094                                jobs:
39095                                  build:
39096                                    docker:
39097                                      - image: circleci/node:latest
39098                                    working_directory: ~/your-project
39099                                    steps:
39100                                      - checkout
39101                                      - run: npm install
39102                                      - run: npm run build
39103                                      - run: npm run serve:prod
39104
39105                                orbs:
39106                                  pa11yci: nebulab/pa11yci
39107
39108                                workflows:
39109                                  a11y-audit:
39110                                    jobs:
39111                                      - build
39112                                      - pa11yci/a11y-audit:
39113                                        requires:
39114                                          - build
39115                            `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
39116                        - To use pa11y with Circle CI there is a pa11yci Orb available
39117                        - (STEP)
39118                            - So we've got a build job that does the build and serving of our app
39119                        - (STEP)
39120                            -And we've got the pa11yci orb registered
39121                        - (STEP)
39122                            - and finally we define the workflow where the pa11yci job will run after the build job
39123                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39123x"], {
39124  marginLeft: "auto",
39125  marginRight: "auto",
39126  paddingTop: "50px"
39127}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
39128  src: _assets_pa11y_travis_results_png__WEBPACK_IMPORTED_MODULE_68__["default"],
39129  style: {
39130    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
39131  }
39132})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
39133                        - And here is what the results of running pa11y-ci look like in our CI log
39134                        - It lists 3 errors found
39135                        - details about what was wrong with each
39136                        - and the specific element found with the error
39137                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39138  fontSize: "h2"
39139}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
39140  justifyContent: "center",
39141  alignItems: "center"
39142}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39142x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
39143  src: _assets_netlify_logo_png__WEBPACK_IMPORTED_MODULE_59__["default"],
39144  height: "75px"
39145})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39146  paddingLeft: "30px"
39147}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39148  fontSize: "3em",
39149  color: "primary"
39150}, "netlify-plugin-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], {
39151  defaultValue: [],
39152  values: [// install
39153  0, // netlify.toml
39154  [1, 23], [1, 2], [8, 12], [15, 15], [17, 17]]
39155}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39155x"], {
39156  paddingTop: "75px"
39157}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39158  fontSize: "2em"
39159}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39160  marginRight: "auto",
39161  marginLeft: "auto",
39162  width: "650px"
39163}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
39164  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
39165  language: "shell",
39166  autoFillHeight: true
39167}, `
39168                                            # npm
39169                                            npm install netlify-plugin-a11y
39170
39171                                            # yarn
39172                                            yarn add netlify-plugin-a11y
39173                                        `))), [1, 2, 3, 4, 5].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39173x"], {
39174  paddingTop: "50px"
39175}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39176  fontSize: "2em"
39177}, "Configure"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39178  marginRight: "auto",
39179  marginLeft: "auto",
39180  width: "1100px"
39181}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39182  bg: "black",
39183  padding: "5px",
39184  display: "block"
39185}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39186  fontFamily: "monospace",
39187  fontSize: "1.2rem",
39188  margin: "0rem"
39189}, "netlify.toml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], {
39190  theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"],
39191  highlightStart: value[0],
39192  highlightEnd: value[1],
39193  fontSize: "15px",
39194  language: "toml",
39195  autoFillHeight: true
39196}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(`
39197                                            [[plugins]]
39198                                            package = "netlify-plugin-a11y"
39199
39200                                            # all inputs are optional, we just show you the defaults below
39201                                            [plugins.inputs]
39202
39203                                            # you can give an array of directories or paths to html files, that you want to run a11y checks on
39204                                            checkPaths = [
39205                                                '/blog',
39206                                                '/about.html',
39207                                                '/super/specific/route/index.html',
39208                                            ]
39209
39210                                            # # optional config
39211                                            # ignoreDirectories = ['/admin']  # explicitly ignore these directories
39212
39213                                            # resultMode = "warn" # is "error" by default
39214                                        `)))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
39215                        - So just like Jenkins was a bit of a different animal when it came to using Lighthouse, we have
39216                        Netlify Build which deviates a little from how the other CI tools run Pa11y
39217                        - It's got it's own plugin available from Netlify
39218                        - To set it up
39219                        - (STEP)
39220                            - first install the npm package for the plugin
39221                        - (STEP)
39222                            - next you'll need to add a netlify.toml file to the root of your project
39223                            - here is an example file configured to use the plugin
39224                        - (STEP)
39225                            - Under plugins is specified the a11y plugin
39226                        - (STEP)
39227                            - The checkPaths is where you specify any file names or directories that should be tested with pa11y
39228                        - (STEP)
39229                            - You can optionally specify any directories that should be ignore by pa11y
39230                        - (STEP)
39231                            - And finally you can set the results of the audit to produce warnings rather than errors
39232                            which will fail the build
39233                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39233x"], {
39234  marginLeft: "auto",
39235  marginRight: "auto",
39236  paddingTop: "20px"
39237}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], {
39238  src: "https://user-images.githubusercontent.com/6764957/77147207-226b8600-6a63-11ea-91b2-2de449ef6682.png",
39239  height: "650px",
39240  style: {
39241    boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)'
39242  }
39243})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
39244                        - And here is an example of what the results look like in the build log when the mode is set to error
39245                        - You can see that the Build is indeed failed
39246                        - it points out that there were 4 accessibility issues found
39247                        - It lists a description of each error and the element that contains the error
39248                    `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39249  fontSize: "h2"
39250}, "Resources"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39250x"], {
39251  paddingBottom: "100px",
39252  marginTop: "-15px"
39253}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39254  fontSize: "h3",
39255  textAlign: "center"
39256}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39257  href: "https://erindoyle.dev/talks"
39258}, "https://erindoyle.dev/talks"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], {
39259  gridTemplateColumns: "1fr 1fr 1fr",
39260  height: "150px"
39261}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39262  paddingLeft: "100px",
39263  marginLeft: "auto",
39264  marginRight: "auto"
39265}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39266  fontSize: "2em"
39267}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39268  color: "secondary",
39269  fontSize: "1em"
39270}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39271  href: "https://github.com/jsx-eslint/eslint-plugin-jsx-a11y"
39272}, "eslint-plugin-jsx-a11y"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39272x"], {
39273  padding: "0 100px",
39274  marginLeft: "auto",
39275  marginRight: "auto"
39276}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39277  fontSize: "2em"
39278}, "Runtime"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39279  color: "secondary",
39280  fontSize: "1em"
39281}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39282  href: "https://github.com/dequelabs/react-axe"
39283}, "react-axe"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39284  paddingRight: "100px",
39285  marginLeft: "auto",
39286  marginRight: "auto"
39287}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39288  fontSize: "2em"
39289}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39290  color: "secondary",
39291  fontSize: "1em"
39292}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39293  href: "https://github.com/nickcolley/jest-axe"
39294}, "jest-axe")))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], {
39295  gridTemplateColumns: "1fr 1fr",
39296  height: "300px"
39297}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39297x"], {
39298  marginLeft: "auto",
39299  marginRight: "auto",
39300  paddingLeft: "750px5px"
39301}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39302  fontSize: "2em"
39303}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39304  color: "secondary",
39305  fontSize: "1em"
39306}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39307  href: "https://github.com/dequelabs/axe-webdriverjs"
39308}, "axe-webdriverjs"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39309  color: "secondary",
39310  fontSize: "1em"
39311}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39312  href: "https://github.com/avanslaars/cypress-axe"
39313}, "cypress-axe"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39313x"], {
39314  marginLeft: "auto",
39315  marginRight: "auto",
39316  paddingRight: "100px"
39317}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39318  fontSize: "2em"
39319}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], {
39320  flexDirection: "row",
39321  justifyContents: "space-evenly",
39322  alignItems: "start"
39323}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], {
39324  padding: "20px"
39325}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39326  fontSize: "1.5em"
39327}, "Lighthouse CI"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39328  color: "secondary",
39329  fontSize: "1em"
39330}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39331  href: "https://github.com/GoogleChrome/lighthouse-ci"
39332}, "Lighthouse CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39333  color: "secondary",
39334  fontSize: "1em"
39335}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39336  href: "https://github.com/GoogleChrome/lighthouse-ci/blob/a5220a06fc07b4d8c6245abf805424d152016994/docs/getting-started.md#configure-your-ci-provider"
39337}, "GitHub Action"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39338  color: "secondary",
39339  fontSize: "1em"
39340}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39341  href: "https://github.com/hchiam/learning-lighthouse-ci"
39342}, "Travis CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39343  color: "secondary",
39344  fontSize: "1em"
39345}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39346  href: "https://github.com/GoogleChrome/lighthouse-ci/blob/a5220a06fc07b4d8c6245abf805424d152016994/docs/getting-started.md#configure-your-ci-provider"
39347}, "Circle CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39348  color: "secondary",
39349  fontSize: "1em"
39350}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39351  href: "https://plugins.jenkins.io/lighthouse-report/"
39352}, "Jenkins"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39352x"], {
39353  padding: "20px"
39354}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], {
39355  fontSize: "1.5em"
39356}, "Pa11y CI"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39357  color: "secondary",
39358  fontSize: "1em"
39359}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39360  href: "https://github.com/pa11y/pa11y-ci"
39361}, "Pa11y CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39362  color: "secondary",
39363  fontSize: "1em"
39364}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39365  href: "https://cruft.io/posts/automated-accessibility-testing-node-travis-ci-pa11y/"
39366}, "Travis CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39367  color: "secondary",
39368  fontSize: "1em"
39369}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39370  href: "https://github.com/nebulab/circleci-orbs-pa11yci"
39371}, "Circle CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], {
39372  color: "secondary",
39373  fontSize: "1em"
39374}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], {
39375  href: "https://github.com/netlify-labs/netlify-plugin-a11y"
39376}, "Netlify")))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, `
39377                        - And that wraps up all of the awesome tools I wanted to share with you today!
39378                        - I'll end here with a list of resource links to all of the tools I talked about so you
39379                        can go check them out and add them to your Dev workflow!
39380                        - You can get to these links where I've posted the slides at:
39381                            - erindoyle.dev/talks and clicking on the link to React Global Summit 2020
39382                    `))));
39383
39384react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Presentation, null), document.getElementById('root'));
39385
39386/***/ }),
39387
39388/***/ "./src/template.js":
39389/*!*************************!*\
39390  !*** ./src/template.js ***!
39391  \*************************/
39392/*! exports provided: default */
39393/***/ (function(module, __webpack_exports__, __webpack_require__) {
39394
39395"use strict";
39396__webpack_require__.r(__webpack_exports__);
39397/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
39398/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
39399/* harmony import */ var spectacle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! spectacle */ "./node_modules/spectacle/es/index.js");
39400
39401 // SPECTACLE_CLI_TEMPLATE_START
39402
39403const template = ({
39404  slideNumber,
39405  numberOfSlides
39406}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["FlexBox"], {
39407  justifyContent: "flex-start",
39408  position: "absolute",
39409  bottom: 0,
39410  width: 1,
39411  backgroundColor: "tertiary"
39412}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["Box"], {
39413  marginLeft: 3,
39414  marginRight: 3
39415}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["FullScreen"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["Box"], {
39416  marginLeft: "auto",
39417  marginRight: "auto",
39418  marginBottom: 3
39419}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["Progress"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["Text"], {
39420  fontSize: "18px"
39421}, "Slide ", slideNumber, " of ", numberOfSlides))); // SPECTACLE_CLI_TEMPLATE_END
39422
39423
39424/* harmony default export */ __webpack_exports__["default"] = (template);
39425
39426/***/ }),
39427
39428/***/ "./src/theme.js":
39429/*!**********************!*\
39430  !*** ./src/theme.js ***!
39431  \**********************/
39432/*! exports provided: default */
39433/***/ (function(module, __webpack_exports__, __webpack_require__) {
39434
39435"use strict";
39436__webpack_require__.r(__webpack_exports__);
39437// SPECTACLE_CLI_THEME_START
39438const theme = {
39439  fonts: {
39440    header: "'Source Code Pro', monospace",
39441    text: "'Raleway', sans-serif"
39442  },
39443  colors: {
39444    primary: '#FF0080',
39445    secondary: '#fff',
39446    tertiary: '#0E2133',
39447    quaternary: '#FF0080'
39448  },
39449  fontSizes: {
39450    header: '64px',
39451    paragraph: '28px',
39452    text: '28px'
39453  },
39454  space: [0, 4, 8, 16, 32, 64],
39455  size: {
39456    maxCodePaneHeight: 450
39457  }
39458}; // SPECTACLE_CLI_THEME_END
39459
39460/* harmony default export */ __webpack_exports__["default"] = (theme);
39461
39462/***/ })
39462
39463
39464/******/ });
39465//# sourceMappingURL=deck.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.